在最近的Android DevBytes video中,我们解释了如何使用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
所以也许这就是为什么它不起作用?知道我应该在这做什么吗?
注意:将XML中的android:background
更改为我自己的图像可以正常工作。
答案 0 :(得分:2)
我通过调用ImageButton
的父视图的animate方法解决了这个问题:
((View)imageButtonView.getParent()).animate().setInterpolator(sDecelerator).
scaleX(.7f).scaleY(.7f);