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

I solved the problem by calling the animate method of the parent view of the ImageButton like this:

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