向上/向下滚动时如何隐藏/显示视图?

时间:2018-02-24 09:57:33

标签: java android layout scrollview

在向上/向下滚动浏览器时如何隐藏/显示视图Foodpanda app

enter image description here

我希望在scrollview上/下时隐藏/显示视图(线性或相对布局),就像上面的gif一样。

但我的应用程序我不使用Recyclerview或列表视图(只是textview)。

如何创建它?

谢谢!

1 个答案:

答案 0 :(得分:0)

  

将滚动侦听器添加到recylerView

  1. 如果用户向下滚动,则启动翻译动画UPWARDS

  2. 如果用户向上滚动,则启动翻译动画DOWNWARDS

  3. 动画翻译UPWARDS: - (trans_upwards.xml)

    <?xml version="1.0" encoding="utf-8"?>
    <set
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:interpolator="@android:anim/linear_interpolator"
        android:fillAfter="true">
    
        <translate
            android:fromYDelta="0%p"
            android:toDelta="100%p"
            android:duration="300"
             />
    
    </set>
    

    动漫翻译DOWNWARDS: - (trans_downwards.xml)

    <?xml version="1.0" encoding="utf-8"?>
    <set
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:interpolator="@android:anim/linear_interpolator"
        android:fillAfter="true">
    
        <translate
            android:fromYDelta="100%p"
            android:toYDelta="0%p"
            android:duration="300"
             />
    
    </set>
    

    将滚动侦听器添加到recyclerView(并进行检查)

    boolean check_ScrollingUp = false;
    mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    
    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        super.onScrolled(recyclerView, dx, dy);
        if (dy > 0) {
            // Scrolling up
         if(check_ScrollingUp)
           {
              YourView.startAnimation(AnimationUtils.loadAnimation(context,R.anim.trans_downwards));
       check_ScrollingUp = false;
           }
    
        } else {
            // Scrolling down
             if(!check_ScrollingUp )
                 {
    
                          YourView
                          .startAnimation(AnimationUtils
                          .loadAnimation(context,R.anim.trans_upwards));
       check_ScrollingUp = true;
    
                   }
    
    
        }
     }
    
    @Override
    public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
        super.onScrollStateChanged(recyclerView, newState);
    
      }
    });