【问题标题】:Animate view height in android在android中动画视图高度
【发布时间】:2016-03-05 15:31:08
【问题描述】:

我有一个带有按钮的视图持有者,该按钮可以在相同的布局中切换其他视图的可见性(我用 id locals_additional_filters 切换视图的可见性)。 现在通过使视图可见,父布局高度(id is host_filter_holder)正在改变,我的问题是如何为父布局高度设置动画?

这是我的 xml:

<LinearLayout
        android:id="@+id/host_filter_holder"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/red_borders_btn"
        android:orientation="vertical">

        <Button
            android:id="@+id/find_host_filter"
            android:layout_width="match_parent"
            android:layout_height="45dp"
            android:text="@string/more_filters"
            android:background="@null"
            android:textColor="@color/red_borders"
            android:textSize="16sp" />

        <LinearLayout
            android:id="@+id/locals_additional_filters"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:orientation="vertical"
            android:padding="10dp"
            android:animateLayoutChanges="true"
            android:visibility="gone">

            <RadioGroup
                android:id="@+id/locals_gender_group"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">

                <RadioButton
                    android:id="@+id/female"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:checked="true"
                    android:text="Female"
                    android:textColor="@color/black" />

                <RadioButton
                    android:id="@+id/male"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:text="Male"
                    android:textColor="@color/black" />
            </RadioGroup>

            <EditText
                style="@style/NoBottomLineEditText"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="10dp"
                android:clickable="true"
                android:drawableEnd="@drawable/ic_arrow"
                android:drawableRight="@drawable/ic_arrow"
                android:hint="Search your friends in 2km" />

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="@string/interests"
                android:textColor="@color/dark_gray"
                android:textSize="14sp" />

            <android.support.v7.widget.RecyclerView
                android:id="@+id/locals_filter_recycle"
                android:layout_width="match_parent"
                android:layout_height="40dp" />
        </LinearLayout>

    </LinearLayout>

【问题讨论】:

    标签: android android-animation android-xml


    【解决方案1】:

    使用 Value animator 非常简单,您可以做到:

    myView.animate().scaleY( anyValue ).setDuration( durationInMills );
    

    【讨论】:

      【解决方案2】:

      使用 ValueAnimator 或 ObjectAnimator:

      LinearLayout container = findViewById(R.id.host_filter_holder);
      Button btn = findViewById(find_host_filter);
      LinearLayout changeBox = findViewById(R.id.locals_additional_filters);
       ValueAnimator animator = ValueAnimator.ofInt(btn.getHeight() + 
                      changeBox.getHeight(),btn.getHeight()); 
      
      
      animator.setTarget(container );  
      animator.setDuration(1000).start();  
      animator.addUpdateListener(new AnimatorUpdateListener()  
      {  
          @Override  
          public void onAnimationUpdate(ValueAnimator animation)  
          {   
              LayoutParams layoutparams = container.getLayoutParams();
              layoutparams.height = animation.getAnimatedValue();
              container.setLayoutParams(layoutparams );
          }  
      });  
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-08-20
        • 2015-12-26
        • 2016-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-13
        相关资源
        最近更新 更多