android如何实现筛选功能,Android——仿优酷节目筛选功能实现
来来来,先看下效果图~
这里有同学可能就已经想到了,这个不就是折叠式的toolbar实现的吗?对啊,我确实是这么做的,还是挺简单的,今天就给大家分享下code了,不过中间也遇到了些小插曲,比如:Toolbar上的文字不居中,分类不可点击等等。老规矩先上代码,跟着代码来分析总结。
布局文件
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/darkGrayBg"
android:fitsSystemWindows="true"
android:orientation="vertical">
android:id="@+id/title"
layout="@layout/toolbar_title_layout"/>
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="256dp"
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
android:id="@+id/collapsingToolbarLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/darkGrayBg"
android:fitsSystemWindows="true"
app:contentScrim="@color/darkGrayBg"
app:expandedTitleMarginEnd="64dp"
app:expandedTitleMarginStart="48dp"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
android:id="@+id/sortToolbar"
android:layout_width="match_parent"
android:layout_height="@dimen/dimen_40"
android:fitsSystemWindows="true"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"
app:layout_collapseMode="pin"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
android:id="@+id/sortToolbar_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:textColor="@color/white"
android:textSize="@dimen/font_size_14"/>
android:id="@+id/filter_sort_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
app:layout_collapseMode="none"
app:layout_collapseParallaxMultiplier="0.7"/>
android:id="@+id/filter_sort_result_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
android:id="@+id/load_result_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
注意:
1、布局结构必须是CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout+Toolbar,否则无效果哦,这几个控件在前面的博客中我们详细为大家讲解过了,可以参考博客:
Materail Design 入门(八)——CollapsingToolbarLayout的使用方法
Materail Design 入门(七)——AppBarLayout的使用方法
Materail Design 入门(四)——Toolbar的使用方法(1)
2、CollapsingToolbarLayout中Toolbar和VpRecyclerView的顺序不能反了,否则,Recyclerview将不能点击,因为Toolbar将会覆盖在Recyclerview上方,导致Recyclerview点击事件不响应。
3、因为直接使用Toolbar,Toolbar的文字内容不居中,所以在Toolbar中嵌套TextView解决文字居中问题。
4、 app:contentInsetLeft=”0dp”
app:contentInsetStart=”0dp”
使Toolbar的内容居中
Java代码
private void initView() {
setTitle(getString(R.string.filter));
mAppBarLayout.addOnOffsetChangedListener(new AppBarStateChangeListener() {
@Override
public void onStateChanged(AppBarLayout appBarLayout, State state) {
Log.d("STATE", state.name());
if (state == State.EXPANDED) { //展开状态
mSortToolbarTitle.setText("");
mFilterSortList.setVisibility(View.VISIBLE);
} else if (state == State.COLLAPSED) {//折叠状态
mSortToolbarTitle.setText(mFilterSortAdapter.getSortKey());
mFilterSortList.setVisibility(View.GONE);
} else { //中间状态
mSortToolbarTitle.setText("");
mFilterSortList.setVisibility(View.VISIBLE);
}
}
});
mFilterSortList.setLayoutManager(new LinearLayoutManager(this));
mFilterSortList.addItemDecoration(new RecycleViewDivider(this, R.drawable.line_divier));
mFilterSortList.setHasFixedSize(true);
mFilterSortAdapter = new FilterSortAdapter(this);
mFilterSortList.setAdapter(mFilterSortAdapter);
mFilterSearchtList.setLayoutManager(new GridLayoutManager(this, 3, GridLayoutManager
.VERTICAL, false));
mFilterSearchtList.setHasFixedSize(true);
mFilterSearchAdapter = new FilterSearchAdapter(this);
mFilterSearchtList.setAdapter(mFilterSearchAdapter);
mFilterSearchtList.setLoadingListener(new VpRecyclerView.LoadingListener() {
@Override
public void onRefresh() {
loadType = VpRecyclerView.REFRESH;
start = 0;
filterSearch();
}
@Override
public void onLoadMore() {
loadType = VpRecyclerView.LOADMORE;
start++;
filterSearch();
}
});
}
布局文件写对了基本上就完成了一大半了,java代码还是比较简单的,就是给标题和Recyclerview初始化赋值。这里需要注意的是何时展开Recyclerview何时折叠Recyclerview。这里我们给AppBarLayout添加一个监听事件:addOnOffsetChangedListener。根据他的state来控制Recyclerview的折叠和展开。
好了,讲解完了,本篇的目的还在于CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout+Toolbar的练习和应用哦。
android如何实现筛选功能,Android——仿优酷节目筛选功能实现相关推荐
- android仿疯狂猜图源码,Android开发实现高仿优酷的客户端图片左右滑动切换功能实例【附源码下载】...
本文实例讲述了Android开发实现高仿优酷的客户端图片左右滑动切换功能.分享给大家供大家参考,具体如下: 本例是用ViewPager去做的实现,支持自动滑动和手动滑动,不仅优酷网,实际上有很多商城和 ...
- android仿优酷菜单,Android编程实现仿优酷旋转菜单效果(附demo源码)
本文实例讲述了Android编程实现仿优酷旋转菜单效果.分享给大家供大家参考,具体如下: 首先,看下效果: 不好意思,不会制作动态图片,只好上传静态的了,如果谁会,请教教我吧. 首先,看下xml文件: ...
- 高仿优酷Android客户端图片左右滑动(自动切换)
本例是用ViewPager去做的实现,支持自动滑动和手动滑动,不仅优酷网,实际上有很多商城和门户网站都有类似的实现: 具体思路: 1. 工程中需要添加android-support-v4.jar,才能 ...
- Android 高仿优酷旋转菜单
这是一个很早版本的优酷菜单,效果挺不错的,实现起来也挺简单的.废话不说,直接上代码: 首先是xml文件: <RelativeLayout xmlns:android="http://s ...
- Android仿优酷视频的悬浮窗播放
Android仿优酷视频的悬浮窗播放 之前接了需求要让视频播放时可以像优酷视频那样在悬浮窗里播放,并且悬浮窗和主播放页面之间要实现无缝切换,项目中使用的是自封装的ijkplayer 这个要求就代表不能 ...
- android 优酷 自动全屏播放,Android如何实现仿优酷视频的悬浮窗播放效果
Android如何实现仿优酷视频的悬浮窗播放效果 发布时间:2020-07-11 10:24:43 来源:亿速云 阅读:228 作者:清晨 这篇文章主要介绍Android如何实现仿优酷视频的悬浮窗播放 ...
- android浮窗播放器,Android仿优酷视频的悬浮窗播放效果
之前接了需求要让视频播放时可以像优酷视频那样在悬浮窗里播放,并且悬浮窗和主播放页面之间要实现无缝切换,项目中使用的是自封装的ijkplayer 这个要求就代表不能在悬浮窗中新建视频控件,所以需要在悬浮 ...
- Android开发(17)-通过安卓API的Tabs3实现仿优酷tabhost效果
课程还没有讲了多少,前两天老师就让自己写个视频播放器客户端,这个是他上课讲的一个小小demo,通过查看安卓API的tabs3,实现仿优酷视频客户端的tabhost效果.我的API路径是D:\andro ...
- Android Tv端仿优酷酷喵——播放界面下拉弹出选项窗
自己写了一个Andorid TV端动画实例,主要是仿优酷酷喵里的下拉弹窗的效果,如下图: 这里把弹框写成了一个弹出的dialog,把dialog的背景设成黑色半透明,然后在activity中监听下键弹 ...
最新文章
- Keil代码整体偏移和查找功能
- Android 卡片翻转动画效果
- Wince6 RIL层移植
- asp连接不到我mysql里_ASP连接MYSQL问题点解决
- 激光SLAM学习--移动机器人技术系列课(智东西)
- .NET 指南:许可请求
- onclick 拼接时如何传递json对象
- 微信公众平台客户端调试工具
- lte 在网络覆盖方面应该注意哪些问题_TD-LTE网络深度覆盖三个受限因素及四大解决策略...
- [论文]论文的一般结构
- vim can not open syntax.vim 解决方法
- 测试用例设计方法-正交试验常用正交表
- uni-app做收货地址功能
- 转发-分享手机游戏辅助编程开发教程
- 安庆集团-冲刺日志(第二天)
- NPOI导出Excel 65536限制
- Linux防止stack缓冲区溢出的有效方法
- 利用STM32CubeMX软件生成USB_DEVICE_SD卡虚拟U盘
- Mac Xcode opencv C++环境配置 保姆级教程 填坑记录 19年最新版本
- arcgis里dem填洼_ArcGIS水文分析实战教程(4)地形预处理