我有4个观点:
<EditText
android:id="@+id/loginEditTextPhone"
android:layout_width="@dimen/loginEditTextPhoneWidth"
android:layout_height="wrap_content"
android:layout_alignEnd="@+id/loginTitle"
android:layout_alignParentBottom="true"
android:layout_marginBottom="-100dp"
android:gravity="center"/>
<EditText
android:id="@+id/loginEditTextEmail"
android:layout_alignEnd="@+id/loginEditTextPhone"
android:layout_below="@+id/loginEditTextPhone"
android:layout_height="wrap_content"
android:layout_width="@dimen/loginEditTextEmailWidth"/>
<EditText
android:id="@+id/loginEditTextPass"
android:layout_height="wrap_content"
android:layout_width="@dimen/loginEditTextPassWidth"
android:layout_below="@+id/loginEditTextEmail"
android:layout_alignStart="@+id/loginEditTextEmail"/>
<ImageButton
android:id="@+id/loginImgOk"
android:layout_centerHorizontal="true"
android:layout_below="@+id/loginEditTextPass"
android:layout_marginTop="@dimen/loginImgOkMarginTop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
我使用align_parentBottom将第一个视图(手机)设置在屏幕外,并为其设置负值。
由于其他视图位于第一个视图下方,因此它们也会从屏幕开始。 然后,通过单击按钮我有一个ObjectAnimator将完全相同的浮点值应用于所有4个视图,这样他们就可以进入屏幕。
我希望这些视图能够进入屏幕并在动画之前处于相同的分布状态(一个在另一个之下),但会发生的事情是只有第一个和最后一个进入(第二个和第三个视图不在&# 39;甚至出现),除此之外,最后一个位于错误的位置(高于应该休息的位置)。
我需要使用ObjectAnimator,因为我依赖于实际的视图位置。 这里发生了什么?
以下是我在此场景中用于动画的功能:
public AnimatorSet buildSimultaneousAnimatorSetForPropertyX(View[] viewsToBeAnimated,
boolean isOffsetValue, float value, int time){
ObjectAnimator objectAnimator;
List<Animator> animatorList = new ArrayList<Animator>();
for(View v : viewsToBeAnimated){
if(isOffsetValue){
objectAnimator = ObjectAnimator.ofFloat(v, "x", v.getX() + (value));
}else{
objectAnimator = ObjectAnimator.ofFloat(v, "x", value);
}
animatorList.add(objectAnimator);
}
它返回几个视图的动画设置。稍后,我将返回并用作另一个AnimatorSet的参数。