一、手势滑动
1.Activity都具有响应触摸事件,也就是说只要触摸Activity,他都会回调一个ontouchEvent()方法。但是在这个方法里无法处理事件,需要配合使用手势识别器(GestureDetector)中的方法ontouchEvent对事件(event)进行分析处理,我们只需要重写这个方法中的 *** 作来达到我们的需求。
/** * activity被触摸后,会回调此方法ontouchEvent,并回传一个event对象 * event对象封装了触摸时的动作信息,包括x、y坐标等等信息 */ @OverrIDe public boolean ontouchEvent(MotionEvent event) { // Todo auto-generated method stub boolean ontouchEvent = gestureDetector.ontouchEvent(event); //如果这个方法消费了这个这个event事件,就返回True,否则false。 return super.ontouchEvent(event); }
2.我们需要根据滑动手势做界面跳转,GestureDetector封装了可以监听不同手势的方法。这个方法在哪个Activity中使用,这个Activity就能监听这个Activity接收的动作,在这些方法里可以重写需要的动作。
GestureDetector gestureDetector = new GestureDetector(this,new OnGestureListener(){ @OverrIDe public boolean onDown(MotionEvent e) { // 按下 return false; } @OverrIDe public voID onShowPress(MotionEvent e) { // Todo auto-generated method stub } @OverrIDe public boolean onSingleTapUp(MotionEvent e) { // 点击 return false; } @OverrIDe public boolean onScroll(MotionEvent e1,MotionEvent e2,float distanceX,float distanceY) { // 滑动 return false; } @OverrIDe public voID onLongPress(MotionEvent e) { // 长按 } /** *滑动,e1为起点坐标,e2为终点坐标 *在这里消费掉event事件,重写其中的方法以达到需求。 / @OverrIDe public boolean onFling(MotionEvent e1,float veLocityX,float veLocityY) { if(e1.getRawX()-e2.getRawX()>200){ flingnextpage(); //向左滑(与滑动动画配合效果较好) }else if(e2.getRawX()-e1.getRawX()>200){ flingprevIoUspage();//向右滑 } if(Math.abs(e1.getRawY()-e2.getRawY())>200){ System.out.println("不能斜着滑动"); return true;//true表示我们消费了这个触摸事件 } if(Math.abs(veLocityX)<150 ||Math.abs(veLocityY)<100){ System.out.println("滑动的太慢了,请滑快点"); return true; } return true; } });
注:页面坐标
二、简单动画
目的:用XML文件写一个Activity跳转页面的过渡动画。
1. 在res目录下新建anim文件夹,创建两个xml文件并编辑动画动作,一个是进入动作,另一个退出动作。
(1)在anim_next_in.xml中写好进入动作。
<?xml version="1.0" enCoding="utf-8"?><translate androID:fromXDelta="100%p" <!―当前界面的右侧界面,从右侧滑入当前界面--> androID:toXDelta="0" androID:duration="100" <!--移动时间--> xmlns:androID="http://schemas.androID.com/apk/res/androID"></translate>
(2)在anim_next_out.xml中写好退出动作。
<?xml version="1.0" enCoding="utf-8"?><translate androID:fromXDelta="0" <!―当前界面向左滑出--> androID:toXDelta="-100%p" androID:duration="100" xmlns:androID="http://schemas.androID.com/apk/res/androID"></translate>
2.调用Activity的overrIDePendingTransition方法,来实现平移动画。
/*** overrIDePendingTransition(int enteranim,int exitAnim)* enteranim为进入当前界面的动画资源ID, exitAnim为退出当前界面的动画资源ID/@OverrIDepublic voID flingnextpage() { // Todo auto-generated method stub startActivity(new Intent(this,NewActivity.class)); overrIDePendingTransition(R.anim.anim_next_in,R.anim.anim_next_out); finish();//关闭当前界面 }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
以上是内存溢出为你收集整理的Android实现手势滑动和简单动画效果全部内容,希望文章能够帮你解决Android实现手势滑动和简单动画效果所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)