Android 讲义第二版 ViewSwitcher + GestureDetector 练习

添加手势监听:

GestureDetector detector;// 手势侦听
detector = new GestureDetector(getApplicationContext(),new myGestureListener());

手势侦听 在 onFling 中指定屏幕滑动效果和展示图像:

class myGestureListener implements OnGestureListener {
        // 当触碰事件按下时触发该方法
        @Override
        public boolean onDown(MotionEvent event) {
            return false;
        }

        // 用户在触摸屏上拖过时触发该方法
        @Override
        public boolean onFling(MotionEvent event1, MotionEvent event2,
                float velocityX, float velocityY) {
            ((GridView) viewSwitcher.getNextView()).setAdapter(adapter);
            if (event2.getX() - event1.getX() > FLIP_DISTANCE) {
                if (screenNo > 0) {
                    screenNo--;
                    // 添加屏幕动画切换效果
                    viewSwitcher.setInAnimation(animations[0]);
                    viewSwitcher.setInAnimation(animations[3]);
                    viewSwitcher.showPrevious();
                    return true;
                } else {
                    Toast.makeText(getApplicationContext(), "已无更多页面",
                            Toast.LENGTH_LONG).show();
                }
            } else {
                if (screenNo < screenCount - 1) {
                    screenNo++;
                    viewSwitcher.setInAnimation(animations[1]);
                    viewSwitcher.setInAnimation(animations[2]);
                    viewSwitcher.showNext();
                    return true;
                } else {
                    Toast.makeText(getApplicationContext(), "已无更多页面",
                            Toast.LENGTH_LONG).show();
                }
            }
            return false;
        }

        // 用户在屏幕上长按时触发该方法
        @Override
        public void onLongPress(MotionEvent event) {

        }

        // 用户在屏幕上滚动时触发该方法
        @Override
        public boolean onScroll(MotionEvent event1, MotionEvent event2,
                float velocityX, float velocityY) {
            return false;
        }

        // 用户在触摸屏上按下,而且还未移动和松开时触发该方法
        @Override
        public void onShowPress(MotionEvent arg0) {

        }

        // 用户在触屏上的轻击事件将触发该方法
        @Override
        public boolean onSingleTapUp(MotionEvent arg0) {
            return false;
        }

    }

进入的第一个界面展示 代码:

public void next(View v) {
        if (screenNo == -1) {
            screenNo++;
            ((GridView) viewSwitcher.getNextView()).setAdapter(adapter);
            viewSwitcher.showNext();
        } else {
            Toast.makeText(getApplicationContext(), "已无更多页面", Toast.LENGTH_LONG)
                    .show();
        }
    }

定义BaseAdapter:

private BaseAdapter adapter = new BaseAdapter() {
        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public DataItem getItem(int position) {
            return total.get(screenNo * Number_Per_Screen + position);
        }

        @Override
        public int getCount() {
            if (screenNo == screenCount - 1
                    && total.size() % Number_Per_Screen != 0) {
                return total.size() % Number_Per_Screen;
            }
            return Number_Per_Screen;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View view = convertView;
            if (convertView == null) {
                view = layoutInflater.inflate(R.layout.labelicon, null);
            }
            ImageView imageview = (ImageView) view.findViewById(R.id.imageview);
            imageview.setImageDrawable(getItem(position).drawable);
            TextView textView = (TextView) view.findViewById(R.id.textview);
            textView.setText(getItem(position).DataName);
            return view;
        }
    };

此处只是对 疯狂Android 讲义 中ViewSwitcher 的 手势 添加 做的一个小demo,本人处于初学阶段,如有不对的地方,请各位多多指正!!


你可能感兴趣的:(Android 讲义第二版 ViewSwitcher + GestureDetector 练习)