12-24 Android根据手势滑动屏幕

2016-12-24  本文已影响404人  知者半省者无

12-24  Android根据手势滑动屏幕

参考:黑马手机卫士。

http://930307.blog.51cto.com/7950022/1345760

点击下一页:上一页移出动画:(0,y)---(-屏幕宽度,y);

                       下一页移入动画:(屏幕宽度,y)--(0,y);

点击上一页:上一页移入动画:(-屏幕宽度,y)--(0,屏幕宽度);

                      下一页移出动画:(0,y)--(屏幕宽度,y);

动画文件:

进:左→右

android:interpolator="@android:anim/accelerate_decelerate_interpolator"

android:duration="300"

android:fromXDelta="-100%p"

android:toXDelta="0"/>

出:左→右

android:duration="300"

android:fromXDelta="0"

android:interpolator="@android:anim/accelerate_decelerate_interpolator"

android:toXDelta="100%p"/>

进:右→左

android:interpolator="@android:anim/accelerate_decelerate_interpolator"

android:duration="300"

android:fromXDelta="100%p"

android:toXDelta="0"/>

出:右→左

android:interpolator="@android:anim/accelerate_decelerate_interpolator"

android:duration="300"

android:fromXDelta="0"

android:toXDelta="-100%p"/>

package com.zrblog.mobilesafe74.activity;

import android.app.Activity;

import android.os.Bundle;

import android.provider.ContactsContract.CommonDataKinds.Event;

import android.view.GestureDetector;

import android.view.MotionEvent;

import android.view.View;

public abstract class BaseActivity extends Activity {

private GestureDetector mGestureDetector;

protected void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);

//2,创建手势管理的对象,用作管理在onTouchEvent(event)传递过来的手势动作

          mGestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener(){

          @Override

          public boolean onFling(MotionEvent e1, MotionEvent e2,

          float velocityX, float velocityY) {

          //监听手势的移动

          if(e1.getX()-e2.getX()>0){

         //调用子类的下一页方法,抽象方法

          //在第一个界面上的时候,跳转到第二个界面

         //在第二个界面上的时候,跳转到第三个界面

        //.......

       showNextPage();

}

        if(e1.getX()-e2.getX()<0){

        //调用子类的上一页方法

       //在第一个界面上的时候,无响应,空实现

      //在第二个界面上的时候,跳转到第1个界面

      //.......

      showPrePage();

    }

    return super.onFling(e1, e2, velocityX, velocityY);

}

});

}

/* (non-Javadoc)

* @see android.app.Activity#onTouchEvent(android.view.MotionEvent)

*/

@Override

public boolean onTouchEvent(MotionEvent event){

//通过手势处理类,接收多种类型的事件,用作处理。

        mGestureDetector.onTouchEvent(event);

        return super.onTouchEvent(event);

}

//上一页的抽象方法,由子类决定具体跳转到哪个界面

protected abstract void showPrePage();

//下一页的抽象方法,由子类决定具体跳转转到那个界面

protected abstract void showNextPage();

/**

* 点击上一页按钮的时候,根据子类的showNextPage方法做相应的跳转。

*/

public void showPre(View view) {

           showPrePage();

}

/**

* 点击下一页的时候,根据子类的showNextPage方法做响应的跳转

*/

public void showNext(View view) {

          showNextPage();

     }

}

// 开启平移动画

overridePendingTransition(R.anim.translate_next_in,R.anim.translate_next_out);

上一篇下一篇

猜你喜欢

热点阅读