最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android_UI 仿QQ側(cè)滑菜單效果的實(shí)現(xiàn)

 更新時(shí)間:2017年04月11日 09:19:07   作者:Checkiming  
相信大家對(duì)QQ側(cè)滑菜單的效果已經(jīng)不陌生了吧,側(cè)滑進(jìn)入個(gè)人頭像一側(cè),進(jìn)行對(duì)頭像的更改,我的收藏,QQ錢(qián)包,我的文件等一系列的操作,下面小編給大家分享Android_UI 仿QQ側(cè)滑菜單效果的實(shí)現(xiàn),一起看看吧

相信大家對(duì)QQ側(cè)滑菜單的效果已經(jīng)不陌生了吧,側(cè)滑進(jìn)入個(gè)人頭像一側(cè),進(jìn)行對(duì)頭像的更改,我的收藏,QQ錢(qián)包,我的文件等一系列的操作,今天呢,主要是實(shí)現(xiàn)進(jìn)入側(cè)滑菜單的這一效果原理進(jìn)行分析.

這里寫(xiě)圖片描述 

主要思路分析

1.首先寫(xiě)一個(gè)SlideMenu 繼承一個(gè)幀布局FrameLayout ,因?yàn)槿绻^承自ViewGroup的話,需要我們自己來(lái)實(shí)現(xiàn)onMeasure方法,而該方法的實(shí)現(xiàn)一般比較麻煩且沒(méi)有必要,所以選擇繼承系統(tǒng)的已有的控件FrameLayout,不用其他控件是因?yàn)镕rameLayout最輕量級(jí)

2.在布局文件中給SlideMenu添加2個(gè)子布局,分別是菜單的布局和主界面的布局

3.移動(dòng)View的方法總結(jié)

通過(guò)改變View的scroll的坐標(biāo)來(lái)移動(dòng):
scrollTo(x,y);//滾動(dòng)到指定位置
scrollBy(xOffset,yOffset);//滾動(dòng)多少距離
通過(guò)改變View在父View中的布局的位置:
offsetLeftAndRight(offset);//同時(shí)更改view的left和right
offsetTopAndBottom(offset);//同時(shí)更改view的top和bottom
layout(l,t,r,b);

4.ViewDragHelper 類的介紹

谷歌在2013年I/O開(kāi)發(fā)者大會(huì)上提出;

專門(mén)用于在ViewGroup中對(duì)子View進(jìn)行拖拽處理;

在19(Android4.4)以及以上的v4包中;

本質(zhì)是封裝了對(duì)觸摸事件的解析,包括觸摸位置,觸摸速度以及Scroller的封裝,只需要我們?cè)诨卣{(diào)方法中指定是否移動(dòng),移動(dòng)多少等等,但是需要注意的是:它只是一個(gè)觸摸事件的解析類(如GestureDecetor),所以需要我們傳遞給它觸摸事件,它才能工作;

開(kāi)始創(chuàng)建ViewDragHelper對(duì)象

ViewDragHelper viewDragHelper = ViewDragHelper.create(this, callback);

dragHelper 只是觸摸事件的解析類,需要將觸摸事件傳遞給它才能工作

1)_觸摸事件: 將觸摸事件傳遞給VIewDragHelper 來(lái)解析

觸摸事件

2)_判斷是否需要攔截觸摸事件

攔截觸摸事件

3)_初始化子view的引用

初始化view

4)_初始化寬高.在onSizeChanged方法中初始化寬高,因?yàn)樵摲椒ㄔ趏nMeasure之后執(zhí)行

初始化寬高

其中這里調(diào)用getMeasureWidth() 方法與分別獲取左側(cè)菜單的寬,主頁(yè)面的寬的作用是一樣的.

實(shí)現(xiàn)ViewDragHelper.Callback 的監(jiān)聽(tīng)事件

監(jiān)視view的觸摸事件,這里需要考慮到,當(dāng)進(jìn)行滑動(dòng)的時(shí)候,可能會(huì)觸碰到listview的滑動(dòng)事件,所以這里通過(guò)了getViewHorizontalDragRange()方法進(jìn)行強(qiáng)制橫向滑動(dòng),當(dāng)返回值大于0 的時(shí)候,即讓它強(qiáng)制橫向滑動(dòng),否則在某些情況下不能水平滑動(dòng)

監(jiān)視觸摸事件

強(qiá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)畫(huà) executeAnim()

對(duì)移動(dòng)進(jìn)行處理

松開(kāi)手指進(jìn)行回調(diào),該方法會(huì)處理手指拾起的緩慢移動(dòng)

松開(kāi)手指進(jìn)行回調(diào) 

執(zhí)行動(dòng)畫(huà)

這里考慮到了給整個(gè)SlideMenu的背景添加陰影遮罩效果,通過(guò)getBackground對(duì)是否為空時(shí)進(jìn)行添加陰影遮罩效果

根據(jù)百分比執(zhí)行動(dòng)畫(huà)

//對(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 打開(kāi),讓滑動(dòng)和關(guān)閉的事件方法暴露

