android Material主題中的button效果
阿新 • • 發佈:2019-01-29
在android5.0新增了ripple的效果,他可以運用到Button,ImageButton,TextView,以及一些佈局容器。
首先,我們看android:Theme.Material.Light主題中設定的各種ripple效果屬性的預設值:
1.<item name="selectableItemBackground">@drawable/item_background_material</item> 2.<item name="selectableItemBackgroundBorderless">@drawable/item_background_borderless_material</item> 3.<item name="borderlessButtonStyle">@style/Widget.Material.Light.Button.Borderless</item> 4.<item name="buttonBarButtonStyle">@style/Widget.Material.Light.Button.ButtonBar.AlertDialog</item>
selectableItemBackground在drawable檔案中檔案內容為:有邊界的效果
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?attr/colorControlHighlight">
<item android:id="@id/mask">
<color android:color="@color/white" />
</item>
</ripple>
selectableItemBackgroundBorderless在drawable檔案中檔案內容為:無邊界的效果(需要api21以上)
<ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="?attr/colorControlHighlight" />
borderlessButtonStyle最後引用的style就是如下:
<!-- Borderless ink button -->
<style name="Widget.Material.Button.Borderless">
<item name="background">@drawable/btn_borderless_material</item>
<item name="stateListAnimator">@null</item>
</style>
他實際上就是設定了background的屬性:
<ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="?attr/colorControlHighlight"> <item android:id="@id/mask" android:drawable="@drawable/btn_default_mtrl_shape" /> </ripple>
buttonBarButtonStyle實際上也是呼叫了borderlessButtonStyle的style,就是也是呼叫了相同的background:
<!-- Borderless ink button -->
<style name="Widget.Material.Button.Borderless">
<item name="background">@drawable/btn_borderless_material</item>
<item name="stateListAnimator">@null</item>
</style>
<!-- Colored borderless ink button -->
<style name="Widget.Material.Button.Borderless.Colored">
<item name="textColor">?attr/colorAccent</item>
<item name="stateListAnimator">@anim/disabled_anim_material</item>
</style>
前兩種在xml中設定background即可,如:
android:background="?android:selectableItemBackground"
前兩種在xml中設定style即可,如:
style="?android:buttonBarButtonStyle"