Android UI效果篇- Ripple


內容簡介

記錄5.0以后的Ripple(波紋效果)的使用.

  • 1.為什么要使用Ripple
  • 2.如何使用Ripple效果
  • 3.Ripple效果的顏色值改變
  • 4.Ripple的波紋范圍改變
  • 5.Ripple添加一個item,其id為@android:id/mask

1.為什么要使用Ripple

  • 提高用戶體驗,更好的視覺效果反饋給用戶
  • 間接增加了用戶在應用停留的時間

2.如何使用Ripple效果

~
在5.0的機型上,button會自帶有Ripple點擊效果。但是往往開發者需要修改點擊效果,從而修改android:backgroud,這時候Ripple效果就會改變。所以使用Ripple的關鍵就在android:backgroud中設置。

點擊效果主要分為2類:

  • 有邊界波紋
    XMLCode:
android:background="?android:attr/selectableItemBackground"

點擊效果

有邊界波紋

  • 超出邊界波紋(圓形)
    XMLCode:
android:background="?android:attr/selectableItemBackgroundBorderless"

點擊效果:

超出邊界波紋

注意:

  • 超出邊界波紋,API要求21以上
  • 如果點擊效果沒有,很可能是該控件本身點擊沒開啟,設置如下屬性即可
android:clickable="true"

3.Ripple效果的顏色值改變

~
現在很多APP都有自己的主題顏色,而Ripple效果的顏色如果還是默認的灰色,這樣會不會顯得格格不入。現在我們就來修改下Ripple效果的顏色。

設置ripple標簽的drawable

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"        
android:color="?android:colorPrimaryDark">
</ripple>

點擊效果

改變顏色的Ripple

注意
顏色可能有遮蓋的情況,效果不是很理想

4.Ripple的波紋范圍改變

~
從上面我們知道,除了超出邊界模式,還有一種是有邊界限制的。既然要限制邊界,我們就需要給他提供一個范圍,即添加一個item標簽。

  • 顏色做為Mask
    XMLCode:
<ripple xmlns:android="http://schemas.android.com/apk/res/android"        
android:color="?android:colorPrimaryDark">    
    <item android:drawable="@color/colorAccent">
    </item>
</ripple>

點擊效果:

顏色做為Mask

  • 形狀做為Mask
    XMLCode:
<ripple xmlns:android="http://schemas.android.com/apk/res/android"        
android:color="?android:colorPrimaryDark">   
     <item >        
        <shape android:shape="oval">           
          <solid android:color="@color/colorAccent"></solid>        
       </shape>   
     </item>
</ripple>

點擊效果:

形狀做為Mask

  • 圖片做為Mask
    XMLCode:
<ripple xmlns:android="http://schemas.android.com/apk/res/android"        
android:color="?android:colorPrimaryDark">    
       <item         android:drawable="@drawable/ic_launcher">    
       </item>
</ripple>

點擊效果:

圖片做為Mask

注意
這里的圖片一定要顯示完整,不然會出現閃爍。


5.添加一個item,其id為@android:id/mask

對比上面的圖片做為Mask的例子,只是添加了一個id,代碼如下:

<ripple xmlns:android="http://schemas.android.com/apk/res/android"        
android:color="?android:colorPrimaryDark">    
       <item android:id="@android:id/mask"        android:drawable="@drawable/ic_launcher">    
       </item>
</ripple>

然而效果卻發生了改變:


圖片做為Mask

很明顯的看到一開始,圖片是隱藏的,即:

  • 如果不指定id為@android:id/mask,那么在顯示的時候會顯示出item指定的drawable。
  • 如果指定id為@android:id/mask,那么默認是不會顯示該drawable,而是在點擊的時候出現。

有邊界的水波紋,用mask優化減少一層繪制

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="?attr/colorControlHighlight">
    <item android:id="@android:id/mask">
        <color android:color="@android:color/white" />
    </item>
</ripple>

6.參考博文

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,523評論 25 708
  • 本文利用Docker實現mysql主從同步/讀寫分離,當然你也可以開兩臺虛擬機來搭建,方法都一樣。只是用Docke...
    茶藝瑤閱讀 1,061評論 2 0
  • 1 根據本質思考 q 手機成裝
    F北落師門閱讀 218評論 0 0
  • 你和我隔著堆著城市的積木 你與我離著長著房子的荒野 我已不是個孩兒 也沒有一匹白馬 便自此背向去遠行 踏壞了雨水 ...
    涼白唐閱讀 301評論 4 6
  • 銜著窗外轟轟烈烈大雨聲轉醒的喜,一盆一盆的花草也全搬去了窗臺淋雨——啊啊誤會,貓你怕水不要跟去,一起聽雨很好——人...
    郁致閱讀 285評論 0 1