在android

时间:2016-01-13 07:18:44

标签: android scrollview android-animation android-framelayout

我想实现Globe-Weis文件夹,如下图所示,通过点击绿色按钮顺利滚动,再次点击绿色按钮,文件夹页面顺利向下滚动。

enter image description here

enter image description here

我到目前为止尝试的是在scrollView中放置三个frameLayout并打开和关闭它

 if (!underIsOpen) {
     ObjectAnimator
     .ofInt(sv_Under, "scrollY",
     findViewById(R.id.ll_under_botton).getTop())
     .setDuration(1000).start();
     underIsOpen = true;
     } else {

     ObjectAnimator
     .ofInt(sv_Under, "scrollY",
     findViewById(R.id.ll_under_s_part).getTop())
     .setDuration(1000).start();
     underIsOpen = false;

     }

但它只适用于顶部的scrollView

我的代码是:

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.test3);
    ll_under_s_part = (LinearLayout) findViewById(R.id.ll_under_s_part);
     sv_Under = (ScrollView) findViewById(R.id.scrollView1);
     sv_Mid = (ScrollView) findViewById(R.id.scrollView2);
     sv_Top = (ScrollView) findViewById(R.id.scrollView3);

}


public void onClick_under_left(View v) {
    Toast.makeText(getApplicationContext(), "under layout",
            Toast.LENGTH_SHORT).show();


     if (!underIsOpen) {
     ObjectAnimator
     .ofInt(sv_Under, "scrollY",
     findViewById(R.id.ll_under_botton).getTop())
     .setDuration(1000).start();
     underIsOpen = true;
     } else {

     ObjectAnimator
     .ofInt(sv_Under, "scrollY",
     findViewById(R.id.ll_under_s_part).getTop())
     .setDuration(1000).start();
     underIsOpen = false;

     }
}

public void onClick_mid_left(View v) {
    Toast.makeText(getApplicationContext(), "mid layout",
            Toast.LENGTH_SHORT).show();

}

public void onClick_top_left(View v) {

    Toast.makeText(getApplicationContext(), "top layout",
            Toast.LENGTH_SHORT).show();

     if (!topIsOpen) {
     ObjectAnimator
     .ofInt(sv_Top, "scrollY",
     findViewById(R.id.ll_top_botton).getTop())
     .setDuration(1000).start();
     topIsOpen = true;
     } else {

     ObjectAnimator
     .ofInt(sv_Top, "scrollY",
     findViewById(R.id.ll_top_s_part).getTop())
     .setDuration(1000).start();
     topIsOpen = false;

     }
}

的xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <ScrollView
            android:id="@+id/scrollView1"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="#00000000"
                android:orientation="vertical" >

                <LinearLayout
                    android:id="@+id/ll_under_s_part"
                    android:layout_width="match_parent"
                    android:layout_height="300dp"
                    android:background="#ccff00"
                    android:orientation="vertical" >
                </LinearLayout>

                <Button
                    android:id="@+id/ll_under_botton"
                    android:layout_width="match_parent"
                    android:layout_height="100dp"
                    android:background="#519B57"
                    android:onClick="onClick_under_left"
                    android:orientation="vertical"
                    android:text="B T N" />

                <LinearLayout
                    android:id="@+id/ll_under_p_part"
                    android:layout_width="match_parent"
                    android:layout_height="300dp"
                    android:background="#edf5ee"
                    android:orientation="vertical" >
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/ll_under_1"
                    android:layout_width="match_parent"
                    android:layout_height="100dp"
                    android:orientation="vertical" >
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/ll_under_2"
                    android:layout_width="match_parent"
                    android:layout_height="100dp"
                    android:orientation="vertical" >
                </LinearLayout>

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="1000dp"
                    android:orientation="vertical" >
                </LinearLayout>
            </LinearLayout>
        </ScrollView>

        <ScrollView
            android:id="@+id/scrollView2"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="#00000000"
                android:orientation="vertical" >

                <LinearLayout
                    android:id="@+id/ll_mid_s_part"
                    android:layout_width="match_parent"
                    android:layout_height="300dp"
                    android:background="#00000000"
                    android:orientation="vertical" >
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/ll_mid_3"
                    android:layout_width="match_parent"
                    android:layout_height="100dp"
                    android:orientation="vertical" >
                </LinearLayout>

                <Button
                    android:id="@+id/ll_mid_botton"
                    android:layout_width="match_parent"
                    android:layout_height="100dp"
                    android:background="#088da5"
                    android:onClick="onClick_mid_left"
                    android:orientation="vertical"
                    android:text="B T N" />

                <LinearLayout
                    android:id="@+id/ll_mid_p_part"
                    android:layout_width="match_parent"
                    android:layout_height="300dp"
                    android:background="#e6f3f6"
                    android:orientation="vertical" >
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/ll_mid_1"
                    android:layout_width="match_parent"
                    android:layout_height="100dp"
                    android:orientation="vertical" >
                </LinearLayout>
            </LinearLayout>
        </ScrollView>

        <ScrollView
            android:id="@+id/scrollView3"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="#00000000"
                android:orientation="vertical" >

                <LinearLayout
                    android:id="@+id/ll_top_s_part"
                    android:layout_width="match_parent"
                    android:layout_height="300dp"
                    android:background="#00000000"
                    android:orientation="vertical"
                    android:visibility="visible" >
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/ll_top_3"
                    android:layout_width="match_parent"
                    android:layout_height="100dp"
                    android:orientation="vertical" >
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/ll_top_2"
                    android:layout_width="match_parent"
                    android:layout_height="100dp"
                    android:orientation="vertical" >
                </LinearLayout>

                <Button
                    android:id="@+id/ll_top_botton"
                    android:layout_width="match_parent"
                    android:layout_height="100dp"
                    android:background="#D11141"
                    android:onClick="onClick_top_left"
                    android:orientation="vertical"
                    android:text="B T N" />

                <LinearLayout
                    android:id="@+id/ll_top_p_part"
                    android:layout_width="match_parent"
                    android:layout_height="300dp"
                    android:background="#fae7ec"
                    android:orientation="vertical" >
                </LinearLayout>
            </LinearLayout>
        </ScrollView>
    </FrameLayout>
</LinearLayout>

我尝试的第二种方式是使用动画,但没有成功,我正在寻找:

    public void SlideUP(View view, Context context) {
    view.startAnimation(AnimationUtils.loadAnimation(context,
            R.anim.slid_up));
}

public void SlideDown(View view, Context context) {
    view.startAnimation(AnimationUtils.loadAnimation(context,
            R.anim.slid_down));
}

我可以实现此任何其他方式吗?

1 个答案:

答案 0 :(得分:0)

我不认为添加这样可以在带有滚动条的单个屏幕上进行布局是一个好主意,您可以应用简单的框架布局并相应地列出它们,并且当单击任何所需的文件夹图标时,只需将其设置为顶部动画,它还会显示文件夹的内容。

https://github.com/kikoso/Swipeable-Cards

你可以自定义这个库,我做了类似的应用程序并使用我的自定义更改应用了相同的库。