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

Android實現(xiàn)一個簡單帶動畫的展開收起功能

 更新時間:2023年08月31日 09:50:31   作者:似曾相識2022  
今天給大家?guī)硪粋€展開和收起的簡單效果,如果只是代碼中簡單設(shè)置顯示或隱藏,熟悉安卓系統(tǒng)的朋友都知道,那一定是閃現(xiàn),所以筆者結(jié)合了動畫,使得體驗效果瞬間提升一個檔次,感興趣的小伙伴可以自己動手試一試

今天給大家?guī)硪粋€展開和收起的簡單效果。如果只是代碼中簡單設(shè)置顯示或隱藏,熟悉安卓系統(tǒng)的朋友都知道,那一定是閃現(xiàn)。所以筆者結(jié)合了動畫,使得體驗效果瞬間提升一個檔次。話不多說,直接上效果:

首先觀察圖中效果,視圖有展開和折疊兩種狀態(tài),右側(cè)圖標(biāo)和文字會跟隨這個狀態(tài)改變。那么其中就有折疊的高度和展開的高度需要我們記錄。折疊高度是固定的,展開高度需要動態(tài)獲取。需要注意的是不能直接通過視圖直接獲取高度,因為視圖的繪制和Activity的生命周期是不同步的,這里直接用簡單的post方式獲取到繪制完成的總高度。

lin?.post {
    val h = lin!!.height
    hight = if (h > 0) h else baseHight
    if (h > 0 && ivTop?.visibility == View.GONE) {
        ivTop?.visibility = View.VISIBLE
    }
}

接下來就是動畫的使用和動態(tài)控制視圖的高度了。這里需要用到屬性動畫,由于我們要控制的視圖不止一個,所以還是使用ValueAnimator方便點。通過addUpdateListener添加監(jiān)聽后,animation.animatedValue就是我們需要的當(dāng)前值。在此處不停將當(dāng)前高度賦值給視圖,并且圖標(biāo)也根據(jù)這個值進行等比例的旋轉(zhuǎn)以到達到視圖不停更新。

//根據(jù)展開、關(guān)閉狀態(tài)傳入對應(yīng)高度
val animator = ValueAnimator.ofInt(
    if (isExpand) hight - baseHight else 0,
    if (isExpand) 0 else hight - baseHight
)
animator.addUpdateListener { animation ->
    val params = lin?.layoutParams
    params?.height = if ((animation.animatedValue as Int) < baseHight) baseHight else (animation.animatedValue as Int) //當(dāng)高度小于基礎(chǔ)高度時 給與基礎(chǔ)高度
    lin?.layoutParams = params//拿到當(dāng)前高度
    //圖標(biāo)旋轉(zhuǎn)
    ivTop?.rotation = (animation.animatedValue as Int) * 180f / (hight - baseHight)
}
animator.duration = 500
animator.start()
isExpand = !isExpand
tvExpand?.text = if (isExpand) "關(guān)閉" else "展開"

好了,一個簡單的展開收起功能就實現(xiàn)了,希望對大家有所幫助。

到此這篇關(guān)于Android實現(xiàn)一個簡單帶動畫的展開收起功能的文章就介紹到這了,更多相關(guān)Android展開收起功能內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Material Design系列之Behavior上滑顯示返回頂部按鈕

    Material Design系列之Behavior上滑顯示返回頂部按鈕

    這篇文章主要為大家詳細介紹了Material Design系列之Behavior上滑顯示返回頂部按鈕的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Flutter Dio二次封裝的實現(xiàn)

    Flutter Dio二次封裝的實現(xiàn)

    這篇文章主要介紹了Flutter Dio二次封裝的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • Android Retrofit文件下載進度顯示問題的解決方法

    Android Retrofit文件下載進度顯示問題的解決方法

    這篇文章主要為大家詳細介紹了Android Retrofit文件下載進度顯示問題的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • 詳解Android首選項框架的使用實例

    詳解Android首選項框架的使用實例

    首選項這個名詞對于熟悉Android的朋友們一定不會感到陌生,它經(jīng)常用來設(shè)置軟件的運行參數(shù)。本篇文章主要介紹詳解Android首選項框架的使用實例,有興趣的可以了解一下。
    2016-11-11
  • Android Studio使用USB真機調(diào)試詳解

    Android Studio使用USB真機調(diào)試詳解

    這篇文章主要為大家詳細介紹了Android Studio使用USB真機調(diào)試的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Android打開圖庫選擇照片功能代碼

    Android打開圖庫選擇照片功能代碼

    這篇文章主要介紹了Android打開圖庫選擇照片功能代碼以及實現(xiàn)流程分析,對此有需要的朋友參考學(xué)習(xí)下吧。
    2018-02-02
  • XRecyclerView實現(xiàn)下拉刷新、滾動到底部加載更多等功能

    XRecyclerView實現(xiàn)下拉刷新、滾動到底部加載更多等功能

    這篇文章主要為大家詳細介紹了XRecyclerView實現(xiàn)下拉刷新、滾動到底部加載更多等功能,以及添加header功能的RecyclerView,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Android掛斷電話最新實現(xiàn)方法

    Android掛斷電話最新實現(xiàn)方法

    大家好,本篇文章主要講的是Android掛斷電話最新實現(xiàn)方法,感興趣的同學(xué)感快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • Android入門之Style與Theme用法實例解析

    Android入門之Style與Theme用法實例解析

    這篇文章主要介紹了Android入門之Style與Theme用法,非常實用的功能,需要的朋友可以參考下
    2014-08-08
  • Android應(yīng)用獲取設(shè)備序列號的方法

    Android應(yīng)用獲取設(shè)備序列號的方法

    本篇文章主要介紹了Android應(yīng)用獲取設(shè)備序列號的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06

最新評論

新疆| 定西市| 衡水市| 平远县| 科技| 亚东县| 资中县| 日照市| 建瓯市| 松原市| 新营市| 襄城县| 乌什县| 平阴县| 沙湾县| 焦作市| 塘沽区| 徐州市| 惠州市| 普兰店市| 昌黎县| 德阳市| 皋兰县| 开封县| 清水河县| 云和县| 郓城县| 贞丰县| 九龙坡区| 留坝县| 定襄县| 连江县| 南江县| 丹江口市| 静宁县| 彭阳县| 宁化县| 临漳县| 泽普县| 英超| 泸水县|