进入屏幕后,观看位置变得不正确

时间:2016-04-13 17:44:01

标签: android

我有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的参数。

0 个答案:

没有答案