Android 使用imageview做一个幻灯片

这是从本地获取图片的方法,在Android4.0之后,增加了一些新特性,也增加了一些限制。其中有一个限制就是不能在主线程中访问网络,必须另开一条线程访问。但是这里又存在另外一个问题,在子线程中,无法直接操作UI控件的属性。

话不多说,直接上代码

public class NewThread6 extends Activity {
    private ImageView image1;
    //定义一个int数组来存放图片,在R文件中图片是以int形式存在的
    int[] images = new int[] { R.drawable.ic_launcher, 
            R.drawable.actionbar_add_icon, 
            R.drawable.actionbar_icon,
            R.drawable.actionbar_more_icon,
            R.drawable.actionbar_search_icon, };
    //定义一图片计数器
    int currentImg = 0;
    //定义一个handler来进行隔时间操作
    private Handler handler = new Handler();
//新建一个runnable对象
    private Runnable myRunnable = new Runnable() {
        public void run() {
       //每隔1秒切换一次
            handler.postDelayed(this, 1000);

            if (currentImg >= 4) {
                currentImg = -1;
            }
            // 改变ImageView里显示的图片
            image1.setImageResource(images[++currentImg]);

        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        image1 = (ImageView) findViewById(R.id.image1);
         //初始化时显示第一张图片  
        image1.setImageResource(images[0]); 
        Button btn = (Button) findViewById(R.id.btn1);
        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                //将请求提交给runnable
                handler.post(myRunnable);

            }
        });
    }


 

你可能感兴趣的:(Android,随笔)