其实很简单,只需要一个动画即可
/**
* 晃动动画
* @param counts 规定时间内晃动多少下
* @return
*/
public static Animation shakeAnimation(int counts){
Animation translateAnimation = new TranslateAnimation(0, 10, 0, 0);
translateAnimation.setInterpolator(new CycleInterpolator(counts));
translateAnimation.setDuration(500);
return translateAnimation;
}
在需要该抖动效果的地方,使用View的startAnimation();方法即可,如
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_zxing_demo);
edit = (EditText) findViewById(R.id.edit);
image = (ImageView) findViewById(R.id.image);
}
/**
* 晃动动画
* @param counts 规定时间内晃动多少下
* @return
*/
public static Animation shakeAnimation(int counts){
Animation translateAnimation = new TranslateAnimation(0, 10, 0, 0);
translateAnimation.setInterpolator(new CycleInterpolator(counts));
translateAnimation.setDuration(500);
return translateAnimation;
}
public void produce(View view) {
edit.startAnimation(shakeAnimation(10));
image.startAnimation(shakeAnimation(10));
}
...
translateAnimation.setInterpolator(new CycleInterpolator(counts));
设置Interpolator为CycleInterpolator,即正弦函数动画.
可以在抖动的时候加上震动,效果估计更逼真