ImageView的自定义过渡效果

发布时间:2024-08-20 12:09:20 作者:小樊
来源:亿速云 阅读:78

要实现ImageView的自定义过渡效果,可以通过使用属性动画和自定义View的方式来实现。以下是一个简单的示例代码,实现ImageView的自定义过渡效果:

public class CustomTransitionImageView extends AppCompatImageView {

    private static final int DEFAULT_DURATION = 500;

    private boolean mIsAnimating = false;
    private int mDuration = DEFAULT_DURATION;

    public CustomTransitionImageView(Context context) {
        super(context);
    }

    public CustomTransitionImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(attrs);
    }

    public CustomTransitionImageView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init(attrs);
    }

    private void init(AttributeSet attrs) {
        TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.CustomTransitionImageView);
        mDuration = a.getInt(R.styleable.CustomTransitionImageView_duration, DEFAULT_DURATION);
        a.recycle();
    }

    public void setDuration(int duration) {
        mDuration = duration;
    }

    public void startTransition() {
        if (mIsAnimating) {
            return;
        }

        ObjectAnimator scaleXAnimator = ObjectAnimator.ofFloat(this, View.SCALE_X, 0, 1);
        ObjectAnimator scaleYAnimator = ObjectAnimator.ofFloat(this, View.SCALE_Y, 0, 1);

        AnimatorSet animatorSet = new AnimatorSet();
        animatorSet.playTogether(scaleXAnimator, scaleYAnimator);
        animatorSet.setDuration(mDuration);
        animatorSet.addListener(new Animator.AnimatorListener() {
            @Override
            public void onAnimationStart(Animator animator) {
                mIsAnimating = true;
            }

            @Override
            public void onAnimationEnd(Animator animator) {
                mIsAnimating = false;
            }

            @Override
            public void onAnimationCancel(Animator animator) {
                mIsAnimating = false;
            }

            @Override
            public void onAnimationRepeat(Animator animator) {

            }
        });

        animatorSet.start();
    }
}

在xml布局文件中使用CustomTransitionImageView,并设置过渡效果的时间:

<com.example.CustomTransitionImageView
    android:id="@+id/customTransitionImageView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:duration="1000"
    android:src="@drawable/image" />

在代码中调用startTransition方法即可开始过渡效果的动画:

CustomTransitionImageView customTransitionImageView = findViewById(R.id.customTransitionImageView);
customTransitionImageView.startTransition();
推荐阅读:
  1. Android怎么实现ImageView的selector效果
  2. ImageView在单例模式中的应用与优化

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

imageview

上一篇:ImageView的加载队列管理

下一篇:ImageView的Bitmap处理与内存泄漏预防

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》