动画 -- 按钮 -- 左右晃动
1 import android.view.animation.Animation;
2 import android.view.animation.Transformation;
3
4 public class CustomAnim extends Animation {
5
6 @Override // 获取目标对象的宽高和容器的宽高。
7 public void initialize(int width, int height, int parentWidth,
8 int parentHeight) {
9
10 super.initialize(width, height, parentWidth, parentHeight);
11 }
12
13 @Override
14 protected void applyTransformation(float interpolatedTime, Transformation t) {
15 // interpolatedTime 从0到1,等动画执行完毕后就会变成1。t 变化对象。
16 // System.out.println(interpolatedTime);
17 // t.setAlpha(interpolatedTime);
18 // interpolatedTime 补间动画
19 // t.getMatrix().setTranslate(200*interpolatedTime, 200*interpolatedTime);
20 // 左右摇摆动画(*20运动速度周期 *50表示左右摇摆幅度增大。)
21 t.getMatrix().setTranslate((float) (Math.sin(interpolatedTime*20)*50), 0);
22
23 super.applyTransformation(interpolatedTime, t);
24 }
25
26 }
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
public class MainActivity extends Activity {
private CustomAnim ca;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ca = new CustomAnim();
ca.setDuration(1000);
findViewById(R.id.btnAnimMe).setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View arg0) {
arg0.startAnimation(ca);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}