自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

使用ObjectAnimator

ObjectAnimator是Android3.0引入的一個強大的動畫框架,用于對任何對象的屬性進行動畫處理??梢允褂肙bjectAnimator來改變View的translationX和translationY屬性來實現(xiàn)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); // 同時執(zhí)行X軸和Y軸動畫
animatorSet.setDuration(1000); // 設(shè)置動畫時長
animatorSet.start(); // 開始動畫

使用ValueAnimator

ValueAnimator是一個更底層的動畫框架,可以在動畫過程中生成一系列的值,然后使用這些值來更新View的屬性。對于平移動畫,通過監(jiān)聽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對象,可以用來鏈?zhǔn)秸{(diào)用多個動畫方法。

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

使用XML動畫

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

<!-- 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的位置在動畫結(jié)束后會重置為原始位置,除非在動畫結(jié)束時手動更新View的位置。如果希望View在動畫結(jié)束后保持在最終位置,可以考慮使用前面提到的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);

責(zé)任編輯:武曉燕 來源: 沐雨花飛蝶
相關(guān)推薦

2017-03-13 15:00:15

AndroidTransition 動畫框架

2012-07-11 15:54:59

canvas

2012-07-13 13:52:54

Canvas

2012-07-13 13:41:35

Canvas

2024-01-19 16:35:00

模型動畫

2014-12-19 15:42:33

DragonBones

2017-02-07 11:35:26

Android動畫蠟燭動畫

2014-07-15 10:23:10

Android補間動畫

2012-12-24 13:38:01

iOSUIView

2010-09-08 09:48:56

Gif播放教程Android

2012-06-14 17:06:38

JavaScript

2021-10-12 11:07:33

動畫深度Android

2014-02-17 10:12:11

移動APP動畫設(shè)計

2021-02-21 08:12:24

SVG線條動畫Web動畫

2017-04-27 20:30:33

Android動畫技巧

2021-02-21 07:49:40

Web動畫SVG線條動畫

2020-06-22 22:02:20

廣電云浪潮

2023-02-06 09:31:17

CSSJS 動態(tài)

2014-04-15 09:28:14

移動界面動畫效果創(chuàng)意

2014-05-30 09:44:08

Android折紙動畫
點贊
收藏

51CTO技術(shù)棧公眾號