Android仿微信右滑返回功能的實例代碼
先上效果圖,如下:

先分析一下功能的主要技術(shù)點,右滑即手勢判斷,當(dāng)滑到一直距離時才執(zhí)行返回,并且手指按下的位置是在屏幕的最左邊(這個也是有一定范圍的), 這些可以實現(xiàn)onTouchEvent來實現(xiàn)。 接著就是返回時,有滑動效果,很顯然這個是Acitivty切換動畫實現(xiàn)的。好啦,分析完了就開干。下面上代碼:
@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;
}
這段代碼主要是實現(xiàn)了 手指在屏幕上滑動時,判斷方向是否是右滑,是的話就用scrollTo()來實現(xiàn)Activity的滑動,當(dāng)滑動超過300px時就執(zhí)行返回,并且加上切換動畫??吹竭@里細(xì)心的朋友應(yīng)該會發(fā)現(xiàn)scrollTo()方法滑動的只是內(nèi)容,并不是View的本身,那是怎么實現(xiàn)整個activity的滑動的呢?沒錯,如果只是上面這部分代碼,當(dāng)你滑動時,是看不懂上一個界面的內(nèi)容的,因為我們的View還在,這里說一下這個View是我獲取的activity的根布局。好啦,既然是這個View擋住了我們的的上一層布局,那么是不是只要讓它透明就可以了呢?答案是肯定的,我記得要讓根布局透明只需要改一下主題即可,如下:
<!-- 用于開啟滑動返回功能的 Activity --> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowIsTranslucent">true</item>
只需要把上面兩行代碼添加到你的主題中即可。
感覺已經(jīng)大功告成了,其實不是的,前面我們說了,當(dāng)手指從屏幕的最左邊向右滑時,才實發(fā)滑動,這個就涉及到事件分發(fā)了。比如我們一個按鈕的寬占滿全屏,那當(dāng)我們手指在按鈕的最左側(cè)按下時,是執(zhí)行點擊事件還是執(zhí)行滑動呢?這個時候就需要用到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);
}
上面的代碼是當(dāng)我們的手指在屏幕最左側(cè)按下時,如果小于50(這個數(shù)值可以根據(jù)需求自己設(shè)置),我們就認(rèn)為用戶需要右滑,于是,我們就消費掉,不往下一層傳遞。
當(dāng)沒有小于50時,正常執(zhí)行。
整個流程已經(jīng)講完了,是不是很簡單!這些代碼最好放到Activity基類中實現(xiàn)!這樣方便管理!
總結(jié)
以上所述是小編給大家介紹的Android仿微信右滑返回功能的實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
Java語言讀取配置文件config.properties的方法講解
今天小編就為大家分享一篇關(guān)于Java語言讀取配置文件config.properties的方法講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03
android 開發(fā) 文件讀寫應(yīng)用案例分析
在Android應(yīng)用中保存文件會使用到文件讀寫技術(shù),本文將詳細(xì)介紹,需要的朋友可以參考下2012-12-12
Android自定義可點擊的ImageSpan并在TextView中內(nèi)置View
這篇文章主要為大家詳細(xì)介紹了Android自定義可點擊的ImageSpan并在TextView中內(nèi)置"View",具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-11-11
淺談Android應(yīng)用安全防護(hù)和逆向分析之a(chǎn)pk反編譯
我們有時候在某個app上見到某個功能,某個效果蠻不錯的,我們想看看對方的思路怎么走的,這時候,我們就可以通過反編譯來編譯該apk,拿到代碼,進(jìn)行分析。2021-06-06
Android開發(fā)中如何去掉app標(biāo)題欄的實現(xiàn)
這篇文章主要介紹了Android開發(fā)中如何去掉app標(biāo)題欄的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
Android開發(fā)使用自定義View將圓角矩形繪制在Canvas上的方法
這篇文章主要介紹了Android開發(fā)使用自定義View將圓角矩形繪制在Canvas上的方法,結(jié)合實例形式分析了Android自定義view繪制圓角矩形的相關(guān)方法與使用技巧,需要的朋友可以參考下2017-10-10

