Android 动画 ViewPropertyAnimator 的使用
ViewPropertyAnimator 說明:
ViewPropertyAnimator?可為View對象上的選擇屬性啟用自動和優(yōu)化的動畫,?
ViewPropertyAnimator?不是由調(diào)用方構(gòu)造的,而是由將為其動畫的屬性的View構(gòu)造的。
調(diào)用android.view.View#animate()將返回對該視圖相應(yīng)的ViewPropertyAnimator對象的引用。
ViewPropertyAnimator 屬性:
setDuration(); //設(shè)置動畫時長
setInterpolator(); //設(shè)置插值器
setStartDelay(); //設(shè)置延遲開始時間
start(); //立刻開始動畫
cancel(); //取消動畫
可以實現(xiàn)的動畫,縮放,平移,旋轉(zhuǎn),透明
下面是實現(xiàn)的效果圖
具體代碼如下:
public class MainActivity extends AppCompatActivity {private ImageView imageView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);imageView = findViewById(R.id.img);findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {@RequiresApi(api = Build.VERSION_CODES.KITKAT)@Overridepublic void onClick(View v) {ViewPropertyAnimator viewPropertyAnimator =imageView.animate();viewPropertyAnimator.setInterpolator(new DecelerateInterpolator());viewPropertyAnimator.setDuration(3000);viewPropertyAnimator.translationX(500f);// 點擊X軸位移,再次點擊沒有效果
// viewPropertyAnimator.translationY(500f);// 點擊Y軸位移,再次點擊沒有效果
// viewPropertyAnimator.translationXBy(500f);// 點擊X軸位移,再次點擊剛剛才結(jié)束位置開始移動
// viewPropertyAnimator.translationYBy(500f);// 點擊Y軸位移,再次點擊剛剛才結(jié)束位置開始移動
// viewPropertyAnimator.x(500f); //X 軸位移,再次點擊沒有效果
// viewPropertyAnimator.xBy(500f); //X 軸位移,再次點擊有效果
// viewPropertyAnimator.y(500f); //Y 軸位移,再次點擊有效果
// viewPropertyAnimator.yBy(500f); //Y 軸位移,再次點擊有效果viewPropertyAnimator.start();// 動畫變化更新監(jiān)聽,viewPropertyAnimator.setUpdateListener(new ValueAnimator.AnimatorUpdateListener() {@Overridepublic void onAnimationUpdate(ValueAnimator animation) {Log.e("onAnimationUpdate","111");}});// 監(jiān)聽viewPropertyAnimator.setListener(new Animator.AnimatorListener() {@Overridepublic void onAnimationStart(Animator animation) {Log.e("onAnimationStart","111");}@Overridepublic void onAnimationEnd(Animator animation) {Log.e("onAnimationEnd","111");}@Overridepublic void onAnimationCancel(Animator animation) {Log.e("onAnimationCancel","111");}@Overridepublic void onAnimationRepeat(Animator animation) {Log.e("onAnimationRepeat","111");}});//使用簡寫imageView.animate().setInterpolator(new DecelerateInterpolator()).setDuration(2000).translationX(600f).start();}});findViewById(R.id.btn1).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {ViewPropertyAnimator viewPropertyAnimator =imageView.animate();viewPropertyAnimator.setInterpolator(new DecelerateInterpolator());viewPropertyAnimator.setDuration(3000);viewPropertyAnimator.alpha(0);viewPropertyAnimator.start();//使用簡寫
// imageView.animate().setInterpolator(new DecelerateInterpolator())
// .setDuration(2000)
// .alpha(0)
// .start();}});findViewById(R.id.btn2).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {ViewPropertyAnimator viewPropertyAnimator =imageView.animate();viewPropertyAnimator.setInterpolator(new DecelerateInterpolator());viewPropertyAnimator.setDuration(3000);
// viewPropertyAnimator.rotation(360); // 順時針旋轉(zhuǎn),再次點擊沒有效果
// viewPropertyAnimator.rotationBy(360);// 順時針旋轉(zhuǎn),再次點擊有效果
// viewPropertyAnimator.rotationX(360); // X軸旋轉(zhuǎn),再次點擊沒有效果
// viewPropertyAnimator.rotationXBy(360);// X軸旋轉(zhuǎn),再次點擊有效果
// viewPropertyAnimator.rotationY(360);// Y軸旋轉(zhuǎn),再次點擊有效果viewPropertyAnimator.rotationYBy(360);// Y軸旋轉(zhuǎn),再次點擊有效果viewPropertyAnimator.start();//使用簡寫
// imageView.animate().setInterpolator(new DecelerateInterpolator())
// .setDuration(2000)
// .rotation(360)
// .start();}});findViewById(R.id.btn3).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {ViewPropertyAnimator viewPropertyAnimator =imageView.animate();viewPropertyAnimator.setInterpolator(new DecelerateInterpolator());viewPropertyAnimator.setDuration(3000);
// viewPropertyAnimator.scaleX(1.2f); // X軸放大,再次點擊沒有效果
// viewPropertyAnimator.scaleXBy(1.2f); // X軸放大,再次點擊有效果
// viewPropertyAnimator.scaleY(1.2f); // Y軸放大,再次點擊沒有效果viewPropertyAnimator.scaleYBy(1.2f); // X軸放大,再次點擊有效果viewPropertyAnimator.start();//使用簡寫
// imageView.animate().setInterpolator(new DecelerateInterpolator())
// .setDuration(2000)
// .scaleX(2f)
// .scaleY(2f)
// .start();}});}
}
最后說明
1 相信大家通過注釋明白x 與xBy 的區(qū)別, 后面帶by 的都是可以再次觸發(fā)動畫,不帶的不會再次觸發(fā)動畫了
2?DecelerateInterpolator? 是動畫的插值器設(shè)置動畫為減速動畫(動畫播放中越來越慢)?詳細了解可以查看
?
以上demo 地址
?
總結(jié)
以上是生活随笔為你收集整理的Android 动画 ViewPropertyAnimator 的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qq个性签名可爱呆萌
- 下一篇: 配置SSH是出现: sign_and_s