【问题标题】:How to make a custom animator work in Kotlin (animating the alpha property)如何使自定义动画师在 Kotlin 中工作(动画 alpha 属性)
【发布时间】:2019-06-27 17:48:12
【问题描述】:

我想通过AnimatorSetImageView 上的ALPHA 属性进行动画处理(我实际上有两个动画,但我现在只使用alpha 动画来检查它是否有效)我正在使用Kotlin(而且我是新手) 我有一个内部带有 ImageView 的布局,一个带有 AnimatorSet 的 xml 和一个与布局相关的 Kotlin 类。

这里有一些我已经尝试过的选项,它们都在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()

这是我现在拥有的代码:

MainActivity.kt

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】:

    'visibility' 和 'alpha' 是不同的属性。当您制作 alpha 动画时,您应该在 xml 布局中使用 android:alpha="0" 而不是 android:visibility="invisible"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-13
      • 2011-03-11
      • 1970-01-01
      • 1970-01-01
      • 2012-07-29
      • 2012-12-20
      • 1970-01-01
      相关资源
      最近更新 更多