成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android動畫框架,讓平移動畫更添魅力

移動開發 Android
使用startAnimation()?方法時,View的位置在動畫結束后會重置為原始位置,除非在動畫結束時手動更新View的位置。

使用ObjectAnimator

ObjectAnimator是Android3.0引入的一個強大的動畫框架,用于對任何對象的屬性進行動畫處理。可以使用ObjectAnimator來改變View的translationX和translationY屬性來實現View的平移動畫。

View view = findViewById(R.id.view);
ObjectAnimator animatorX = ObjectAnimator.ofFloat(view, "translationX", 0f, 100f); // 平移X軸
ObjectAnimator animatorY = ObjectAnimator.ofFloat(view, "translationY", 0f, 50f); // 平移Y軸

AnimatorSet animatorSet = new AnimatorSet();
animatorSet.play(animatorX).with(animatorY); // 同時執行X軸和Y軸動畫
animatorSet.setDuration(1000); // 設置動畫時長
animatorSet.start(); // 開始動畫

使用ValueAnimator

ValueAnimator是一個更底層的動畫框架,可以在動畫過程中生成一系列的值,然后使用這些值來更新View的屬性。對于平移動畫,通過監聽ValueAnimator的值變化更新View的translationX和translationY屬性。

ValueAnimator animator = ValueAnimator.ofFloat(0f, 100f); // 生成0到100的值
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
    @Override
    public void onAnimationUpdate(ValueAnimator animation) {
        float value = (float) animation.getAnimatedValue();
        view.setTranslationX(value); // 更新View的X軸位置
    }
});
animator.setDuration(1000); 
animator.start();

使用ViewPropertyAnimator

從Android 3.0開始,View類提供了一個animate()方法,返回一個ViewPropertyAnimator對象,可以用來鏈式調用多個動畫方法。

view.animate()
        .translationX(100f) // 平移X軸
        .translationY(50f) // 平移Y軸
        .setDuration(1000) // 設置動畫時長
        .start(); // 開始動畫

使用XML動畫

可以在XML文件中定義動畫,并在需要時加載并應用這些動畫。

<!-- res/anim/translate_animation.xml -->
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:fromXDelta="0%p"
        android:toXDelta="100%p"
        android:fromYDelta="0%p"
        android:toYDelta="50%p"
        android:duration="1000"/>
</set>
Animation animation = AnimationUtils.loadAnimation(this, R.anim.translate_animation);
view.startAnimation(animation);

注意:使用startAnimation()方法時,View的位置在動畫結束后會重置為原始位置,除非在動畫結束時手動更新View的位置。如果希望View在動畫結束后保持在最終位置,可以考慮使用前面提到的ObjectAnimator、ValueAnimator或ViewPropertyAnimator方法。

使用drawBitmap

通過drawBitmap在不同的位置畫出圖片,適合圖片作為平移動畫的需求。

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.image);
int width = ScreenUtils.getScreenWidth() - bitmap.getWidth();
//int height = bitmap.getHeight();
//繪制原圖
//canvas.drawBitmap(bitmap, 0, 0, paint);
canvas.drawBitmap(bitmap, progress * width / 100, 0, null);
//平移圖片
Matrix matrix = new Matrix();
matrix.postTranslate(progress * width / 100, height);
canvas.drawBitmap(bitmap, matrix, null);

責任編輯:武曉燕 來源: 沐雨花飛蝶
相關推薦

2017-03-13 15:00:15

AndroidTransition 動畫框架

2012-07-11 15:54:59

canvas

2012-07-13 13:41:35

Canvas

2012-07-13 13:52:54

Canvas

2025-05-13 02:01:00

Three.jsSprite粒子

2014-12-19 15:42:33

DragonBones

2024-01-19 16:35:00

模型動畫

2014-07-15 10:23:10

Android補間動畫

2025-05-12 09:28:00

2017-02-07 11:35:26

Android動畫蠟燭動畫

2010-09-08 09:48:56

Gif播放教程Android

2012-12-24 13:38:01

iOSUIView

2021-02-21 08:12:24

SVG線條動畫Web動畫

2014-02-17 10:12:11

移動APP動畫設計

2012-06-14 17:06:38

JavaScript

2020-06-22 22:02:20

廣電云浪潮

2021-10-12 11:07:33

動畫深度Android

2017-04-27 20:30:33

Android動畫技巧

2014-04-15 09:28:14

移動界面動畫效果創意

2021-02-21 07:49:40

Web動畫SVG線條動畫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一级片免费视频 | 性欧美精品一区二区三区在线播放 | 三级特黄特色视频 | 激情国产在线 | 日日干日日 | 国产成人一区二区三区久久久 | 国产精品视频一二三区 | 成人精品鲁一区一区二区 | 午夜免费观看体验区 | 精品毛片在线观看 | 91精品国产91久久久久久吃药 | 在线观看亚洲精品视频 | 精品国产三级 | 国产欧美日韩二区 | 亚洲欧洲精品成人久久奇米网 | 欧美中文字幕一区二区三区亚洲 | 蜜臀网 | 国产乱人伦 | 成人福利网 | 国产一区二区三区四区在线观看 | 天天躁天天操 | 日日骚视频 | 国产成人精品a视频一区www | 成人黄色av网站 | 成av人电影在线 | 嫩草研究影院 | 天天干天天爽 | 欧美一区二区成人 | 少妇特黄a一区二区三区88av | 久草在线视频中文 | 欧美三区视频 | 日韩在线不卡 | 国产伦精品一区二区三区照片91 | 国产精品美女在线观看 | 99re国产 | 成人在线精品视频 | 久久九精品 | 欧美在线 | 操久久 | 日日干夜夜草 | 欧美日韩在线视频观看 |