Android_UI 仿QQ側(cè)滑菜單效果的實(shí)現(xiàn)
相信大家對(duì)QQ側(cè)滑菜單的效果已經(jīng)不陌生了吧,側(cè)滑進(jìn)入個(gè)人頭像一側(cè),進(jìn)行對(duì)頭像的更改,我的收藏,QQ錢包,我的文件等一系列的操作,今天呢,主要是實(shí)現(xiàn)進(jìn)入側(cè)滑菜單的這一效果原理進(jìn)行分析.
主要思路分析
1.首先寫一個(gè)SlideMenu 繼承一個(gè)幀布局FrameLayout ,因?yàn)槿绻^承自ViewGroup的話,需要我們自己來實(shí)現(xiàn)onMeasure方法,而該方法的實(shí)現(xiàn)一般比較麻煩且沒有必要,所以選擇繼承系統(tǒng)的已有的控件FrameLayout,不用其他控件是因?yàn)镕rameLayout最輕量級(jí)
2.在布局文件中給SlideMenu添加2個(gè)子布局,分別是菜單的布局和主界面的布局
3.移動(dòng)View的方法總結(jié)
通過改變View的scroll的坐標(biāo)來移動(dòng): scrollTo(x,y);//滾動(dòng)到指定位置 scrollBy(xOffset,yOffset);//滾動(dòng)多少距離 通過改變View在父View中的布局的位置: offsetLeftAndRight(offset);//同時(shí)更改view的left和right offsetTopAndBottom(offset);//同時(shí)更改view的top和bottom layout(l,t,r,b);
4.ViewDragHelper 類的介紹
谷歌在2013年I/O開發(fā)者大會(huì)上提出;
專門用于在ViewGroup中對(duì)子View進(jìn)行拖拽處理;
在19(Android4.4)以及以上的v4包中;
本質(zhì)是封裝了對(duì)觸摸事件的解析,包括觸摸位置,觸摸速度以及Scroller的封裝,只需要我們在回調(diào)方法中指定是否移動(dòng),移動(dòng)多少等等,但是需要注意的是:它只是一個(gè)觸摸事件的解析類(如GestureDecetor),所以需要我們傳遞給它觸摸事件,它才能工作;
開始創(chuàng)建ViewDragHelper對(duì)象
ViewDragHelper viewDragHelper = ViewDragHelper.create(this, callback);
dragHelper 只是觸摸事件的解析類,需要將觸摸事件傳遞給它才能工作
1)_觸摸事件: 將觸摸事件傳遞給VIewDragHelper 來解析
2)_判斷是否需要攔截觸摸事件
3)_初始化子view的引用
4)_初始化寬高.在onSizeChanged方法中初始化寬高,因?yàn)樵摲椒ㄔ趏nMeasure之后執(zhí)行
其中這里調(diào)用getMeasureWidth() 方法與分別獲取左側(cè)菜單的寬,主頁面的寬的作用是一樣的.
實(shí)現(xiàn)ViewDragHelper.Callback 的監(jiān)聽事件
監(jiān)視view的觸摸事件,這里需要考慮到,當(dāng)進(jìn)行滑動(dòng)的時(shí)候,可能會(huì)觸碰到listview的滑動(dòng)事件,所以這里通過了getViewHorizontalDragRange()方法進(jìn)行強(qiáng)制橫向滑動(dòng),當(dāng)返回值大于0 的時(shí)候,即讓它強(qiáng)制橫向滑動(dòng),否則在某些情況下不能水平滑動(dòng)
控制垂直方向的移動(dòng)
在onViewPositionChanged()方法中實(shí)現(xiàn)一些伴隨移動(dòng)的效果
此方法可以獲取view移動(dòng)的距離
如果當(dāng)前移動(dòng)的是main ,那么就讓menu 進(jìn)行伴隨移動(dòng)
移動(dòng)main ,并限制main的移動(dòng)
根據(jù)滑動(dòng)的百分比的值,去執(zhí)行伴隨的動(dòng)畫 executeAnim()
松開手指進(jìn)行回調(diào),該方法會(huì)處理手指拾起的緩慢移動(dòng)
執(zhí)行動(dòng)畫
這里考慮到了給整個(gè)SlideMenu的背景添加陰影遮罩效果,通過getBackground對(duì)是否為空時(shí)進(jìn)行添加陰影遮罩效果
//對(duì)main的移動(dòng)進(jìn)行限制了 private int fixLeft(int newLeft) { if (newLeft > maxLeft) { newLeft = maxLeft; } else if (newLeft < 0) { newLeft = 0; } return newLeft;
需要定義接口回調(diào),將SlideMenu 打開,讓滑動(dòng)和關(guān)閉的事件方法暴露
//定義接口回調(diào),將SlideMenu 打開,,滑動(dòng)和關(guān)閉的事件暴露給外界 public interface onSwipeListener { void onOpen(); void onClose(); void onDragging(float fraction); //拖拽過程中的回調(diào) }
以上所述是小編給大家介紹的Android_UI 仿QQ側(cè)滑菜單效果的實(shí)現(xiàn),希望對(duì)大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- Android實(shí)現(xiàn)原生側(cè)滑菜單的超簡單方式
- Android滑動(dòng)優(yōu)化高仿QQ6.0側(cè)滑菜單(滑動(dòng)優(yōu)化)
- android RecyclerView側(cè)滑菜單,滑動(dòng)刪除,長按拖拽,下拉刷新上拉加載
- Android使用自定義控件HorizontalScrollView打造史上最簡單的側(cè)滑菜單
- Android使用DrawerLayout實(shí)現(xiàn)仿QQ雙向側(cè)滑菜單
- 代碼分析Android實(shí)現(xiàn)側(cè)滑菜單
- Android開源組件SlidingMenu側(cè)滑菜單使用介紹
- Android UI實(shí)現(xiàn)SlidingMenu側(cè)滑菜單效果
- Android側(cè)滑菜單控件DrawerLayout使用詳解
- Android自定義實(shí)現(xiàn)側(cè)滑菜單效果
相關(guān)文章
android仿微信表情雨下落效果的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于android仿微信表情雨下落效果的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-09-09Android讀取properties配置文件的實(shí)例詳解
這篇文章主要介紹了Android讀取properties配置文件的實(shí)例詳解的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-09-09Android開發(fā)Jetpack?Compose元素Modifier特性詳解
這篇文章主要為大家介紹了Android開發(fā)Jetpack?Compose元素Modifier特性詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10Android編程單選項(xiàng)框RadioGroup綜合應(yīng)用示例
這篇文章主要介紹了Android編程單選項(xiàng)框RadioGroup用法,結(jié)合實(shí)例形式分析了Android單選按鈕組RadioGroup的定義與具體使用技巧,需要的朋友可以參考下2016-10-10Android Studio 中的Gradle構(gòu)建系統(tǒng)示例
這篇文章主要介紹了Android Studio 中的Gradle構(gòu)建系統(tǒng)示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-11-11Android通過wifi連接手機(jī)(不需要root)
這篇文章主要為大家詳細(xì)介紹了Android通過wifi連接手機(jī),不需要root,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06Andriod?Studio實(shí)現(xiàn)撥打電話和發(fā)送短信的示例代碼
這篇文章主要介紹了Andriod?Studio實(shí)現(xiàn)撥打電話和發(fā)送短信功能,Android?Studio中創(chuàng)建項(xiàng)目,然后在該項(xiàng)目中創(chuàng)建一個(gè)Module名稱為“IntentDial”,文章結(jié)合實(shí)例步驟給大家介紹的非常詳細(xì),需要的朋友參考下吧2022-03-03Android?內(nèi)存優(yōu)化知識(shí)點(diǎn)梳理總結(jié)
這篇文章主要介紹了Android?內(nèi)存優(yōu)化知識(shí)點(diǎn)梳理總結(jié),Android?操作系統(tǒng)給每個(gè)進(jìn)程都會(huì)分配指定額度的內(nèi)存空間,App?使用內(nèi)存來進(jìn)行快速的文件訪問交互,長時(shí)間如此便需要優(yōu)化策略,文章分享優(yōu)化知識(shí)點(diǎn)總結(jié),需要的朋友可以參考一下2022-06-06