Android Animated radial fade

时间:2015-08-09 21:37:36

标签: android animation gradient fade radial-gradients

我正在尝试使用从外向内生长的径向渐变来使图像变形以使其渐变为白色。例如,中心为透明且边缘为白色的径向渐变,然后向内折叠直到整个图像为白色。

我尝试实现此目的的方法是在ViewView上叠加View。我将View的背景设置为drawablexml文件,我将其放入包含简单的白色到透明渐变的drawable文件夹中:

"radialgrad.xml"
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:startColor="@android:color/transparent"
        android:endColor="@android:color/white"
        android:gradientRadius="1000dp"
        android:type="radial"
        />
</shape>

这是使用它的地方:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:background="@android:color/transparent"
    android:layout_height="match_parent">

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="50dp"
    android:layout_gravity="center_horizontal">

<ImageView
        android:layout_width="300dp"
        android:layout_height="300dp"
        android:layout_marginLeft="3dp"
        android:layout_marginTop="3dp"
        android:id="@+id/ivMain"
        android:src="@drawable/imagetohide"/>


<View
    android:layout_width="300dp"
    android:layout_height="300dp"
    android:layout_marginLeft="6dp"
    android:layout_marginTop="6dp"
    android:id="@+id/vRadial"
    android:background="@drawable/radialgrad"/>
</RelativeLayout>


</FrameLayout>

但我不确定如何从这里开始。在我的活动中,我使用findViewById来获取包含渐变的View,但是如何更改它的背景属性gradientRadius呢?我正在尝试使用:

ObjectAnimator anim = ObjectAnimator.ofFloat(vRadial, "gradientRadius", 1000, 0);
        anim.setDuration(1000);
                anim.start();

但它不起作用,似乎不对。该属性属于vRadial的背景,而不属于vRadial本身。

欢迎任何其他建议!

1 个答案:

答案 0 :(得分:0)

您使用渐变属性作为​​table.sort(t, function(a,b) return a.value < b.value end) for i,entry in ipairs(t) do print(i,entry.value) end 的第二个参数。

ObjectAnimator类旨在为ObjectAnimator.ofFloat()属性设置动画,例如ViewscaleX等。

您应该使用'alpha'属性,应用于ImageView

translationX