位置: 编程技术 - 正文

Material Design:利用RecyclerView CardView实现新闻卡片样式

编辑:rootadmin

推荐整理分享Material Design:利用RecyclerView CardView实现新闻卡片样式,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

转载 请注明 明桑Android

这是Material Design的第三篇,前两篇介绍了Design Support Library中引入的新的控件(导航视图,悬浮ActionBar等的用法)

拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar..)

Material Design: NavigationView FlaotingActionBar SnackBar的使用

今天主要介绍:RecyclerView 和 CardView的用法,通过RecyclerView和CardView实现新闻卡片。

本文代码地址:CardViewDemo

代码中用到的图片: news_photo.zip

最终要实现的效果:

1,支持低版本

RecyclerView 和 CardView都是在Android 5.0中引入的,所以要想在低版本中使用,需要在build.gradle中添加:

2,CardView的使用

你可以简单的认为它是一个使用了Material Desgin风格的FrameLayout,只不过比普通的FrameLayout多了圆角背景和阴影效果。所以它常用作ListView 或者 RecyclerView等视图Item的布局容器;

我们自然可以联想到它的使用跟FrameLayout非常相似,只不多多了几个用于控制圆角、阴影等自身特有的属性:

创建:res/layout/news_item.xml

我们注意到CardView里面有三个属性:

以上的布局效果:

2,RecyclerView的使用

RecyclerView可以看做是升级版的ListView,它具有更高的可扩展性,同时可以实现水平和垂直布局;之所以说是ListView的升级版,它解决了很多以前在使用ListView中不得不面对的问题:包括ListView的优化,动态删除ListView Item等,它都对此都做了很好的封装;

相比ListView,RecyclerView主要有以下特点:

适配器中需要提供ViewHolder类:ListView中者不是必须的,但在RecyclerView是必须的灵活的自定义Item布局:ListView只能实现垂直的线性列布局,但RecyclerView可以通过RecyclerView.LayoutManager实现Item任何复杂的布局容易的Item动画:RecyclerView.ItemAnimator用来处理Item动画数据源:ListView可以通过ArrayAdapter CursorAdapter等直接提供数据源,RecyclerView需要自定义数据源Item项:ListView可以通过android:divider=”“等属性控制Item项的显示,RecyclerView可以通过RecyclerView.ItemDecoration来设置Item CLick Listener:ListView提供了AdapterView.OnItemClickListener来实现Item事件的监听,RecyclerView没有直接提供类似方法,需要自己实现;

关于二者的更多比较,参见这篇文章:Android RecyclerView vs ListView | Comparison

2.1,使用RecyclerView布局

在Activity中:

2.2,使用LayoutManager Material Design:利用RecyclerView CardView实现新闻卡片样式

不同于ListView,RecyclerView需要通过LayoutManager来管理和回收Item View,你可以通过继承RecyclerView.LayoutManager实现自己的LayoutManager,也可以使用现有的LayoutManager:LinearLayoutManager GridLayoutManager StaggeredGridLayoutManager;

以LinearLayoutManager为例

2.3,定义数据类

这里我们建立一个新闻类:我们这里implements Serialzable是为了在Intent中能够直接传递News对象;

News.java

2.4,自定义Adappter

这部分内容比较重要,如果对ListView自定义Adapter比较熟悉的话,也很容易看懂:相比而言RecyclerView Adapter中必须要实现ViewHolder类,然后需要覆写几个方法,唯一复杂的就是我在onBingViewHolder方法中为两个按钮和CardView实现了单击事件,跳转到新闻详细页面(NewsActivity)或者弹出分享;

RecyclerViewAdapter.java

2.5,完成我们的Demo

关于RecyclerView和CardView的部分已经完成了,剩下的就是修修补补了,我们还需要创建NewsActivity用来显示新闻详细内容,布局也使用CardView,

res/layout/activity_news.xml

布局效果:

NewsActivity.java

MainActivity.java

注意到上面的新闻内容实在太长,所以我们使用R.string:

res/values/strings.xml

Manifest.xml记得将NewsActivity添加进去:

总结:

限于篇幅,除了CardView和RecyclerView,其余的部分讲解的不太详细,这部分不太熟悉的可以留言讨论哈。RecyclerView理论上是可以完成ListView所有可以完成的,但代码比较复杂,所以二者的使用根据自己的具体情况而定,不过在Material Design下,数据集比较复杂时建议使用RecyclerView!

参考资料:

Getting Started With RecyclerView and CardView on Android

Using the RecyclerView

Using the CardView

