从网上获取图片实现无线轮播viewpager结合handler

来源:互联网 发布:sql创建视图 编辑:程序博客网 时间:2024/05/16 04:21
public class MainActivity extends AppCompatActivity {
    private ViewPager viewPager;
    private List<String> list;
    private LinearLayout linearLayout;
    //存放小圆点控件的集合
    private List<ImageView> images;
    private Handler myHandler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            //获取当前正在显示的页面
            int index=viewPager.getCurrentItem();
            viewPager.setCurrentItem(index+1);
            //改变小圆点
            setSelectedPoint((index+1)%list.size());
            //延迟发送消息
            sendEmptyMessageDelayed(1,2000);
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        viewPager = (ViewPager) findViewById(R.id.vp);
        linearLayout = (LinearLayout) findViewById(R.id.lin_bottom);
        //数据.....装的是path路径
        list = new ArrayList<>();
        list.add(图片的地址);
        list.add(图片的地址);
        list.add(图片的地址);
        //初始化小圆点
        initDoc();
        //设置适配器
        viewPager.setAdapter(new ImagePager(this,list));
        //设置当前要显示的页面
        viewPager.setCurrentItem(list.size()*10);
        //实现自动播放
        myHandler.sendEmptyMessageDelayed(1,2000);

    }
    /**
     * 改变小圆点图片
     * @param index  页面的下标
     */
    public  void setSelectedPoint(int index){
        for(int i=0;i<images.size();i++){
            if(i==index){
                images.get(i).setImageResource(R.drawable.point_selected);
            }else{
                images.get(i).setImageResource(R.drawable.point_un_selected);
            }
        }
    }
    /**
     * 初始化小圆点
     * 动态添加
     */
    private void initDoc() {
        images=new ArrayList<>();
        for(int i=0;i<list.size();i++){
            ImageView imgPoint=new ImageView(this);
            //设置图片的缩放模式
            imgPoint.setScaleType(ImageView.ScaleType.FIT_XY);
            //设置要显示的图片
            if(i==0){
                //红色的点
                imgPoint.setImageResource(R.drawable.point_selected);
            }else{
                imgPoint.setImageResource(R.drawable.point_un_selected);
            }
            //设置宽度与高度
            LinearLayout.LayoutParams  params=new LinearLayout.LayoutParams(20,20);
            //设置间距
            params.setMargins(0,0,30,0);
            //添加到底部容器中
            linearLayout.addView(imgPoint,params);
            //添加到集合中
            images.add(imgPoint);
        }
    }
}
//==================适配器========================//
public class ImagePager extends PagerAdapter {
    Context context;
    List<String> list;//网络图片地址

    public ImagePager(Context context, List<String> list) {
        this.context = context;
        this.list = list;
    }
    //返回页面的数量
    @Override
    public int getCount() {
        return Integer.MAX_VALUE;
    }
    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view==object;
    }
    //0~getCount返回的值-1
    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        //返回当前显示的视图
        ImageView imageView = new ImageView(context);
        imageView.setScaleType(ImageView.ScaleType.FIT_XY);
        //加载网络的图片list.get(position%list.size())
        ImageLoader.getInstance().displayImage(list.get(position%list.size()),imageView,ImageloaderUtil.getImageOptions());

        //添加到容器
        container.addView(imageView);
        return imageView;
    }
    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View) object);
    }
}

原创粉丝点击