使按钮动画不超过可绘制背景
Make button animation not go over drawable background
Top button: Not pressed, bottom button pressed
如何使 "default" 按钮上的块动画单击 android 以适应设置的可绘制背景?可绘制背景为按钮提供了圆角。
编辑:ripple.xml 有效,但覆盖了按钮文本。
按钮:
<Button
android:id="@+id/about"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:textSize="20sp"
android:text="test123"
android:padding="5dip"
android:textAllCaps="false"
android:textColor="@color/settings"
android:foreground="@drawable/ripple"
/>
可绘制setting_button
<?xml version="1.0" encoding="utf-8"?>
<!-- res/drawable/rounded_edittext.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
<solid android:color="@color/colorWhite"/>
<corners
android:bottomRightRadius="15dp"
android:bottomLeftRadius="15dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp"/>
</shape>
Ripple.xml
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:attr/colorControlHighlight">
<item android:id="@android:id/mask">
<shape android:shape="rectangle">
<solid android:color="#000000" />
<corners
android:bottomRightRadius="15dp"
android:bottomLeftRadius="15dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp"/>
</shape>
</item>
<item android:drawable="@drawable/setting_button" />
</ripple>
解决办法就在于RippleDrawable的特殊mask层。您可以通过将 android:id 值设置为 @android:id/mask 来指定遮罩层。
https://proandroiddev.com/rippling-rounding-and-android-pies-d5db5f4c2fc1
http://michaelevans.org/blog/2015/05/07/android-ripples-with-rounded-corners/
<Button
android:id="@+id/about"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:background="@drawable/setting_button"
android:foreground="@drawable/ripple"
android:padding="5dip"
android:text="test123"
android:textAllCaps="false"
android:textColor="@color/settings"
android:textSize="20sp" />
并从波纹可绘制对象中删除 <item android:drawable="@drawable/setting_button" />
:
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:attr/colorControlHighlight">
<item android:id="@android:id/mask">
<shape android:shape="rectangle">
<solid android:color="#000000" />
<corners
android:bottomLeftRadius="15dp"
android:bottomRightRadius="15dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp" />
</shape>
</item>
Top button: Not pressed, bottom button pressed
如何使 "default" 按钮上的块动画单击 android 以适应设置的可绘制背景?可绘制背景为按钮提供了圆角。
编辑:ripple.xml 有效,但覆盖了按钮文本。
按钮:
<Button
android:id="@+id/about"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:textSize="20sp"
android:text="test123"
android:padding="5dip"
android:textAllCaps="false"
android:textColor="@color/settings"
android:foreground="@drawable/ripple"
/>
可绘制setting_button
<?xml version="1.0" encoding="utf-8"?>
<!-- res/drawable/rounded_edittext.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
<solid android:color="@color/colorWhite"/>
<corners
android:bottomRightRadius="15dp"
android:bottomLeftRadius="15dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp"/>
</shape>
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:attr/colorControlHighlight">
<item android:id="@android:id/mask">
<shape android:shape="rectangle">
<solid android:color="#000000" />
<corners
android:bottomRightRadius="15dp"
android:bottomLeftRadius="15dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp"/>
</shape>
</item>
<item android:drawable="@drawable/setting_button" />
</ripple>
解决办法就在于RippleDrawable的特殊mask层。您可以通过将 android:id 值设置为 @android:id/mask 来指定遮罩层。 https://proandroiddev.com/rippling-rounding-and-android-pies-d5db5f4c2fc1 http://michaelevans.org/blog/2015/05/07/android-ripples-with-rounded-corners/
<Button
android:id="@+id/about"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:background="@drawable/setting_button"
android:foreground="@drawable/ripple"
android:padding="5dip"
android:text="test123"
android:textAllCaps="false"
android:textColor="@color/settings"
android:textSize="20sp" />
并从波纹可绘制对象中删除 <item android:drawable="@drawable/setting_button" />
:
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:attr/colorControlHighlight">
<item android:id="@android:id/mask">
<shape android:shape="rectangle">
<solid android:color="#000000" />
<corners
android:bottomLeftRadius="15dp"
android:bottomRightRadius="15dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp" />
</shape>
</item>