這里給大家分享一個(gè)動(dòng)畫吧,用處挺多,代碼也不多,在一些程序中比較實(shí)用。
進(jìn)入正題,先看看效果
效果很炫酷很美好
好了 來看代碼吧? ? 該說的都在代碼注釋里面? 這個(gè)不用多說 代碼極其簡單
//自定義一個(gè)類繼承Animation(android.view.animation.Animation)抽象類
public class MyAnimation extends Animation {
????// 先定義成員變量 //X軸的中心坐標(biāo) int center_X;
????//Y軸的中心坐標(biāo) int center_Y;
????// 初始化Camera Camera camera = new Camera();
}
接下來要注意了?
重寫initialize()方法
/** * 在initialize對(duì)變量進(jìn)行初始化
* @param width
* @param height
* @param parentWidth
* @param parentHeight
*/
@Override
public void initialize(int width, int height, int parentWidth, int parentHeight) {
????super.initialize(width, height, parentWidth, parentHeight);
????//獲取X Y 中心點(diǎn)坐標(biāo) center_X = width/ 2; center_Y = height / 2;
????//動(dòng)畫的執(zhí)行時(shí)間,3000毫秒
????setDuration(3000L);
????setInterpolator(new AccelerateInterpolator());
}
寫完這些以后就到了最關(guān)鍵的核心代碼了
/** * 在applyTransformation通過矩陣修改動(dòng)畫
* 這里是自定義動(dòng)畫的核心,動(dòng)畫執(zhí)行的過程中一直在回調(diào)這個(gè)方法
* 每次回調(diào)這個(gè)方法interpolatedTime都會(huì)改變
* @param interpolatedTime
* @param t
*/
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
????final Matrix matrix = t.getMatrix();
????//儲(chǔ)蓄 camera.save();
????//中心是繞Y軸旋轉(zhuǎn),這里可以自行設(shè)置其他軸
????camera.rotateY(1080 * interpolatedTime);
????//加在變換矩陣上 camera.getMatrix(matrix);
????//設(shè)置翻轉(zhuǎn)中心點(diǎn) matrix.preTranslate(-center_X, -center_Y);
????matrix.postTranslate(center_X, center_Y); //恢復(fù) camera.restore();
}
怎么樣? 看完以后是不是了解了很多
要是感覺寫的不錯(cuò)就多支持支持吧? 第一次發(fā)表? 很緊張嘿嘿