ListView上滑和下滑,显示和隐藏Toolbar的实现方法
ListView上滑和下滑,显示和隐藏Toolbar的实现方法 Android开发中,ListView是一种常用的控件,它可以展示大量的数据,但是当用户滑动ListView时,如果Toolbar一直显示在屏幕上,可能会影响用户的体验。因此,实现ListView上滑和下滑,显示和隐藏Toolbar的功能是非常有用的。本文将为大家分享一篇ListView上滑和下滑,显示和隐藏Toolbar的实现方法,具有很好的参考价值,希望对大家有所帮助。 在AndroidManifest.xml文件中,我们需要隐藏系统自带的ActionBar,在<application>标签中添加android:theme="@style/Theme.AppCompat.Light.NoActionBar",并且Activity需要继承AppCompatActivity。 在布局文件中,我们需要添加Toolbar和ListView。Toolbar是ActionBar的替代品,它可以提供更多的自定义功能。ListView是用来展示数据的控件,它可以自动加载更多的数据。我们可以在activity_main.xml文件中添加以下代码: ```xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.listview_unit4_1.MainActivity"> <ListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="match_parent" /> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="@color/colorPrimary" /> </RelativeLayout> ``` 在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<String> listViewData;//数据源 private ArrayAdapter<String> 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是否显示。这个功能可以大大提高用户的体验。
- 粉丝: 3
- 资源: 942
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助