1

最近の Android DevBytes ビデオでは、ボタンを使用してアニメーション化する方法Interpolatorsと、ボタンをView.animate()より漫画的に見せる方法について説明されていました。

以下のコード:

public class LiveButton extends Activity {

    DecelerateInterpolator sDecelerator = new DecelerateInterpolator();
    OvershootInterpolator sOvershooter = new OvershootInterpolator(10f);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_overshoot);

        final Button clickMeButton = (Button) findViewById(R.id.clickMe);
        clickMeButton.animate().setDuration(200);

        clickMeButton.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View arg0, MotionEvent arg1) {
                if (arg1.getAction() == MotionEvent.ACTION_DOWN) {
                    clickMeButton.animate().setInterpolator(sDecelerator).
                            scaleX(.7f).scaleY(.7f);
                } else if (arg1.getAction() == MotionEvent.ACTION_UP) {
                    clickMeButton.animate().setInterpolator(sOvershooter).
                            scaleX(1f).scaleY(1f);
                }
                return false;
            }
        });

    }
}

ImageButtonだから私自身のアプリでは、うまく動作する でこれをやってみました。しかし、デフォルトのボタンの背景を自分の画像に変更すると、効果が失われます。

私はこのような背景を変更しますImageButton:

view.setBackgroundResource(resID);

android:srcこれは ではなく を変更すると思うandroid:backgroundので、おそらくそれが機能していないのですか?ここで何をすべきか考えていますか?

注:android:background内部の XML を自分のイメージに変更すると動作します。

4

1 に答える 1

2

このような親ビューのanimateメソッドを呼び出すことで問題を解決しましたImageButton

((View)imageButtonView.getParent()).animate().setInterpolator(sDecelerator).
                                scaleX(.7f).scaleY(.7f);
于 2013-08-10T20:48:56.950 に答える