如何使用动画缩放视图以适合Android中的内容大小

时间:2018-11-15 05:35:09

标签: android android-animation

我在父布局上有两个视图,分别是顶部和底部屏幕,底部屏幕具有固定的高度,并且根据其内容在我点击父布局时必须在父布局上扩展和折叠的内容与父底部和顶部屏幕对齐,并且底部屏幕自动从顶部屏幕降下来,我可以滚动父版面上的全部内容,请问有人可以帮忙吗

activity_main.layout

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/content_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <View
        android:id="@+id/view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/bottom_view"
        android:background="#3143ff" />

    <View
        android:id="@+id/bottom_view"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:layout_alignParentBottom="true"
        android:background="@color/colorPrimary" />


</RelativeLayout>

MainActivity:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final View view = findViewById(R.id.view);
        final View contentView = findViewById(R.id.content_frame);
        view.setOnClickListener(v -> {
            final int screenHeight = contentView.getHeight();
            ValueAnimator heightAnimator = ValueAnimator.ofInt(view.getHeight(), screenHeight);
            heightAnimator.setDuration(1500);
            heightAnimator.addUpdateListener(animation -> {
                view.getLayoutParams().height = (int) animation.getAnimatedValue();
                view.requestLayout();
            });
            heightAnimator.start();
        });
    }
}

1 个答案:

答案 0 :(得分:0)

有关更多帮助,请参见FoldingCell for Android

在您的build.gradle()

dependencies{
    implementation 'com.ramotion.foldingcell:folding-cell:1.2.2'
}

在您的XML布局中

<com.ramotion.foldingcell.FoldingCell
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/folding_cell"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
​

             <!--Layout One-->    ​

             <!--Layout Two-->


</com.ramotion.foldingcell.FoldingCell>

快完成了!剩下两个步骤!为了获得正确的动画效果,您需要在折叠单元格的根元素上设置两个属性:

  

android:clipChildren =“ false”

     

android:clipToPadding =“ false”

在您的Java类中

    // get our folding cell
    final FoldingCell fc = (FoldingCell) findViewById(R.id.folding_cell);
​
    // attach click listener to folding cell
    fc.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            fc.toggle(false);
        }
    });