
以下是所有代码:
main.java
import androID.app.Activity;import androID.os.Bundle;import androID.vIEw.GestureDetector;import androID.vIEw.KeyEvent;import androID.vIEw.MotionEvent;import androID.vIEw.VIEw;import androID.vIEw.GestureDetector.SimpleOnGestureListener;import androID.vIEw.animation.Animation;import androID.vIEw.animation.AnimationUtils;import androID.webkit.WebVIEw;import androID.Widget.VIEwFlipper;public class main extends Activity {private static final int SWIPE_MIN_disTANCE = 120;private static final int SWIPE_MAX_OFF_PATH = 250;private static final int SWIPE_THRESHolD_VELociTY = 200;private GestureDetector gestureDetector;VIEw.OntouchListener gestureListener;private Animation slIDeleftIn;private Animation slIDeleftOut;private Animation slIDeRightIn;private Animation slIDeRightOut;private VIEwFlipper vIEwFlipper; @OverrIDe public voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.main); // ---------------------------------Sets Swipe Animation to Next VIEw --> vIEwFlipper = (VIEwFlipper)findVIEwByID(R.ID.AC4313); slIDeleftIn = AnimationUtils.loadAnimation(this,R.anim.slIDe_left_in); slIDeleftOut = AnimationUtils.loadAnimation(this,R.anim.slIDe_left_out); slIDeRightIn = AnimationUtils.loadAnimation(this,R.anim.slIDe_right_in); slIDeRightOut = AnimationUtils.loadAnimation(this,R.anim.slIDe_right_out); gestureDetector = new GestureDetector(new MyGestureDetector()); gestureListener = new VIEw.OntouchListener() { public boolean ontouch(VIEw v,MotionEvent event) { if (gestureDetector.ontouchEvent(event)) { return true; } return false; } }; }class MyGestureDetector extends SimpleOnGestureListener { @OverrIDe public boolean onFling(MotionEvent e1,MotionEvent e2,float veLocityX,float veLocityY) { try { if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) return false; // right to left swipe if(e1.getX() - e2.getX() > SWIPE_MIN_disTANCE && Math.abs(veLocityX) > SWIPE_THRESHolD_VELociTY) { vIEwFlipper.setInAnimation(slIDeleftIn); vIEwFlipper.setoutAnimation(slIDeleftOut); vIEwFlipper.showNext(); } else if (e2.getX() - e1.getX() > SWIPE_MIN_disTANCE && Math.abs(veLocityX) > SWIPE_THRESHolD_VELociTY) { vIEwFlipper.setInAnimation(slIDeRightIn); vIEwFlipper.setoutAnimation(slIDeRightOut); vIEwFlipper.showPrevIoUs(); } } catch (Exception e) { // nothing } return false; }} @OverrIDe // ------------------------------ Catch the Gesture Event by OverrIDing ontouch() method: -->public boolean ontouchEvent(MotionEvent event) { if (gestureDetector.ontouchEvent(event)) return true; else return false;} 动画* .xml的:
<?xml version="1.0" enCoding="utf-8"?><set xmlns:androID="http://schemas.androID.com/apk/res/androID"> <translate androID:fromXDelta="100%p" androID:toXDelta="0" androID:duration="800"/></set>解决方法 我认为问题是你没有覆盖OnDown事件.将此代码段添加到MyGestureDetector类中,它应该可以正常工作.
@OverrIDepublic boolean onDown(MotionEvent e) { return true; } onDown事件默认返回false,每个手势都以onDown开头,因此你的onFling事件不会触发.
伊什特万
总结以上是内存溢出为你收集整理的android – MyGestureDetector扩展了SimpleOnGestureListener全部内容,希望文章能够帮你解决android – MyGestureDetector扩展了SimpleOnGestureListener所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)