您的位置:首页 > 其它

动态添加小圆点 与 给imageView设置触摸的监听事件

2017-10-13 16:25 525 查看
 /**

     * 动态添加小圆点    <根据网络获取的图片数量,动态 灵活添加圆点数量>

     * @param list
     */

//shape.xml  文件的配置

//红色圆点

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <solid android:color="#ff0000"/>

    <corners android:radius="10dp"/>

    <size android:height="10dp" android:width="10dp"/>

</shape>

//绿色圆点

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <solid android:color="#00ff00"/>

    <corners android:radius="10dp"/>

    <size android:height="10dp" android:width="10dp"/>

</shape>

//java代码的逻辑处理

    private void initDoc(List<DataDataBean.DataBean> list) {

        //1.需要一个集合记录一下小圆点的imageView控件

        images = new ArrayList<ImageView>();

        //2...linearLayout上面的视图清空一下再去添加

        linearLayout.removeAllViews();

        for (int i=0;i<list.size();i++){

            ImageView imageView = new ImageView(MainActivity.this);

            if (i==0){

                imageView.setImageResource(R.drawable.shape_01);

            }else {

                imageView.setImageResource(R.drawable.shape_02);

            }

            //添加到集合去

            images.add(imageView);

            //添加到线性布局上

            //这是布局参数,,刚开始小圆点之间没有距离,所以使用java代码指定宽度高度,并且指定小圆点之间的距离

            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);

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

            linearLayout.addView(imageView,params);

        }

    }

//viewPage设置监听事件

                    viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

                        @Override

                        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

                        }

                        /**

                         * 当选中某个页面的时候,把当前的小圆点背景变成绿色

                         * @param position

                         */

                        @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.shape_01);

                                }else {

                                    images.get(i).setImageResource(R.drawable.shape_02);

                                }

                            }

                        }

                        @Override

                        public void onPageScrollStateChanged(int state) {

                        }

                    });

/**

*在适配器中为imageview设置触摸的监听事件

*/

 //给imageView设置触摸的监听事件

        imageView.setOnTouchListener(new View.OnTouchListener() {

            @Override

            public boolean onTouch(View view, MotionEvent motionEvent) {

                int action = motionEvent.getAction();//获取手指的动作

                switch (action){

                    case MotionEvent.ACTION_DOWN://按下的动作...应该取消发送消息的操作

                        handler.removeCallbacksAndMessages(null);

                        break;

                    case MotionEvent.ACTION_MOVE://移动的动作

                        handler.removeCallbacksAndMessages(null);

                        break;

                    case MotionEvent.ACTION_CANCEL://取消

                        //重新发送

                        handler.sendEmptyMessageDelayed(0,2000);

                        break;

                    case MotionEvent.ACTION_UP://抬起的动作

                        handler.sendEmptyMessageDelayed(0,2000);

                        break;

                }

                //返回true表示自己处理触摸事件

                return true;

            }

        });

      
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: