标签:
添加手势监听:
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 练习
标签:
原文地址:http://my.oschina.net/leov1/blog/485101