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