91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Android如何實現仿微信右滑返回功能

發布時間:2021-06-28 09:44:42 來源:億速云 閱讀:143 作者:小新 欄目:移動開發

這篇文章將為大家詳細講解有關Android如何實現仿微信右滑返回功能,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

先上效果圖,如下:

Android如何實現仿微信右滑返回功能

先分析一下功能的主要技術點,右滑即手勢判斷,當滑到一直距離時才執行返回,并且手指按下的位置是在屏幕的最左邊(這個也是有一定范圍的),  這些可以實現onTouchEvent來實現。 接著就是返回時,有滑動效果,很顯然這個是Acitivty切換動畫實現的。好啦,分析完了就開干。下面上代碼:

@Override
 public boolean onTouchEvent(MotionEvent event) {
  switch (event.getAction()){
   case MotionEvent.ACTION_DOWN:
    x=event.getX();
    y=event.getY();
//    Log.e("ACTION_DOWN","x="+x);
    break;
   case MotionEvent.ACTION_MOVE:
    float mX = event.getX();
    float mY = event.getY();
    float dX = Math.abs(mX-x);
    float dY = Math.abs(mY-y);
    scollX = mX-x;
    if (isScroll && scollX>0){
     view.scrollTo(-(int) scollX,0);
    }
    break;
   case MotionEvent.ACTION_UP:
    if (isScroll && scollX>300){
     finish();
     overridePendingTransition(R.anim.bga_sbl_activity_backward_enter,R.anim.bga_sbl_activity_backward_exit);
    }else {
     isScroll = false;
     view.scrollTo(0,0);
    }
    break;
  }
  return false;
 }

這段代碼主要是實現了 手指在屏幕上滑動時,判斷方向是否是右滑,是的話就用scrollTo()來實現Activity的滑動,當滑動超過300px時就執行返回,并且加上切換動畫。看到這里細心的朋友應該會發現scrollTo()方法滑動的只是內容,并不是View的本身,那是怎么實現整個activity的滑動的呢?沒錯,如果只是上面這部分代碼,當你滑動時,是看不懂上一個界面的內容的,因為我們的View還在,這里說一下這個View是我獲取的activity的根布局。好啦,既然是這個View擋住了我們的的上一層布局,那么是不是只要讓它透明就可以了呢?答案是肯定的,我記得要讓根布局透明只需要改一下主題即可,如下:

<!-- 用于開啟滑動返回功能的 Activity -->
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowIsTranslucent">true</item>

只需要把上面兩行代碼添加到你的主題中即可。

感覺已經大功告成了,其實不是的,前面我們說了,當手指從屏幕的最左邊向右滑時,才實發滑動,這個就涉及到事件分發了。比如我們一個按鈕的寬占滿全屏,那當我們手指在按鈕的最左側按下時,是執行點擊事件還是執行滑動呢?這個時候就需要用到dispatchTouchEvent來處理這個問題。下面看代碼:

@Override
 public boolean dispatchTouchEvent(MotionEvent ev) {
  if (ev.getAction()==MotionEvent.ACTION_DOWN){
   float x = ev.getX();
//   Log.e("dispatchTouchEvent","x="+x);
   if (x<=50&&isCanScroll){
    isScroll = true;
    return true;
   }
  }
  return super.dispatchTouchEvent(ev);
 }

上面的代碼是當我們的手指在屏幕最左側按下時,如果小于50(這個數值可以根據需求自己設置),我們就認為用戶需要右滑,于是,我們就消費掉,不往下一層傳遞。

當沒有小于50時,正常執行。

整個流程已經講完了,是不是很簡單!這些代碼最好放到Activity基類中實現!這樣方便管理!

關于“Android如何實現仿微信右滑返回功能”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

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

AI

广饶县| 宣威市| 新绛县| 凌海市| 宜黄县| 开原市| 长阳| 剑阁县| 青州市| 土默特右旗| 新乐市| 商南县| 云和县| 中宁县| 瓦房店市| 蓝田县| 丰镇市| 株洲县| 加查县| 涡阳县| 仁化县| 潼关县| 墨玉县| 潞西市| 彭州市| 长寿区| 河南省| 神农架林区| 都匀市| 徐闻县| 香河县| 西乌| 宁远县| 宁城县| 福海县| 邻水| 闵行区| 崇左市| 河北省| 邵阳市| 大关县|