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中监听下键弹 ...
最新文章
- Content-Type 知识 介绍
- Java项目:网上水果蔬菜项目系统设计和实现(java+springboot+mysql+ssm)
- android 代码混淆 gson,Android RecyclerView和Gson混淆问题
- Centos mysql的安装和配置
- NSMutableParagraphStyle /NSParagraphStyle
- include(),include_once(),requice(),require_once()的区别
- Qt没有被正确安装,请运行make install问题的解决
- Spark Core
- TigerGraph持续产品创新,发布最新的“全民图”版本
- C++头文件,预处理详解
- Javascript学习数据结构--集合(Set实现)
- CODE:BLOCK中的CreateProcess: No such file or directory
- spring boot项目Intellij 打包
- 微软 azure_Microsoft Azure,我们迁移数据的第一步
- 通过zabbix_sender实现批量传递key值
- 网络是怎样连接的_户根勤(带目录)
- java 动画 制作_DragonBones简单动画制作实例
- iNFTnews|Web3走进FIFA世界杯
- android大作业报告总结,android大作业总结报告.doc
- 周鸿祎带头,十家安全公司接受了这些尖锐拷问
热门文章
- excel排版成印刷版格式:批量转换成pdf
- mac os上onenote深色模式dark mode如何开启 2019
- delphi真的穷途末路了! 不变程序员的苦难和热爱的精神。
- python怎么写自己的名字_用python写一个序列图改名工具
- css 炫酷鎏金字体,颜色渐变
- plsql因目标主机或对象不存在_原创 | 由勒索软件谈起:重新审视工业信息安全,要从工业主机开始...
- Python之迭代器、装饰器、软件开发规范
- 南京航空航天大学计算机学院研究生,南京航空航天大学计算机学院2016研究生推免办法...
- 使用html+css实现一个静态页面(厦门旅游网站制作6个页面) 旅游网页设计制作 HTML5期末考核大作业,网站——美丽家乡。 学生旅行 游玩 主题住宿网页
- 苹果AirPods爆炸,跑步听歌很慌,别炸