Android 动画 ViewPropertyAnimator 的使用
生活随笔
收集整理的這篇文章主要介紹了
Android 动画 ViewPropertyAnimator 的使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ViewPropertyAnimator 說明:
ViewPropertyAnimator?可為View對象上的選擇屬性啟用自動和優化的動畫,?
ViewPropertyAnimator?不是由調用方構造的,而是由將為其動畫的屬性的View構造的。
調用android.view.View#animate()將返回對該視圖相應的ViewPropertyAnimator對象的引用。
ViewPropertyAnimator 屬性:
setDuration(); //設置動畫時長
setInterpolator(); //設置插值器
setStartDelay(); //設置延遲開始時間
start(); //立刻開始動畫
cancel(); //取消動畫
可以實現的動畫,縮放,平移,旋轉,透明
下面是實現的效果圖
具體代碼如下:
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軸位移,再次點擊剛剛才結束位置開始移動
// viewPropertyAnimator.translationYBy(500f);// 點擊Y軸位移,再次點擊剛剛才結束位置開始移動
// viewPropertyAnimator.x(500f); //X 軸位移,再次點擊沒有效果
// viewPropertyAnimator.xBy(500f); //X 軸位移,再次點擊有效果
// viewPropertyAnimator.y(500f); //Y 軸位移,再次點擊有效果
// viewPropertyAnimator.yBy(500f); //Y 軸位移,再次點擊有效果viewPropertyAnimator.start();// 動畫變化更新監聽,viewPropertyAnimator.setUpdateListener(new ValueAnimator.AnimatorUpdateListener() {@Overridepublic void onAnimationUpdate(ValueAnimator animation) {Log.e("onAnimationUpdate","111");}});// 監聽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); // 順時針旋轉,再次點擊沒有效果
// viewPropertyAnimator.rotationBy(360);// 順時針旋轉,再次點擊有效果
// viewPropertyAnimator.rotationX(360); // X軸旋轉,再次點擊沒有效果
// viewPropertyAnimator.rotationXBy(360);// X軸旋轉,再次點擊有效果
// viewPropertyAnimator.rotationY(360);// Y軸旋轉,再次點擊有效果viewPropertyAnimator.rotationYBy(360);// Y軸旋轉,再次點擊有效果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 的區別, 后面帶by 的都是可以再次觸發動畫,不帶的不會再次觸發動畫了
2?DecelerateInterpolator? 是動畫的插值器設置動畫為減速動畫(動畫播放中越來越慢)?詳細了解可以查看
?
以上demo 地址
?
總結
以上是生活随笔為你收集整理的Android 动画 ViewPropertyAnimator 的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qq个性签名可爱呆萌
- 下一篇: 配置SSH是出现: sign_and_s