Android手势学习之单点手势
have been added to it. Only one child is shown at a time. If 4 * requested, can automatically flip between each child at a regular interval. 5 * 6被添加到ViewFlipper中的两个或两个以上的视图之间将执行一个简单的ViewAnimator动画。 1一次仅能显示一个子视图。如果需要,可以设置间隔时间使子视图像幻灯片一样自动显示。 1(译者注:com.example.android.apis.view/Animation_2.java包含该类示例程序) 2 3 * @attr ref android.R.styleable#ViewFlipper_flipInterval 4 * @attr ref android.R.styleable#ViewFlipper_autoStart 5 */ 经过使用SimpleOnGestureListener类后的全部Java代码如下: 01package me.banxi.slideapp; 02 03import android.app.Activity; 04import android.os.Bundle; 05import android.util.Log; 06import android.view.GestureDetector; 07import android.view.GestureDetector.OnGestureListener; 08import android.view.MotionEvent; 09import android.view.View; 10import android.view.View.OnTouchListener; 11import android.view.animation.AnimationUtils; 12import android.widget.ImageView; 13import android.widget.Toast; 14import android.widget.ViewFlipper; 15 16public class SlideAndGestureActivity extends Activity { 17 private ViewFlipper mFlipper; 18 private GestureDetector mDetector; 19 /** Called when the activity is first created. */ 20 @Override 21 public void onCreate(Bundle savedInstanceState) { 22 super.onCreate(savedInstanceState); 23 setContentView(R.layout.slide); 24 25 mDetector = new GestureDetector(getApplicationContext(),new FlingListener()); 26 mFlipper = (ViewFlipper )findViewById(R.id.viewFlipper1); 27 28 mFlipper.addView(addTextView(R.drawable.one)); 29 mFlipper.addView(addTextView(R.drawable.two)); 30 mFlipper.addView(addTextView(R.drawable.three)); 31 mFlipper.addView(addTextView(R.drawable.four)); 32 mFlipper.addView(addTextView(R.drawable.five)); 33 34 } 35 36 private View addTextView(int resId){ 37 ImageView view = new ImageView(this); 38 view.setImageResource(resId); 39 return view; 40 } 41 42 @Override 43 public boolean onTouchEvent(MotionEvent event) { 44 return mDetector.onTouchEvent(event); 45 } 46 47 private class FlingListener extends GestureDetector.SimpleOnGestureListener{ 48 @Override 49 public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 50 float velocityY) { 51 String msg = e1:+e1.getX()+,+e1.getY()+e2:+e2.getX()+,+e2.getY(); 52 Log.i(MotionSlide, msg); 53 if (e1.getX() - e2.getX() > 120) { 54 mFlipper.setInAnimation(AnimationUtils.loadAnimation(getApplicationContext(), R.anim.push_left_in)); 55 mFlipper.setOutAnimation(AnimationUtils.loadAnimation(getApplicationContext(), R.anim.push_left_out)); 56 mFlipper.showNext(); 57 return true; 58 } else if (e1.getX() - e2.getX() -120) { 59 mFlipper.setInAnimation(AnimationUtils.loadAnimation(getApplicationContext(), R.anim.push_right_in)); 60 mFlipper.setOutAnimation(AnimationUtils.loadAnimation(getApplicationContext(), R.anim.push_right_out)); 61 mFlipper.showPrevious(); 62 return true; 63 } 64 return false; 65 } 66 67 } 68 69} 在实际的项目开发中会遇到这样一样问题。 比如。上面 例子添加的ImageView默认也许不处理事件。所以 可以 正常的滑动。 但是在我的实际的开发中,的发现如ViewFlipper上面有一个GridView,GridView上面排列有Button.然后滑动手势 的事件就不会传播到ViewFlipper中去啊。于是我开始是在GridView上面 设置 一个margin 在margin区域里滑动事件 就会传递给ViwFlipper。(严格来说应该是mDetecotor.onTouchEvent()中去。 然后我就在想这个事件 传播的问题,然后我想到因为其实主要调用mDetecotor的时候, 也是在Activity中的OnTouchEvent(MotionEvent)方法 中。 中将这个MotionEvent事件以这样return mDetector.onTouchEvent(event)方法处理返回 。 于是 想在button中事件中的ACTION_MOVE中也调用mDetector.OnTouchEvent() 但是结果 不行。后来我就不区分ACTION_MOV
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)