微博: @明桑Android邮箱: <@.com>个人主页: Android修行记

微信公众号: ITBird

ListView的item折叠功能实现,使用ExpandableListView 来酷狗面试的时候面试官问过我,如果要显示/隐藏ListView的某个Item项目中的某些内容,我会怎么做。我当时的回答是,做一个布局文件里面把所有要用

Cannot run program "/home/mohemi/Program/adt-bundle-linux-x_-/sdk//tools/emulator": erro 在位的Ubuntu下,打开android模拟器出现以下报错:StartingemulatorforAVD'Android'Failedtostartemulator:Cannotrunprogram/home/XX/adt-bundle-linux-x_-/sdk//tools/emulator:err

多个Fragment时的加载优化,使用懒加载 使用多个Fragment的时候如果在Activity启动的时候一股脑全部将Fragment在后台加载上来,显然并不是最合适的方式,因为或许用户根本就不会想进入相应的

标签: Material Design:利用RecyclerView CardView实现新闻卡片样式

本文链接地址:https://www.jiuchutong.com/biancheng/386839.html 转载请保留说明!

上一篇:java 线程池的原理以及使用(java中线程池原理)

下一篇:ListView的item折叠功能实现,使用ExpandableListView(listview.items.add)

  • 原材料加工成产品的会计分录
  • 高温费国家有规定,一定要支付吗?
  • 保本理财收益增值税纳税主体
  • 印花税申报减免额不能为0怎么报
  • 小规模变更为一般纳税人流程
  • 有税控盘怎么领发票
  • 电子发票认证显示未开具
  • 两金占流动资产比重
  • 为职工提供免费午餐
  • 小规模企业应交增值税的二级科目
  • 用党费返还款购置资产应如何账务处理?
  • 附加税的计税依据是实缴增值税
  • 售后人员出差计入哪个科目
  • 无形资产土地的入账价值包括哪些
  • 一般纳税人增值税优惠政策
  • 不动产的进项税额分两年抵扣吗?
  • 关于进项税额转出的规定
  • 未达起征点销售额和其他免税销售额
  • 工资薪金总额是指月还是全年
  • 产品毛利率计算表
  • 企业白条报销和采取措施
  • 企业向个人借款是否交印花税
  • 库存商品无发票所得税怎么调增
  • 附加税是销项税减去进项税
  • 怎么更改mac
  • 进项税额转出能进成本吗
  • 资产减值损失期末余额在哪方
  • 长期待摊费用属于什么要素
  • 上海中秋活动2021
  • 项目部可以直接给工人结账吗
  • ps工具栏失灵
  • 利息收入增值税确认时点
  • 企业财务人员如何防范电信诈骗
  • echarts高德地图自定义区域
  • 司法拍卖所购的房产
  • 公司给我多交了社保用不用退
  • 共管账户可以转账吗
  • 浏览器本地存储的方式
  • 被黑客攻击
  • hexdump windows
  • wordpress自定义文章模板
  • 关于低值易耗品的说法中不正确的是
  • 一般纳税人企业所得税5%还是25%
  • 发票纳税识别号和名称打印出来不齐怎么回事
  • 织梦怎么新建页面
  • 数据库损坏了怎么修复
  • 一般纳税人增值税税率
  • 发放职工工资是什么支出
  • 理财产品怎么收费
  • 免租期可以退房吗
  • 期末结转主营业务成本
  • 公司对公账户没钱了辞退员工
  • 异地工程可以在公司所在地缴纳税款吗
  • 可供分配利润是未分配利润吗
  • 差额清算系统与全额清算系统的区别
  • 现金支票取现的法律规定
  • 小微企业免税的标准
  • 外贸企业有内销和外销是否分开做账
  • 现金收款凭证的填制日期应当是
  • win7系统怎么设置开机启动项
  • 微软宣布9月30日停止在俄罗斯服务
  • mac怎么复制文件路径地址
  • linux系统故障及解决方法
  • xp系统提升性能
  • win 10 ie浏览器
  • won7系统优化
  • win8电脑路由器网络受限怎么办
  • git 常用指令
  • Node.js中的核心模块包括哪些内容?
  • unity点击3d物体
  • unity更新下载文件
  • python数据结构与算法题库
  • gps坐标计算距离公式工具
  • jQuery ajax全局函数处理session过期后的ajax跳转问题
  • 开票系统怎么升级?
  • 北京顶点b128怎么样
  • 进项税额的抵扣凭证
  • 税务更名需要什么材料
  • 航天金税开票软件服务费可以抵扣税款吗
  • 已经开票的房子还能退吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设