日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Android 动画 ViewPropertyAnimator 的使用

發(fā)布時間:2023/11/27 生活经验 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 动画 ViewPropertyAnimator 的使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。