中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android實現手勢滑動和簡單動畫效果

發布時間:2020-08-21 04:12:29 來源:腳本之家 閱讀:291 作者:Watom_663 欄目:移動開發

一、手勢滑動

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"?>
<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
/
@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();//關閉當前界面
  }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

名山县| 芮城县| 马鞍山市| 楚雄市| 西乌| 秀山| 巴楚县| 敦化市| 海南省| 三台县| 历史| 正宁县| 千阳县| 西昌市| 郧西县| 托里县| 白玉县| 宣城市| 东至县| 浪卡子县| 阳朔县| 牙克石市| 施甸县| 唐海县| 新干县| 贵阳市| 吉隆县| 昆山市| 菏泽市| 尉氏县| 太湖县| 浮梁县| 安达市| 汽车| 隆林| 宾阳县| 青岛市| 东海县| 合水县| 文成县| 镇雄县|