91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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
琼海市| 开封县| 本溪市| 大英县| 宜阳县| 永修县| 牙克石市| 甘孜| 图片| 广汉市| 壤塘县| 舞阳县| 朝阳区| 绥阳县| 保德县| 汉源县| 海安县| 得荣县| 体育| 鄄城县| 浦县| 石屏县| 华坪县| 平塘县| 武山县| 木兰县| 依兰县| 晋城| 杭锦旗| 临江市| 宁蒗| 盐边县| 龙南县| 滦平县| 赫章县| 太湖县| 城步| 泌阳县| 通州区| 沈丘县| 泰兴市|