【发布时间】:2017-07-17 00:23:23
【问题描述】:
我的 activity_main.xml 布局中有一个 RelativeLayout。我已将其 width 和 height 分别定义为 250dp 和 48dp,如下图所示xml sn-p。
现在我想动画(缩放)它的宽度从那个值(默认)到48dp,(枢轴应该是右边缘) .我曾尝试使用 ScaleAnimation、ValueAnimation、ObjectAnimation 来做到这一点,但它们似乎适用于相对值。
如果可能的话,我想使用 ScaleAnimation 来做到这一点。
这是我的相对布局:
<RelativeLayout
android:layout_width="250dp"
android:layout_height="48dp"
android:id="@+id/layout_1"
android:layout_below="@id/default_layout"
android:layout_centerHorizontal="true"
android:background="@drawable/round_corner_layout_1">
...
</RelativeLayout>
这是我的 scaleAnimate 方法:
private void scaleAnimate(long startOffSet, int fromX, int fromY, int toX, int toY, int pivotTypeX, int pivotTypeY, float pivotX, float pivotY, int duration, Interpolator interpolator, final View... v){
Animation animation = new ScaleAnimation(fromX, toX, fromY, toY, pivotTypeX, pivotX, pivotTypeY, pivotY);
animation.setDuration(duration);
animation.setFillAfter(true);
animation.setInterpolator(interpolator);
animation.setStartOffset(startOffSet);
for(View view : v){
view.setVisibility(View.VISIBLE);
view.startAnimation(animation);
}
}
编辑:
这就是我想要动画布局的方式。我尝试创建一个图像,链接在下面,以解释我正在尝试做的事情。
布局中的视图将 alpha 设置为 0。(我可以完美地设置 alpha 动画。没有问题 :D)。左边是缩放前的布局,右边是缩放后的布局。缩放后,圆角应形成一个圆圈。这就是为什么高度和宽度都需要相同(48dp)的原因。左(上和下)两个角都向右(上和下)两个角移动。右边缘将保持静止。右边缘是枢轴。
为了支持不同分辨率的设备,初始宽高可以改为wrap_content。不用担心。但是动画布局后,高度和宽度需要相同,才能形成一个圆圈。
【问题讨论】:
-
为什么需要使用特定尺寸? Android 支持超过 10,000 种具有多种屏幕尺寸的设备!!!
-
我已经编辑了问题。我试图解释我到底想要做什么:)