网络无限轮播图

首先执行步骤如下

1.viewPager需要无限轮播
2.小圆点的个数
3.imageLoader加载图片
4.handler自动轮播
一.在布局文件上
<android.support.v4.view.ViewPager android:layout_height="200dp" android:layout_width="match_parent" android:id="@+id/view_pager"> </android.support.v4.view.ViewPager>

<LinearLayout android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/linear_layout" android:orientation="horizontal" android:layout_marginBottom="20dp" android:layout_centerHorizontal="true" android:layout_alignBottom="@+id/view_pager"> </LinearLayout>

main主函数
public class MainActivity extends AppCompatActivity {

    private ViewPager viewPager;
    private List<String> list;

    private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            if (msg.what == 0){
                int currentItem = viewPager.getCurrentItem();
                viewPager.setCurrentItem(currentItem+1);

                handler.sendEmptyMessageDelayed(0,2000);
            }
        }
    };
    private LinearLayout linearLayout;
    private List<ImageView> images;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        viewPager = (ViewPager) findViewById(R.id.view_pager);
        linearLayout = (LinearLayout) findViewById(R.id.linear_layout);

        //数据.....装的是path路径
        list = new ArrayList<>();
       在list里面进行添加图片路径
        //初始化小圆点
        initDoc();

        //设置适配器
        ImagePager imagePager = new ImagePager(MainActivity.this, list,handler);
        //
        viewPager.setAdapter(imagePager);

        //设置ViewPager初始展示的位置
        viewPager.setCurrentItem(list.size()*10000);


        //发送延时消息
        handler.sendEmptyMessageDelayed(0,2000);


        //viewPager页面改变的监听事件
        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                //如果选中了这一页,,,当前小圆点红色,,,否则绿色
                for (int i = 0;i<images.size();i++){
                    if (i== position%images.size()){
                        images.get(i).setImageResource(R.drawable.doc_select);
                    }else {
                        images.get(i).setImageResource(R.drawable.doc_select_no);
                    }
                }
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
    }

    /**
     * 初始化小圆点
     */
    private void initDoc() {
        //首先需要一个集合记录这些小圆点的图片,,,,当页面切换的时候,可以从集合中取出imageView进行显示图片的设置
        images = new ArrayList<>();
        linearLayout.removeAllViews();//清空/移除所有的view

        for (int i = 0;i<list.size();i++){
            ImageView imageView = new ImageView(MainActivity.this);

            if (i==0){//显示第一页,,,红的
                imageView.setImageResource(R.drawable.doc_select);
            }else {//绿的
                imageView.setImageResource(R.drawable.doc_select_no);
            }

            //添加到集合
            images.add(imageView);

            //加入到线性布局中显示
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);

            params.setMargins(5,0,5,0);

            linearLayout.addView(imageView,params);

        }


    }
//适配器创建
public class ImagePager extends PagerAdapter {
Context context;
List<String> list;
Handler handler;

public ImagePager(Context context, List<String> list, Handler handler) {
    this.context = context;
    this.list = list;
    this.handler = handler;

    //初始化
    //ImageLoader.getInstance().init(ImageLoaderConfiguration.createDefault(context));
}

@Override
public int getCount() {
    return Integer.MAX_VALUE;
}

@Override
public boolean isViewFromObject(View view, Object object) {
    return view==object;
}

@Override
public Object instantiateItem(ViewGroup container, int position) {
    //返回当前显示的视图
    ImageView imageView = new ImageView(context);
    imageView.setScaleType(ImageView.ScaleType.FIT_XY);

    //加载网络的图片
    ImageLoader.getInstance().displayImage(list.get(position%list.size()),imageView);

    /*imageView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Log.i("----","点击事件执行了");
        }
    });*/

    //imageView触摸的监听事件
    imageView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            boolean isTiaoZhuan = true;

            switch (motionEvent.getAction()){//获取动作
                case MotionEvent.ACTION_DOWN://按下
                    Log.i("--","ACTION_DOWN");
                    handler.removeCallbacksAndMessages(null);
                    break;
                case MotionEvent.ACTION_MOVE://移动
                    Log.i("--","ACTION_MOVE");
                    isTiaoZhuan = false;
                    handler.removeCallbacksAndMessages(null);

                    break;
                case MotionEvent.ACTION_CANCEL://取消
                    Log.i("--","ACTION_CANCEL");
                    isTiaoZhuan = false;
                    handler.sendEmptyMessageDelayed(0,2000);
                    break;
                case MotionEvent.ACTION_UP://抬起
                    Log.i("--","ACTION_UP");
                    if (isTiaoZhuan){
                        Toast.makeText(context,"跳转页面",Toast.LENGTH_SHORT).show();

                        /*Intent intent = new Intent();

                        context.startActivity();*/
                    }
                    handler.sendEmptyMessageDelayed(0,2000);

                    break;
            }

            //自己处理触摸事件....如果当前位置返回了true,,,点击事件将不会执行,,,表示动作自己处理,不会传递
            return true;
        }
    });

    //添加到容器
    container.addView(imageView);

    return imageView;
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {

    container.removeView((View) object);
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值