Android開發之屬性動畫
Android動畫主要分為3種
- View動畫(Android開發之View動畫)
- 幀動畫(Android開發之幀動畫)
- 屬性動畫
何為屬性動畫?
通過改變物件的屬性以達到動畫的效果,API 11以上可以用,如果想相容舊版本請使用 https://github.com/JakeWharton/NineOldAndroids 。屬性動畫的預設的時間為300ms,它可以在時間間隔內完成物件從一個屬性值到另外一個屬性值的改變。比較常用的屬性動畫物件有:
ValueAnimator,ObjectAnimator,AnimatorSet,其中ObjectAnimator是ValueAnimator的子類,AnimatorSet代表動畫集合。
如何使用?
首先佈局和Activity的準備程式碼和之前一樣,即在佈局中放置一個ImageView,然後在程式中獲取,接下來介紹幾種常見動畫的使用
1、平移動畫
/**
* 1.5秒 將影像向Y軸正方向移動500,translationY可以換成translationX
*/
private void translateAni() {
ObjectAnimator animator = ObjectAnimator.ofFloat(img, "translationY", 500);
animator.setDuration(1500);
animator.start();
}
測試執行
2、縮放動畫
/**
* 1.5秒 將影像沿Y從1.0放大到1.5,注意這裡屬性值可以為scaleX和scaleY,但設定scale是不行的
*/
private void scaleAni() {
ObjectAnimator animator = ObjectAnimator.ofFloat(img, "scaleY", 1, 1.5f);
animator.setDuration(1500);
animator.start();
}
測試執行
3、旋轉動畫
/**
* 1.5秒 將影像軸旋轉360度
*/
private void rotateAni() {
ObjectAnimator animator = ObjectAnimator.ofFloat(img, "rotation", 0, 360);
animator.setDuration(1500);
animator.start();
}
測試執行
4、透明度動畫
/**
* 1.5秒 將影像的透明度從1變到0.2
*/
private void alphaAni() {
ObjectAnimator animator = ObjectAnimator.ofFloat(img, "alpha", 1, 0.2f);
animator.setDuration(1500);
animator.start();
}
測試執行
5、動畫集合
/**
* 屬性集合 將上述動畫集合起來一起放一遍
*/
private void aniSet() {
AnimatorSet set = new AnimatorSet();
set.playTogether(
ObjectAnimator.ofFloat(img, "translationY", 500),
ObjectAnimator.ofFloat(img, "scaleY", 1, 1.5f),
ObjectAnimator.ofFloat(img, "scaleX", 1, 1.5f),
ObjectAnimator.ofFloat(img, "rotation", 0, 360),
ObjectAnimator.ofFloat(img, "alpha", 1, 0.2f)
);
set.setDuration(3000);
set.start();
}
測試執行
6、顏色漸變動畫
這種方式比較坑,試了很多種,按上面那些方式行不通,最後想到這個應該是屬於任意屬性的範疇,所以採用了ValueAnimator,監聽動畫過程,自己來實現屬性的改變,果然成功了:
// 顏色漸變動畫 這個要注意 無法直接採用上面的方法直接來設定 設定了也是無效的 這裡涉及到給任意屬性設定動畫的問題
private void colorAni(int startColor, int endColor) {
ValueAnimator valueAnimator = ValueAnimator.ofArgb(startColor, endColor);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
//找到Activity的預設View
View view = ((ViewGroup) findViewById(android.R.id.content)).getChildAt(0);
//改變背景色
view.setBackgroundColor((Integer) valueAnimator.getAnimatedValue());
}
});
valueAnimator.setDuration(3000);
valueAnimator.start();
}
測試執行
程式碼地址
相關文章
- Android 動畫之屬性動畫Android動畫
- 【Android 動畫】動畫詳解之屬性動畫(三)Android動畫
- 【Android 動畫】動畫詳解之屬性動畫(五)Android動畫
- android屬性動畫Android動畫
- Android 屬性動畫實戰Android動畫
- Android 動畫詳解:屬性動畫、View 動畫和幀動畫Android動畫View
- Android 自定義View:屬性動畫(六)AndroidView動畫
- Android 顏色漸變 屬性動畫Android動畫
- Android備忘錄《屬性動畫-ValueAnimator》Android動畫
- 屬性動畫動畫
- Android開發之--visibility屬性VISIBLE、INVISIBLE、GONE的區別AndroidGo
- SVG 動畫 fill 屬性SVG動畫
- SVG restart 動畫屬性SVGREST動畫
- SVG restart動畫屬性SVGREST動畫
- Android之動畫Android動畫
- 初識屬性動畫——使用Animator建立動畫動畫
- 屬性動畫與差值器動畫
- HenCoder Android 自定義 View 1-6: 屬性動畫(上手篇)AndroidView動畫
- Android開發 - 檢視佈局屬性解析Android
- Android繪製(三):Path結合屬性動畫,讓圖示動起來!Android動畫
- SVG accumulate和additive動畫屬性SVG動畫
- Android屬性動畫基礎:你是否真的瞭解插值器(TimeInterpolator)Android動畫
- 【Android 動畫】動畫詳解之補間動畫(一)Android動畫
- 屬性動畫-波紋擴散WaveView動畫View
- 三談屬性動畫——Keyframe以及ViewPropertyAnimator動畫View
- 檢視屬性+物件動畫元件ViewPropertyObjectAnimator物件動畫元件ViewObject
- Android 《CardView 屬性》AndroidView
- Android XML 屬性AndroidXML
- CMake 屬性之全域性屬性
- 屬性動畫 ValueAnimator 執行原理全解析動畫
- 帶有活力的屬性動畫原始碼分析與實戰——Android高階UI動畫原始碼AndroidUI
- 【Android 動畫】動畫詳解之插值器(二)Android動畫
- 阿里Android開發規範:Bitmap、Drawable 與動畫阿里Android動畫
- CSS動畫屬性關鍵幀keyframes全解析CSS動畫
- CMake 屬性之目錄屬性
- CMake 屬性之目標屬性
- 04.Android之動畫問題Android動畫
- 前端與移動開發----jQuery----JQuery動畫,JQ操作元素屬性,JQ操作元素樣式(大量案例)前端移動開發jQuery動畫
- Android UI美化之 shape的使用及其屬性總結AndroidUI