A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 任亚俊 中级黑马   /  2013-12-19 23:23  /  976 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public class MainActivity extends Activity {

  2.         /**
  3.          * 实验思路: 目标:每个10秒修改ImageView控件的图片,实现图片的动态切换。
  4.          * 思路:利用Handler消息传递机制,在主线程中创建一个Handler对象,在子线程中每隔10秒用Handler对象向主线程发送消息。
  5.          */
  6.         int imageSrc[] = { R.drawable.img1, R.drawable.img2,
  7.                         R.drawable.img3 };
  8.         int resId = 0;
  9.         @Override
  10.         protected void onCreate(Bundle savedInstanceState) {
  11.                 super.onCreate(savedInstanceState);
  12.                 setContentView(R.layout.activity_main);
  13.                 final ImageView iv = (ImageView) findViewById(R.id.imageView);

  14.                 final Handler myHandler = new Handler() {
  15.                        
  16.                         @Override
  17.                         public void handleMessage(Message msg) {
  18.                                 super.handleMessage(msg);

  19.                                 // 忘记了msg.what这个语句,值为1233代表什么呢,还是自己随便取的
  20.                                 if (msg.what == 0x1233) {
  21.                                         // 有点难,逻辑思维,修改图片,循环加1
  22.                                         // 每次加1,但不能超过length,
  23.                                         //iv.setImageResource(resId);
  24.                                         //resId = resId++ % imageSrc.length;
  25.                                         iv.setImageResource(imageSrc[resId++
  26.                                                                                            % imageSrc.length]);
  27.                                         Log.i("my.android", ""+resId);
  28.                                 }
  29.                         }
  30.                 };

  31.                 new Timer().schedule(new TimerTask() {

  32.                         @Override
  33.                         public void run() {
  34.                                 myHandler.sendEmptyMessage(0x1233);
  35.                                 Log.i("my.android", "执行run方法");
  36.                         }
  37.                 }, 0, 1000);
  38.         }

  39. }
复制代码
//iv.setImageResource(resId);
//resId = resId++ % imageSrc.length;
iv.setImageResource(imageSrc[resId++
% imageSrc.length]);
Log.i("my.android", ""+resId);
我用注释的的那两句话,log结果,resId每次都是0,而在没注释的那一句,却正常,在循环变化,这是为什么呢,我觉得一样啊?

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

2 个回复

倒序浏览
学习学习!
回复 使用道具 举报
本帖最后由 小骗子 于 2013-12-20 12:30 编辑

resId = resId++ % imageSrc.length;  //resId做了重新赋值
未注释的情况
resId++就是resId++

a++和
a=a++ -1
循环一次后  两次a的值能相同吗
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马