如何使科特林自定义动画作品(动画alpha属性)

问题描述 投票:0回答:1

我想通过ALPHA的手段动画上ImageViewAnimatorSet财产(其实我有两个动画,但我使用阿尔法一个只为现在为了检查是否正常工作),我使用Kotlin(和我”新来的话)我与ImageView的布局中,与AnimatorSet和相关布局Kotlin类的XML。

这里有一些选择,我已经试过了,在onCreate方法和利用该Kotlin extensions的所有的人:

mLogo.post {
        slideUpAndFadeIn = AnimatorInflater.loadAnimator(this, 
R.animator.slide_up_and_fade_in) as AnimatorSet
        slideUpAndFadeIn.duration = 250
        slideUpAndFadeIn.setTarget(mLogo)
        slideUpAndFadeIn.start()
}

mLogo.animate().apply {
        interpolator = LinearInterpolator()
        duration = 500
        alpha(1f)
        startDelay = 1000
        start()
    }

val objectAnimator = ObjectAnimator.ofFloat(mLogo, View.ALPHA, 0.0f, 1.0f)
    objectAnimator.duration = 250
    objectAnimator.interpolator = AccelerateDecelerateInterpolator()
    objectAnimator.start()

这是代码,我现在知道了:

Manaktivitykkt

import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {
    private lateinit var slideUpAndFadeIn : AnimatorSet

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

    slideUpAndFadeIn = AnimatorInflater.loadAnimator(this, 
    R.animator.slide_up_and_fade_in) as AnimatorSet
    slideUpAndFadeIn.duration = 250
    slideUpAndFadeIn.setTarget(mLogo)
    slideUpAndFadeIn.start()
    }
}

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorPrimary"
    android:gravity="center">

    <ImageView
        android:id="@+id/mLogo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/main_logo"
        android:layout_margin="@dimen/dimen_margin_main_logo"
        android:visibility="invisible"/>

</LinearLayout>

slide_up_and_fade_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="together">
    <objectAnimator
        android:propertyName="translationY"
        android:valueFrom="1"
        android:valueTo="50"
        android:valueType="intType"
        android:interpolator="@android:interpolator/fast_out_linear_in"/>

<objectAnimator
        android:propertyName="alpha"
        android:valueFrom="0.0"
        android:valueTo="1.0"
        android:valueType="floatType"/>
</set>

该应用程序不会崩溃,所以没有NullPointerException异常,但动画不起作用。它从来没有“淡入”。任何帮助表示赞赏:)

android kotlin alpha animator
1个回答
1
投票

“可见性”和“阿尔法”是不同的属性。当您设置动画阿尔法你应该在你的XML布局中使用android:alpha="0"代替android:visibility="invisible"

© www.soinside.com 2019 - 2024. All rights reserved.