我有一个普通的CardView:
<androidx.cardview.widget.CardView
android:id="@+id/cardView"
android:layout_width="256dp"
android:layout_height="64dp"
app:cardElevation="4dp" />
然后我设置其Alpha动画:
cardView.animate().alpha(1f).setDuration(3000).start()
我得到:
卡背景首先变为灰色,然后变为白色。如果时间很短,这看起来就像眨眼。看来这仅发生在白色背景上。
这就是我想要的(我在Adobe XD中创建):
如何获得类似的效果?
答案 0 :(得分:2)
您看到的灰色是CardView
的阴影。
您可以在另一个视图中添加CardView
并为其设置动画,例如:
<RelativeLayout
android:id="@+id/animateThis"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<androidx.cardview.widget.CardView
android:id="@+id/cardView"
android:layout_width="256dp"
android:layout_height="64dp"
app:cardElevation="4dp" />
</RelativeLayout>
然后为RelativeLayout
设置动画:
animateThis.animate().alpha(1f).setDuration(3000).start()
答案 1 :(得分:1)
只是想分享一种不同的方法。我希望它可以帮助其他人。
我创建了一个按顺序更改 alpha 和高程的动画,以避免在为 alpha 设置动画时显示阴影。
对于淡入我使用:
<set android:ordering="sequentially">
<objectAnimator
android:duration="300"
android:propertyName="alpha"
android:valueTo="1"
android:valueType="floatType" />
<objectAnimator
android:duration="300"
android:propertyName="cardElevation"
android:valueTo="12dp"
android:valueType="floatType" />
</set>
淡出我使用:
<set android:ordering="sequentially">
<objectAnimator
android:duration="300"
android:propertyName="cardElevation"
android:valueTo="0dp"
android:valueType="floatType" />
<objectAnimator
android:duration="300"
android:propertyName="alpha"
android:valueTo="0"
android:valueType="floatType" />
</set>
答案 2 :(得分:0)
fadein.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true" >
<alpha
android:duration="1000"
android:fromAlpha="0.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:toAlpha="1.0" />
</set>
Animation animFadein = AnimationUtils.loadAnimation(getApplicationContext(),
R.anim.fade_in);
cardView.startAnimation(animFadein);