如何从顶部滑入隐藏视图

时间:2017-08-23 04:57:25

标签: android android-animation android-view

如果点击View上的按钮/图片/标签,我想实现从顶部滑动的ActionBar。我希望它像默认的DrawerLayout一样工作,除了从左/右侧滑动,它在这种情况下从上到下滑动。

我该如何解决这个问题? Android是否有一个处理此问题的默认类或操作?

我设法提到这个解决方案AndroidSwipeLayout。然而,它并没有真正做我想要的。

提前谢谢大家。

1 个答案:

答案 0 :(得分:2)

如果您有一个按钮,请点击该按钮调用以下功能,如下所示。

clickMe.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        yourLinerLayout.setVisibility(View.VISIBLE);
        setLayoutAnim_slideDown(view);
    }
});

这里是setLayoutAnim_slideDown功能,它会向下滑动您要从上到下滑动的布局。

public void setLayoutAnim_slideDown(ViewGroup panel) {

    AnimationSet set = new AnimationSet(true);

    Animation animation = new TranslateAnimation(
            Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF,
            0.0f, Animation.RELATIVE_TO_SELF, -1.0f,
            Animation.RELATIVE_TO_SELF, 0.0f);

    // Set the duration here for animation in millis. 
    animation.setDuration(2000);
    animation.setAnimationListener(new Animation.AnimationListener() {

        @Override
        public void onAnimationStart(Animation animation) {
        }

        @Override
        public void onAnimationRepeat(Animation animation) {
        }

        @Override
        public void onAnimationEnd(Animation animation) {
        }
    });
    set.addAnimation(animation);

    LayoutAnimationController controller = new LayoutAnimationController(
            set, 0.25f);
    panel.setLayoutAnimation(controller);
}

例如,我的布局是这样的。

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:id="@+id/slider"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:background="@color/colorAccent"
        android:orientation="horizontal"
        android:visibility="gone">

        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center"
            android:text="masud is noob"
            android:textColor="@android:color/white"
            android:textStyle="bold" />
    </LinearLayout>

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="click me" />

</android.support.design.widget.CoordinatorLayout>

名为LinearLayout的{​​{1}}内的项目将在此处制作动画。