国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android仿微信右滑返回功能的實例代碼

2019-12-12 01:57:46
字體:
來源:轉載
供稿:網友

先上效果圖,如下:

先分析一下功能的主要技術點,右滑即手勢判斷,當滑到一直距離時才執行返回,并且手指按下的位置是在屏幕的最左邊(這個也是有一定范圍的),  這些可以實現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仿微信右滑返回功能的實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 古蔺县| 天气| 年辖:市辖区| 曲阳县| 永修县| 巴塘县| 大港区| 岳普湖县| 商河县| 盐津县| 肃宁县| 楚雄市| 石屏县| 镇江市| 深州市| 临武县| 固原市| 五常市| 婺源县| 青河县| 安新县| 海安县| 嵊州市| 慈溪市| 赤壁市| 云南省| 长宁区| 闸北区| 望江县| 胶南市| 丽江市| 教育| 溧阳市| 永靖县| 乌鲁木齐市| 凤翔县| 河北省| 宽城| 新乡市| 蛟河市| 方山县|