ListView上滑和下滑,显示和隐藏Toolbar的实现方法
文件大小: 71k
源码售价: 10 个金币 积分规则     积分充值
资源说明:ListView上滑和下滑,显示和隐藏Toolbar的实现方法 Android开发中,ListView是一种常用的控件,它可以展示大量的数据,但是当用户滑动ListView时,如果Toolbar一直显示在屏幕上,可能会影响用户的体验。因此,实现ListView上滑和下滑,显示和隐藏Toolbar的功能是非常有用的。本文将为大家分享一篇ListView上滑和下滑,显示和隐藏Toolbar的实现方法,具有很好的参考价值,希望对大家有所帮助。 在AndroidManifest.xml文件中,我们需要隐藏系统自带的ActionBar,在标签中添加android:theme="@style/Theme.AppCompat.Light.NoActionBar",并且Activity需要继承AppCompatActivity。 在布局文件中,我们需要添加Toolbar和ListView。Toolbar是ActionBar的替代品,它可以提供更多的自定义功能。ListView是用来展示数据的控件,它可以自动加载更多的数据。我们可以在activity_main.xml文件中添加以下代码: ```xml ``` 在MainActivity中,我们需要获取ListView和Toolbar的实例,并且设置ListView的Adapter。我们还需要定义一些变量来记录用户的滑动距离和toolbar的显示状态。 ```java package com.example.listview_unit4_1; import android.animation.ObjectAnimator; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.ViewConfiguration; import android.widget.ArrayAdapter; import android.widget.ListView; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private ListView listView; private List listViewData;//数据源 private ArrayAdapter adapter; private Toolbar toolbar; private int mTouchSlop;//系统认为的最小滑动距离 private float mFirstY;//用户首次触摸的Y坐标 private float mLastY;//用户滑动结束时Y坐标 private ObjectAnimator mAnimator;//将控件与动画联系起来的类(可以使指定的控件,实现指定的动画效果) private boolean mShow;//toolbar是否显示 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); toolbar = (Toolbar) findViewById(R.id.toolbar); listView = (ListView) findViewById(R.id.list_view); listViewData = new ArrayList<>(); adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, listViewData); listView.setAdapter(adapter); //... } ``` 在onTouchEvent方法中,我们需要记录用户的滑动距离,并且根据滑动距离来决定toolbar是否显示。 ```java @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: mFirstY = event.getY(); break; case MotionEvent.ACTION_MOVE: mLastY = event.getY(); if (mLastY - mFirstY > mTouchSlop) { //用户上滑 mShow = false; mAnimator = ObjectAnimator.ofFloat(toolbar, "translationY", 0, -toolbar.getHeight()); mAnimator.start(); } else if (mFirstY - mLastY > mTouchSlop) { //用户下滑 mShow = true; mAnimator = ObjectAnimator.ofFloat(toolbar, "translationY", -toolbar.getHeight(), 0); mAnimator.start(); } break; default: break; } return super.onTouchEvent(event); } ``` 在上面的代码中,我们使用ObjectAnimator来实现toolbar的动画效果。当用户上滑时,toolbar会隐藏;当用户下滑时,toolbar会显示。 实现ListView上滑和下滑,显示和隐藏Toolbar的功能需要我们合理地使用ListView和Toolbar,并且记录用户的滑动距离,并根据滑动距离来决定toolbar是否显示。这个功能可以大大提高用户的体验。
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。