亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

android statelistdrawable如何實現動畫效果

小樊
83
2024-08-27 19:23:30
欄目: 編程語言

在Android中,StateListDrawable本身不支持動畫效果。但是,你可以使用TransitionDrawableAnimationDrawable結合StateListDrawable來實現動畫效果。

這里是一個簡單的例子,展示了如何使用TransitionDrawableAnimationDrawable實現動畫效果:

  1. 首先,創建一個transition.xml文件,放在res/drawable目錄下。這個文件將定義兩個狀態之間的過渡動畫。
<?xml version="1.0" encoding="utf-8"?><transition xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 第一個狀態的圖片 -->
    <item android:drawable="@drawable/state1" />
    <!-- 第二個狀態的圖片 -->
    <item android:drawable="@drawable/state2" />
</transition>
  1. 創建一個animation.xml文件,放在res/anim目錄下。這個文件將定義動畫的持續時間和插值器。
<?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" />
</set>
  1. 在你的代碼中,設置StateListDrawable并添加狀態。然后,為每個狀態設置TransitionDrawable
// 獲取TransitionDrawable
TransitionDrawable transitionDrawable = (TransitionDrawable) getResources().getDrawable(R.drawable.transition);

// 創建StateListDrawable
StateListDrawable stateListDrawable = new StateListDrawable();

// 為按下狀態設置TransitionDrawable
stateListDrawable.addState(new int[]{android.R.attr.state_pressed}, transitionDrawable);

// 為默認狀態設置另一個Drawable
stateListDrawable.addState(new int[]{}, getResources().getDrawable(R.drawable.default_state));

// 設置按鈕的背景
button.setBackground(stateListDrawable);
  1. 當按鈕被按下時,開始動畫。
button.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                // 開始過渡動畫
                transitionDrawable.startTransition(300);
                break;
            case MotionEvent.ACTION_UP:
                // 結束過渡動畫
                transitionDrawable.reverseTransition(300);
                break;
        }
        return false;
    }
});

這樣,當按鈕被按下時,TransitionDrawable會根據animation.xml中定義的動畫效果在兩個狀態之間進行過渡。

0
新乐市| 广汉市| 宜州市| 西贡区| 临汾市| 广西| 宁南县| 阳谷县| 达孜县| 宜州市| 巴彦县| 姜堰市| 尉犁县| 寿阳县| 临清市| 焦作市| 宣威市| 曲阳县| 武穴市| 抚松县| 余江县| 黄浦区| 余干县| 腾冲县| 安多县| 许昌市| 山东省| 肃北| 衡东县| 丽水市| 获嘉县| 循化| 漳浦县| 新晃| 蒙城县| 平定县| 剑阁县| 沧源| 福安市| 株洲县| 黄大仙区|