我正在将我的应用程序转换为新的 Material Design Pattern,我注意到一个小问题。当我使用 Reveal Effect在 View 在可见和不可见之间转换之前, View 后面有一个白色背景。
目前动画的时候是这样的
开始
中间
完成
XML
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<include layout="@layout/actionbar_visualizer" />
<LinearLayout
android:id="@+id/visualizerProductContainer"
android:layout_width="280dp"
android:layout_height="match_parent"
android:layout_below="@id/visualizerActionBar"
android:background="@color/black"
android:gravity="left"
android:orientation="vertical" >
<TextView
android:id="@+id/gridHeader"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/fifty_transparent_black"
android:gravity="center"
android:padding="10dp"
android:text="@string/products"
android:textColor="@color/white" />
<GridView
android:id="@+id/productGrid"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnWidth="75dp"
android:numColumns="auto_fit"
android:paddingTop="10dp"
android:stretchMode="columnWidth" />
</LinearLayout>
...
</RelativeLayout>
动画
...
mProductContainer = (LinearLayout)findViewById(R.id.visualizerProductContainer);
...
private void showHideProducts() {
if (mProductContainer.getVisibility() == View.VISIBLE) {
int cx = (mProductContainer.getLeft() + mProductContainer.getRight()) / 8;
int cy = (mProductContainer.getTop() + mProductContainer.getBottom()) / 8;
int initialRadius = mProductContainer.getWidth();
Animator anim = ViewAnimationUtils.createCircularReveal(mProductContainer, cx, cy, initialRadius, 0);
anim.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
mProductContainer.setVisibility(View.GONE);
}
});
anim.start();
} else {
int cx = (mProductContainer.getLeft() + mProductContainer.getRight()) / 8;
int cy = (mProductContainer.getTop() + mProductContainer.getBottom()) / 8;
int finalRadius = Math.max(mProductContainer.getWidth(), mProductContainer.getHeight());
Animator anim = ViewAnimationUtils.createCircularReveal(mProductContainer, cx, cy, 0, finalRadius);
mProductContainer.setVisibility(View.VISIBLE);
anim.start();
}
}
那么有没有人知道移除背景/使其在动画之间透明的方法?
最佳答案
ViewAnimationUtils.createCircularReveal
通过在动画期间剪裁给定的 View 来工作。由于您的黑色背景是您 View 的一部分,因此它也会被剪裁。相反,你的黑色背景应该设置在你的 Activity 的主题上(通过 android:background
)或者在封装你正在动画的 View 的 View 上(比如你的 RelativeLayout
) .
关于Android - 从 Circular Reveal (Lollipop) 中删除背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27536029/