Android中Item實(shí)現(xiàn)點(diǎn)擊水波紋效果
前言
水波紋效果大致上可以分為兩類,一類是有界水波紋,而另一類是無(wú)界水波紋,較為廣泛使用的是有界水波紋。
系統(tǒng)自帶的水波紋實(shí)現(xiàn)
系統(tǒng)自帶的方法非常方便,只需要給相應(yīng)的空間設(shè)置背景,背景內(nèi)容則為系統(tǒng)自帶的 selectableItemBackground ,這樣的話,水波紋就會(huì)在TextView所在的區(qū)域內(nèi)進(jìn)行繪制。
<TextView android:background="?android:attr/selectableItemBackground" ... />
先上效果圖
ripple的使用(需要V21以上)
<ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/dark_blue"> <item android:drawable="@color/blue"/> </ripple>
其中item的顏色是控件正常狀態(tài)的背景色,ripple中的顏色是點(diǎn)擊時(shí)出現(xiàn)的顏色(會(huì)以半透明的形式展示出來(lái))。ripple顏色的變化效果要比selector的效果更加柔和,以漸變的形式出現(xiàn)。
<ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/dark_blue"> <item android:id="@android:id/mask" android:drawable="@drawable/ic_launcher_foreground"/> </ripple>
mask的作用:只能在規(guī)定范圍內(nèi)顯示水波動(dòng)畫,范圍邊界由mask遮罩對(duì)象指定(可以換一些比原有背景小的圖片資源,可以看出效果)。
將ripple文件設(shè)置為控件的背景色就可以了。對(duì)于沒有設(shè)置點(diǎn)擊事件的控件,是沒有變化效果的。需要為控件設(shè)置 android:clickable="true"
<TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/main_item_tv" android:layout_width="match_parent" android:layout_height="50dp" android:clickable="true" android:background="@drawable/item_blue_selector" android:gravity="center" android:textSize="17sp" />
對(duì)于低版本來(lái)說(shuō),我還是選擇selector作為適配方案。截止到現(xiàn)在,21及以上版本已經(jīng)覆蓋了90%的設(shè)備。
foreground設(shè)置
現(xiàn)在的點(diǎn)擊水波紋效果只有在抬起手指的時(shí)候才能看到,不符合一些項(xiàng)目的需求。
其實(shí)在控件除了設(shè)置background,還可以設(shè)置foreground。
android:foreground="?attr/selectableItemBackgroundBorderless"
在控件上加上這一句就可以看到你們想要的效果了。selectableItemBackgroundBorderless是系統(tǒng)提供的可以一個(gè)半透明灰色水波效果,在按住控件時(shí),即可展示。(如果不需要提前變藍(lán)的效果,設(shè)置純藍(lán)色背景即可。)
我有一壺酒,足以慰風(fēng)塵。盡傾江海里,贈(zèng)飲天下人。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
- Android實(shí)現(xiàn)水波紋擴(kuò)散效果
- Android實(shí)現(xiàn)水波紋特效
- Android自定義控件實(shí)現(xiàn)水波紋效果
- Android水波紋載入控件CircleWaterWaveView使用詳解
- android自定義WaveView水波紋控件
- Android實(shí)現(xiàn)點(diǎn)擊Button產(chǎn)生水波紋效果
- Android特效之水波紋的實(shí)現(xiàn)
- Android項(xiàng)目實(shí)戰(zhàn)手把手教你畫圓形水波紋loadingview
- Android仿水波紋流量球進(jìn)度條控制器
- Android 5.0 實(shí)現(xiàn)水波擴(kuò)散效果
相關(guān)文章
Android實(shí)現(xiàn)登陸頁(yè)logo隨鍵盤收放動(dòng)態(tài)伸縮(完美解決鍵盤彈出遮擋控件的問(wèn)題)
這篇文章主要介紹了Android實(shí)現(xiàn)登陸頁(yè)logo隨鍵盤收放動(dòng)態(tài)伸縮(完美解決鍵盤彈出遮擋控件的問(wèn)題)的相關(guān)資料,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09Android 使用Vitamio打造自己的萬(wàn)能播放器(6)——在線播放(播放列表)
本文主要介紹Android Vitamino在線播放列表,這里給大家提供效果圖和實(shí)例代碼以便大家參考學(xué)習(xí),希望能幫助開發(fā)Android視頻播放的朋友2016-07-07Android源碼導(dǎo)入AndroidStudio或IntelliJ?IDEA的方法
這篇文章主要介紹了Android源碼導(dǎo)入AndroidStudio或IntelliJ?IDEA的方法,用idegen來(lái)生成針對(duì)AndroidStudio或IntelliJ?IDEA的Android系統(tǒng)源代碼工程配置文件,需要的朋友可以參考下2022-08-08Android調(diào)用系統(tǒng)裁剪的實(shí)現(xiàn)方法
下面小編就為大家分享一篇Android調(diào)用系統(tǒng)裁剪的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-02-02Android Okhttp斷點(diǎn)續(xù)傳面試深入解析
這篇文章主要給大家介紹了關(guān)于Android Okhttp斷點(diǎn)續(xù)傳面試的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Android具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06使用Fragment來(lái)處理Andoird app的UI布局的實(shí)例分享
這篇文章主要介紹了使用Fragment來(lái)處理Andoird appUI布局的實(shí)例分享,Fragment的出現(xiàn)緩解了代碼依賴于Activity而造成的臃腫狀況,需要的朋友可以參考下2016-02-02Android開發(fā)之ViewSwitcher用法實(shí)例
這篇文章主要介紹了Android開發(fā)之ViewSwitcher用法,結(jié)合實(shí)例形式分析了ViewSwitcher的功能、使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2016-02-02