快上网专注成都网站设计 成都网站制作 成都网站建设
成都网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

Android实现手势滑动和简单动画效果

一、手势滑动

创新互联是一家专业从事成都网站建设、成都网站制作、网页设计的品牌网络公司。如今是成都地区具影响力的网站设计公司,作为专业的成都网站建设公司,创新互联依托强大的技术实力、以及多年的网站运营经验,为您提供专业的成都网站建设、营销型网站建设及网站设计开发服务!

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, MotionEvent e2,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;
      }      
    });

注:页面坐标

Android实现手势滑动和简单动画效果

二、简单动画

目的:用XML文件写一个Activity跳转页面的过渡动画。

1. 在res目录下新建anim文件夹,创建两个xml文件并编辑动画动作,一个是进入动作,另一个退出动作。

Android实现手势滑动和简单动画效果

(1)在anim_next_in.xml中写好进入动作。

<?xml version="1.0" encoding="utf-8"?>

  android:toXDelta="0"
  android:duration="100"  
  xmlns:android="http://schemas.android.com/apk/res/android">

(2)在anim_next_out.xml中写好退出动作。

<?xml version="1.0" encoding="utf-8"?>

  android:toXDelta="-100%p"
  android:duration="100"
   xmlns:android="http://schemas.android.com/apk/res/android">

2.调用Activity的overridePendingTransition方法,来实现平移动画。

/**
* overridePendingTransition(int enterAnim, int exitAnim)
* enterAnim为进入当前界面的动画资源ID, exitAnim为退出当前界面的动画资源ID
/
@Override
public 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实现手势滑动和简单动画效果
文章位置:http://6mz.cn/article/igjpgs.html

其他资讯