美文网首页
12-24 Android根据手势滑动屏幕

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

作者: 知者半省者无 | 来源:发表于2016-12-24 12:45 被阅读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);

    相关文章

      网友评论

          本文标题:12-24 Android根据手势滑动屏幕

          本文链接:https://www.haomeiwen.com/subject/jqvlvttx.html