欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android實(shí)現(xiàn)全局右滑返回

 更新時(shí)間:2020年04月20日 09:05:13   作者:qiaaaaao代碼  
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)全局右滑返回,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

目前Android手機(jī)的全面屏越來(lái)越盛行,很多應(yīng)用都已經(jīng)支持了右滑返回上一級(jí)頁(yè)面的功能,那么這個(gè)功能如何實(shí)現(xiàn)呢?

首先來(lái)說(shuō)下思路吧,主要是通過(guò) MotionEvent 這個(gè)事件通過(guò)對(duì)這個(gè)事件的不同處理,在通過(guò) PointF 來(lái)監(jiān)聽(tīng)按下去的點(diǎn),處于什么位置。

接下來(lái),通過(guò)代碼給大家講解一下

顯示新建一個(gè)Gesture的這個(gè)樣一個(gè)類,用來(lái)處理,滑動(dòng)的邏輯。

public class GestureHandler {}

接下來(lái)是定義相關(guān)的一些屏幕寬高、滑動(dòng)的區(qū)間的一些表示

//屏幕寬高
int sWidth = 1280;
int sHeight = 720;
//按下的點(diǎn)
PointF down;
//Y軸滑動(dòng)的區(qū)間
float minY, maxY;
//按下時(shí)的時(shí)間
long downTime;
//邊緣判定距離,
double margin = sWidth * 0.035;
//Y軸最大區(qū)間范圍,即Y軸滑動(dòng)超出這個(gè)范圍不觸發(fā)事件
double height = sHeight * 0.2;
//X軸最短滑動(dòng)距離 X軸滑動(dòng)范圍低于此值不觸發(fā)事件
double width = sWidth * 0.1;
//是否處于此次滑動(dòng)事件
boolean work = false;

當(dāng)然了,這里我的屏幕是這樣子,屏幕的寬高是按照自己的實(shí)際情況的。

然后是用 PointF 來(lái)監(jiān)聽(tīng)

public boolean point(PointF up) {
  long upTime = System.currentTimeMillis();
  float tWidth = Math.abs(down.x - up.x);
  if (maxY - minY < height && tWidth > width && (upTime - downTime) / tWidth < 2.5) {
   //起點(diǎn)在左邊
   if (down.x < margin) {
    left();//左滑需要處理的邏輯的方法
    return true;
   }
   
  }
  return false;
 }

在定義好之后就可以使用MontionEvent,來(lái)進(jìn)行一個(gè)處理了

public boolean doEventF(MotionEvent event) {
   switch (event.getActionMasked()) {
   case MotionEvent.ACTION_DOWN:
    //記錄下按下的點(diǎn)
    downTime = System.currentTimeMillis();
    down = new PointF(event.getX(), event.getY());
    minY = maxY = down.y;
    //判定是否處于邊緣側(cè)滑
    if (down.x < margin || (sWidth - down.x) < margin) work = true;
    break;
   case MotionEvent.ACTION_MOVE:
    //記錄滑動(dòng)Y軸區(qū)間
    if (work)
     if (event.getY() > down.y) {
      maxY = event.getY();
     } else {
      minY = event.getY();
      }
    break;
   case MotionEvent.ACTION_UP:
    if (work) {
     handle(new PointF(event.getX(), event.getY()));
     work = false;
     return true;
    }
    work = false;
  }
  
  return work;
 }

那這里是左滑退出當(dāng)前activity

public void left() {
 
  //處理左邊緣滑動(dòng)事件,這里你可以自己寫一個(gè)ActivityUtil,用來(lái)finish當(dāng)前的activity(這個(gè)網(wǎng)上很多,隨便搜一下就有了)
   
}

這里處理好之后,就要思考一下了,如何能達(dá)到全局的右滑返回了,那么你就需要讓所有的activity繼承一個(gè)BaseActivity,然后再這個(gè)基類里面來(lái)處理是否需要右滑返回。

/** 手勢(shì)監(jiān)聽(tīng) */
 GestureHandler mGestureHandler;
 /** 是否需要監(jiān)聽(tīng)手勢(shì)關(guān)閉功能 */
 private boolean mNeedBackGesture = false;

然后通過(guò)一個(gè)dispatchTouchEvent 來(lái)進(jìn)行一個(gè)手勢(shì)分發(fā)

