RecyclerView item按下變色效果+水波紋效果

相信你們確定有過這樣的需求,給recyclerview的條目設置按下變色或者水波紋效果android

1. 水波紋效果實現
1)系統效果less

系統有界效果
在API 21以上使用,纔有波紋效果;API 21如下使用只有變色效果,沒有波紋效果
android:background="?android:attr/selectableItemBackground"
系統無界效果
在API 21以上才能使用,API 21如下會報錯沒法編譯,最小版本要設置爲minSdkVersion 21
android:background="?android:attr/selectableItemBackgroundBorderless"
2)自定義效果
在drawable文件夾下新建 bg_change.xml 文件用於實現波紋效果。(僅限Android 5.0以上機型)ide

自定義有界效果
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
        android:color="@color/gray"> <!--波紋顏色-->
      <item>
        <shape android:shape="rectangle">
            <!-- 填充背景色-->
            <solid android:color="@color/white"/>
        </shape>
    </item>
</ripple>
自定義無界效果
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
        android:color="@color/gray"> <!--波紋顏色-->   
</ripple>
自定義帶圖片效果
<?xml version="1.0" encoding="utf-8"?>  
<ripple xmlns:android="http://schemas.android.com/apk/res/android" 
        android:color="@color/gray">    <!--波紋顏色-->   
   <item>
        <selector>
             <!-- 未點擊背景圖-->
            <item
                android:drawable="@drawable/normal_bg"
                android:state_pressed="false" />
             <!-- 點擊背景圖-->
            <item
                android:drawable="@drawable/select_bg"
                android:state_pressed="true" />
        </selector>
    </item>
</ripple>
2. 按下變色效果
在drawable目錄下建立  bg_change.xml 文件佈局

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/white_color" android:state_pressed="false"/>
    <item android:drawable="@color/red_color" android:state_pressed="true" />
</selector>
 
// android:drawable 可設置顏色跟圖片
//android:state_pressed="true"  表明按下
3. 在佈局中使用:
//設置背景
 
android:background="@drawable/bg_change"
可是有時候你會發現不管你怎麼設置都不起做用,
本文的關鍵點:   設置條目的點擊事件
本文的關鍵點:   設置條目的點擊事件
本文的關鍵點:   設置條目的點擊事件
   holder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                     Toast.makeText(holder.itemView.getContext(),"點擊了", Toast.LENGTH_SHORT).show();
                }
            });.net

 


到此你會發現按下效果已經出現了orm

 
————————————————
版權聲明:本文爲CSDN博主「水樣_年華」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接及本聲明。
原文連接:https://blog.csdn.net/q714093365/article/details/77054080xml

相關文章
相關標籤/搜索