如何實現水波紋的自定義

2021-12-30 05:47:01 字數 841 閱讀 4967

****android 水波紋 (ripple)****在android 5.0之後,系統會自動設定水波紋效果,但是顏色是固定的,而且只要給按鈕設定了背景顏色後,水波紋效果就沒有了。

怎樣可以給自己的按鈕新增想要的背景,想要的水波紋,和自定義水波紋的顏色呢?

首先建立我們正常的select檔案:

然後呢 ,我們在res 資料夾下建立乙個drawable-v21,在裡面建立相同的xml檔案,然後修改裡面的內容為如下。

ps:ripple節點只能在 android5.0以後才能使用

最終達到的效果如下圖:

第乙個是我加了水波紋並且自定義顏色後的 第二個是普通的沒有定義 的(無水波紋效果的) 第三個是預設沒有新增背景的,系統預設新增的水波紋效果但是,由於只有button會預設設定效果,像listview,recylerview之類的控制項的select想要實現這樣的效果,很簡單,在listview的item布局裡的根布局設定background值為如下即可。

— 系統預設的效果分兩種,一種有邊界,一種無邊界。

有邊界android:background="@android:attr/selectableitembackground"

無邊界的

android:background="@android:attr/selectableitembackgroundborderless"

水波紋的 效果到這裡就結束了,如果在android5.0以前想要實現水波紋的效果,就要去github上面去使用第三方庫了,一般是使用乙個自定義view去包裹控制項,這裡就不再多講。

自定義view實現水波紋效果

參考csdn大神 啟艦的部落格自己實現了一遍,碰到的坑有2個 1 記得呼叫mpath.reset 否則每次的path內容會疊加在一起,就會充滿整個view 不再出現水波紋效果 2 中的呼叫貝塞爾曲線的引數原理要弄明白 其實每次呼叫ondraw 方法時,呼叫了mpath.moveto x,y 關鍵需要...

OC實現水波紋動畫

用oc原生的貝塞爾曲線來實現該效果,下面直接上 void showwatterrippleanimation void addanimationview 將目標曲線做放大動畫 void addanimationwithshapelayer cashapelayer layer delay cgflo...

水波紋進度條實現

android自定義view 實現水波紋效果類似剩餘流量球 水波示意圖 水波形狀,使用貝塞爾曲線。如上圖所示,y軸為控制項左邊界,在左邊界多繪製乙個週期。這個週期是水波x方向上的移動範圍。每次進度增加的時候,繪製起始點在x右方向上移動一小段距離,隨著進度不斷增加,水波不斷向前移動。繪製起始點x座標計...