@Override
 public boolean dispatchTouchEvent(MotionEvent event){
  //TODO Auto-generated method stub
  if (mNeedBackGesture){
   return mGestureHandler.doEventF(event) || super.dispatchTouchEvent(event);
  }
  return super.dispatchTouchEvent(event);
 }

設(shè)置一個(gè)手勢(shì)監(jiān)聽(tīng),便于一些特殊的activity設(shè)置不可滑動(dòng)退出,比如首頁(yè)

public final void setNeedBackGesture(boolean mNeedBackGesture){
  this.mNeedBackGesture = mNeedBackGesture;
 }

那么你在使用的時(shí)候只需要再onCreate方法里面 new 一個(gè)Gesture對(duì)象就好了

如果你想在首頁(yè)做不返回,同樣在onCreate方法里面設(shè)置setNeedBackGesrure(false)就還可以了

這樣你就實(shí)現(xiàn)了一個(gè)全局的右滑返回了。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android 實(shí)現(xiàn)加載大圖片的方法

    Android 實(shí)現(xiàn)加載大圖片的方法

    對(duì)于超大的圖片,如果不縮放的話,容易導(dǎo)致內(nèi)存溢出。而經(jīng)過(guò)處理后,無(wú)論多大的圖片,都能夠在手機(jī)屏幕上加載出來(lái),不會(huì)導(dǎo)致內(nèi)存溢出。本文將對(duì)Android 加載大圖片的實(shí)現(xiàn)方法進(jìn)行介紹,下面跟著小編一起來(lái)看下吧
    2017-04-04
  • Android數(shù)據(jù)加密之Aes加密

    Android數(shù)據(jù)加密之Aes加密

    這篇文章主要為大家詳細(xì)介紹了Android數(shù)據(jù)加密之Aes加密,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • 快速解決設(shè)置Android 23.0以上版本對(duì)SD卡的讀寫權(quán)限無(wú)效的問(wèn)題

    快速解決設(shè)置Android 23.0以上版本對(duì)SD卡的讀寫權(quán)限無(wú)效的問(wèn)題

    今天小編就為大家分享一篇快速解決設(shè)置Android 23.0以上版本對(duì)SD卡的讀寫權(quán)限無(wú)效的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • 詳解Android studio 動(dòng)態(tài)fragment的用法

    詳解Android studio 動(dòng)態(tài)fragment的用法

    這篇文章主要介紹了Android studio 動(dòng)態(tài)fragment的用法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Android利用BitMap獲得圖片像素?cái)?shù)據(jù)的方法

    Android利用BitMap獲得圖片像素?cái)?shù)據(jù)的方法

    這篇文章主要介紹了Android利用BitMap獲得圖片像素?cái)?shù)據(jù)的方法,結(jié)合實(shí)例對(duì)比分析了Android獲取圖片像素?cái)?shù)據(jù)的相關(guān)技巧,需要的朋友可以參考下
    2016-02-02
  • 如何給Flutter界面切換實(shí)現(xiàn)點(diǎn)特效

    如何給Flutter界面切換實(shí)現(xiàn)點(diǎn)特效

    這篇文章主要給大家介紹了關(guān)于如何給Flutter界面切換實(shí)現(xiàn)點(diǎn)特效的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Flutter具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 教你如何使用platform密鑰對(duì)apk進(jìn)行簽名

    教你如何使用platform密鑰對(duì)apk進(jìn)行簽名

    這篇文章主要介紹了教你如何使用platform密鑰對(duì)apk進(jìn)行簽名,需要的朋友可以參考下
    2014-06-06
  • Android自定義view貝塞爾曲線

    Android自定義view貝塞爾曲線

    這篇文章主要為大家詳細(xì)介紹了Android自定義view貝塞爾曲線,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Android 自定義陰影效果詳解及實(shí)例

    Android 自定義陰影效果詳解及實(shí)例

    這篇文章主要介紹了Android 自定義陰影效果詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • Andriod使用多線程實(shí)現(xiàn)輪播圖片

    Andriod使用多線程實(shí)現(xiàn)輪播圖片

    這篇文章主要介紹了Andriod使用多線程實(shí)現(xiàn)輪播圖片效果,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-10-10

最新評(píng)論