您好,登錄后才能下訂單哦!
在Android中,為Button添加觸摸反饋動畫可以提高用戶體驗
使用StateListAnimator
實現點擊態:
在res/anim
目錄下創建一個名為button_state_list_animator.xml
的文件,內容如下:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:duration="300"
android:fromAlpha="0.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:toAlpha="1.0" />
<scale
android:duration="300"
android:fromXScale="0.8"
android:fromYScale="0.8"
android:interpolator="@android:anim/accelerate_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="1.0"
android:toYScale="1.0" />
</set>
然后在Button的XML布局文件中添加android:stateListAnimator
屬性:
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click me"
android:stateListAnimator="@anim/button_state_list_animator" />
注意:為了在Android 6.0(API 23)及以上版本中正常使用StateListAnimator
,需要在項目中啟用AnimatedStateListDrawableCompat
庫。在build.gradle
文件中添加以下依賴:
implementation 'androidx.core:core-ktx:1.7.0'
使用MaterialButton
替換Button
:
MaterialButton
內置了觸摸反饋動畫效果,可以直接在XML布局文件中使用:
<com.google.android.material.button.MaterialButton
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click me"
app:icon="@drawable/ic_your_icon"
app:backgroundTint="@color/your_background_tint" />
使用RippleDrawable
實現觸摸反饋:
在Button的XML布局文件中添加android:background
屬性,并設置為@drawable/button_ripple
:
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click me"
android:background="@drawable/button_ripple" />
然后在res/drawable
目錄下創建一個名為button_ripple.xml
的文件,內容如下:
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?attr/colorControlHighlight">
<item android:id="@android:id/mask">
<color android:color="#fff" />
</item>
</ripple>
通過以上方法,可以為Android Button添加觸摸反饋動畫,提高用戶體驗。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。