/**
* 左右搖擺動畫類
*?
*/
public class CustomRotateAnimextends Animation {
/**
* 控件寬
*/
? ? private int mWidth;
/**
* 控件高
*/
? ? private int mHeight;
/**
* 實例
*/
? ? private static CustomRotateAnimrotateAnim;
/**
* 獲取動畫實例
*
? ? * @return 實例
*/
? ? public static CustomRotateAnim getCustomRotateAnim() {
if (null ==rotateAnim) {
rotateAnim =new CustomRotateAnim();
}
return rotateAnim;
}
/**
? ? * @param width? ? ? ? 控件的寬
? ? * @param height? ? ? 控件的高
? ? * @param parentWidth
? ? * @param parentHeight
? ? */
? ? @Override
? ? public void initialize(int width,int height,int parentWidth,int parentHeight) {
this.mWidth = width;
this.mHeight = height;
super.initialize(width, height, parentWidth, parentHeight);
}
@Override
? ? protected void applyTransformation(float interpolatedTime, Transformation t) {
// 左右搖擺
//? ? ? ? 獲取矩陣
? ? ? ? Matrix matrix = t.getMatrix();
//? ? ? ? 設(shè)置旋轉(zhuǎn)
/**
* 參數(shù)一:旋轉(zhuǎn)度數(shù)
* 參數(shù)二:X旋轉(zhuǎn)度數(shù)
* 參數(shù)三:Y旋轉(zhuǎn)度數(shù)
*
*/
? ? ? ? matrix.setRotate((float) (Math.sin(interpolatedTime * Math.PI *2) *40),mWidth /3,mHeight /2);
super.applyTransformation(interpolatedTime, t);
}
}
//我在activity的onResume()方法里加載動畫
@Override
protected void onResume() {
super.onResume();
mThread =new Thread(new Runnable() {
@Override
? ? ? ? public void run() {
try {
for (; ; ) {
Thread.sleep(4000);
runOnUiThread(new Runnable() {
@Override
? ? ? ? ? ? ? ? ? ? ? ? public void run() {
showAnimation();
}
});
}
}catch (InterruptedException e) {
e.printStackTrace();
}
}
});
mThread.start();
}
// 項目中的效果
private void showAnimation() {
// 獲取自定義動畫實例
? ? CustomRotateAnim rotateAnim = CustomRotateAnim.getCustomRotateAnim();
// 一次動畫執(zhí)行1秒
? ? rotateAnim.setDuration(450);
// 設(shè)置為循環(huán)播放
? ? rotateAnim.setRepeatCount(Animation.RESTART);
// 設(shè)置為勻速
? ? rotateAnim.setInterpolator(new LinearInterpolator());
// 開始播放動畫
? ? img_money.startAnimation(rotateAnim);
}