//定義接口回調(diào),將SlideMenu 打開(kāi),,滑動(dòng)和關(guān)閉的事件暴露給外界
  public interface onSwipeListener {
    void onOpen();
    void onClose();
    void onDragging(float fraction); //拖拽過(guò)程中的回調(diào)
  }

以上所述是小編給大家介紹的Android_UI 仿QQ側(cè)滑菜單效果的實(shí)現(xiàn),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Android實(shí)現(xiàn)帶有指示器的進(jìn)度條

    Android實(shí)現(xiàn)帶有指示器的進(jìn)度條

    這篇文章主要介紹了Android實(shí)現(xiàn)帶有指示器的進(jìn)度條的示例代碼,幫助大家更好的理解和學(xué)習(xí)使用Android開(kāi)發(fā),感興趣的朋友可以了解下
    2021-05-05
  • Android 調(diào)用系統(tǒng)相機(jī)拍攝獲取照片的兩種方法實(shí)現(xiàn)實(shí)例

    Android 調(diào)用系統(tǒng)相機(jī)拍攝獲取照片的兩種方法實(shí)現(xiàn)實(shí)例

    這篇文章主要介紹了Android 調(diào)用系統(tǒng)相機(jī)拍攝獲取照片的兩種方法實(shí)現(xiàn)實(shí)例的相關(guān)資料,一種是通過(guò)Bundle來(lái)獲取壓縮過(guò)的照片,一種是通過(guò)SD卡獲取的原圖,需要的朋友可以參考下
    2016-11-11
  • Android給布局、控件加陰影效果的示例代碼

    Android給布局、控件加陰影效果的示例代碼

    本篇文章主要介紹了Android給布局、控件加陰影效果的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • 如何從外部瀏覽開(kāi)啟Android App

    如何從外部瀏覽開(kāi)啟Android App

    從瀏覽器中點(diǎn)擊某個(gè)按鈕,如果手機(jī)上裝有相應(yīng)的app,則直接開(kāi)啟app,并且到相對(duì)的頁(yè)面。如果沒(méi)有裝該app,則會(huì)到相應(yīng)的下載app的界面。這樣的功能怎么實(shí)現(xiàn)呢,本文帶著大家來(lái)看看如何實(shí)現(xiàn)。
    2021-06-06
  • Android WebView基礎(chǔ)應(yīng)用詳解

    Android WebView基礎(chǔ)應(yīng)用詳解

    這篇文章主要為大家介紹了Android中WebView這一控件的基礎(chǔ)應(yīng)用,例如:播放音樂(lè),播放視頻等,文中的示例代碼講解詳細(xì),對(duì)于我們了解WebView很有幫助,需要的同學(xué)可以學(xué)習(xí)一下
    2021-12-12
  • Android如何在App中啟動(dòng)系統(tǒng)鬧鐘

    Android如何在App中啟動(dòng)系統(tǒng)鬧鐘

    這篇文章主要為大家詳細(xì)介紹了Android如何在App中啟動(dòng)系統(tǒng)鬧鐘,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Android布局技巧之合并布局

    Android布局技巧之合并布局

    這篇文章主要為大家詳細(xì)介紹了Android布局技巧之合并布局,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Android 桌面Widget開(kāi)發(fā)要點(diǎn)解析(時(shí)間日期Widget)

    Android 桌面Widget開(kāi)發(fā)要點(diǎn)解析(時(shí)間日期Widget)

    總的來(lái)說(shuō),widget主要功能就是顯示一些信息。我們今天編寫(xiě)一個(gè)很簡(jiǎn)單的作為widget,顯示時(shí)間、日期、星期幾等信息。需要顯示時(shí)間信息,那就需要實(shí)時(shí)更新,一秒或者一分鐘更新一次
    2013-07-07
  • Android編程實(shí)現(xiàn)獲得手機(jī)屏幕真實(shí)寬高的方法

    Android編程實(shí)現(xiàn)獲得手機(jī)屏幕真實(shí)寬高的方法

    這篇文章主要介紹了Android編程實(shí)現(xiàn)獲得手機(jī)屏幕真實(shí)寬高的方法,以兩個(gè)實(shí)例形式分析了獲取手機(jī)屏幕信息的相關(guān)技巧,需要的朋友可以參考下
    2015-10-10
  • 詳解LeakCanary分析內(nèi)存泄露如何實(shí)現(xiàn)

    詳解LeakCanary分析內(nèi)存泄露如何實(shí)現(xiàn)

    這篇文章主要為大家介紹了詳解LeakCanary分析內(nèi)存泄露如何實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12

最新評(píng)論

湄潭县| 商都县| 若尔盖县| 大同县| 桐庐县| 吴忠市| 廉江市| 平凉市| 安达市| 东宁县| 商丘市| 彭水| 昌邑市| 汉川市| 衡阳县| 镇江市| 潞城市| 广平县| 隆尧县| 甘谷县| 和田县| 顺义区| 盐边县| 禹城市| 天气| 宾阳县| 靖宇县| 剑川县| 丹棱县| 沈阳市| 广南县| 云梦县| 喀喇沁旗| 曲水县| 固原市| 汤阴县| 昌黎县| 东乌珠穆沁旗| 梓潼县| 玉龙| 武城县|