kotlin Android使用动画显示ImageView资源图像

mutmk8jj  于 2023-01-31  发布在  Kotlin
关注(0)|答案(2)|浏览(229)

enter image description here
我希望此图像显示放大淡入动画,但当我将其设置为ImageView时,它首先显示全尺寸和Alpha,然后显示动画。

<?xml version="1.0" encoding="utf-8"?>
<set
    xmlns:android="http://schemas.android.com/apk/res/android">
    <scale
        android:duration="200"
        android:fromXScale="1"
        android:fromYScale="1"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="0"
        android:toYScale="0" />

    <alpha
        android:duration="200"
        android:fromAlpha="0"
        android:toAlpha="1" />
</set>
val zoomInFadeInAnim = AnimationUtils.loadAnimation(this, R.anim.zoom_in_fade_in)
imageView.setImageResource(R.drawable.ic_cross)
imageView.startAnimation(zoomInFadeInAnim)

请帮帮忙!!!!!!!!

5kgi1eie

5kgi1eie1#

在Kotlin编程语言中,您可以很容易地这样做。
不推荐使用setAlpha()。您应该使用alpha
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/apply.html
如果你使用Kotlin,我推荐使用apply,它增加了代码的可读性,减少了代码的重复。

class YourActivity : AppCompatActivity() {

    private lateinit var imageView: ImageView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.yourActivityId)

        imageView = findViewById(R.id.yourImageViewId)

        imageView.apply {
            alpha = 0f
            scaleX = 0f
            scaleY = 0f
            setImageResource(R.drawable.ic_cross)
            animate().setDuration(200)
                .alphaBy(0f).alpha(1f)
                .scaleX(0f).scaleY(0f)
                .scaleXBy(1f).scaleY(1f)
                .start()
        }
    }
}
nxowjjhe

nxowjjhe2#

使用此代码:

imageView.setAlpha(0);
imageView.setScaleX(0);
imageView.setScaleY(0);
imageView.setImageResource(R.drawable.ic_cross)
imageView.animate().setDuration(200)
    .alphaBy(0).alpha(1)
    .scaleX(0).scaleY(0)
    .scaleXBy(1).scaleY(1)
    .start();

相关问题