缩放形状可绘制而不使用ObjectAnimator拉伸它

时间:2017-07-15 09:50:55

标签: android animation objectanimator

我有一个View,它的背景是Shape

观点:

<View
    android:layout_width="wrap_content"
    android:layout_height="74dp"
    android:id="@+id/background_parent"
    android:background="@drawable/item_background">
</View>

shape(项目背景):

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >

<corners
    android:bottomLeftRadius="@dimen/corner_radius_in_rects"
    android:bottomRightRadius="@dimen/corner_radius_in_rects"
    android:topLeftRadius="@dimen/corner_radius_in_rects"
    android:topRightRadius="@dimen/corner_radius_in_rects" />

<solid android:color="#f8f4fa" />

<padding
    android:bottom="0dp"
    android:left="0dp"
    android:right="0dp"
    android:top="0dp" />

我正在尝试使用ObjectAnimtor缩放视图,但它会拉伸视图和角落。我希望它可以缩放并保持原始形状属性(角半径)。

我试过了:

 scaleBackgroundView.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
                @Override
                public void onAnimationUpdate(ValueAnimator valueAnimator) {
                    background.setBackground(getResources().getDrawable(R.drawable.item_background));
                }
            });

scaleBackgroundView.addListener(new Animator.AnimatorListener() {
                ...

                @Override
                public void onAnimationEnd(Animator animator) {
                    background.setBackground(getDrawable(R.drawable.item_background));
                }

没有成功。有人有想法吗?

换句话说,这就是它的样子: enter image description here

我想要圆角

1 个答案:

答案 0 :(得分:0)

好的,所以我找到了几个解决方案(更像是解决方法)。 第一个是创建自定义视图并指定自己的缩放动画,以仅增加角落之间的间隙,而不是像以前一样拉伸。第二个解决方案(我使用的解决方案)是将矩形拆分为三个矩形,上部中间和底部,并指定中间的一个作为上部和底部之间的填充物。然后我将缩放动画设置为中间,将平移动画设置为底部。不是最明智的想法,但工作正常。