Android之RecycleView和CardView
来源:互联网 发布:网络信息抓取软件 合法 编辑:程序博客网 时间:2024/05/22 05:17
Android之RecycleView和CardView
RecyclerView相关类:
类名说明RecyclerView.Adapter
可以托管数据集合,为每一项Item创建视图并且绑定数据RecyclerView.ViewHolder承载Item视图的子布局RecyclerView.LayoutManager
负责Item视图的布局的显示管理RecyclerView.ItemDecoration给每一项Item视图添加子View,可以进行画分隔线之类的东西RecyclerView.ItemAnimator
负责处理数据添加或者删除时候的动画效果刚开始了解没有使用这么多类,主要的就是前三个类的使用,RecycleView和listview 的用法差不多,recycleview是v7包中的,我们使用也很简单,主要就是布局管理器要做好选择:
1 LinearLayoutManager
线性布局,LayoutManager的实现类,类似于实现ListView的风格,一般
ListView只有垂直的方向,而这里可包含两种类型,Vertical和Horizontal
2 GridLayoutManager
格子布局、继承自LinearLayoutManager,实现效果类似GridView
3 StaggeredGridLayoutManager
瀑布流布局、交错的格子布局、同样也是LayoutManager的实现类,类型包括Vertical和Horizontal,与GridLayoutManager很相似,不过是交错的格子,也就是宽高不等的格子视图、类似瀑布流的效果。
比较蛋疼就是没有提供一些点击监听和长按监听的方法,我们需要掌握他的一些点击和长按事件,对于RecyclerView其本身没有给我们提供这些事件监听,所以,对于这些事件,我们还得自己去实现。
这里简单的实现一个瀑布流布局来看下效果:
protected void initView(){ recyclerView = (RecyclerView) findViewById(R.id.recycle); recyclerView.setLayoutManager(new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL)); recyclerView.setHasFixedSize(true); adapter = new DemoAdapter(resoures,this); recyclerView.setAdapter(adapter); }
上面一段代码给出了recycleview的初始化,和布局格式,再来看看适配器:package com.example.luze.myapplication;import android.app.Activity;import android.content.Context;import android.graphics.Bitmap;import android.support.v7.widget.RecyclerView;import android.util.DisplayMetrics;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;/** * Created by luze on 2017-05-12. */public class DemoAdapter extends RecyclerView.Adapter<DemoAdapter.BaseViewHolder> { private int[] resus; private Context context; public DemoAdapter(int[] resus, Context context) { this.resus = resus; this.context = context; } @Override public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = View.inflate(context,R.layout.recycle_item,null); return new OneViewHolder(view); } @Override public void onBindViewHolder(BaseViewHolder holder, int position) { holder.setData(resus[position]); } @Override public int getItemCount() { return resus.length; } public class BaseViewHolder extends RecyclerView.ViewHolder { public BaseViewHolder(View itemView) { super(itemView); } void setData(Object data){ } } public class OneViewHolder extends BaseViewHolder{ private ImageView image ; public OneViewHolder(View itemView) { super(itemView); image = (ImageView) itemView.findViewById(R.id.id_image); DisplayMetrics metrics = new DisplayMetrics(); ((Activity)(image.getContext())).getWindowManager().getDefaultDisplay().getMetrics(metrics); int width =metrics.widthPixels; ViewGroup.LayoutParams params = image.getLayoutParams(); params.width = width/3; params.height = (int) (200+Math.random()*400); image.setLayoutParams(params); } @Override void setData(Object data) { if (data != null){ int ID = (int) data; image.setImageResource(ID); } } }}看到适配器的代码和listview就有很大的区别了,不过仔细研究也比较简单,我们需要在ViewHolder中做数据绑定。recycleview就分享到这里,再来看看cardview。
下面我们看看CardView新增了哪些属性:
- CardView_cardBackgroundColor 设置背景色
- CardView_cardCornerRadius 设置圆角大小
- CardView_cardElevation 设置z轴阴影
- CardView_cardMaxElevation 设置z轴最大高度值
- CardView_cardUseCompatPadding 是否使用CompadPadding
- CardView_cardPreventCornerOverlap 是否使用PreventCornerOverlap
- CardView_contentPadding 内容的padding
- CardView_contentPaddingLeft 内容的左padding
- CardView_contentPaddingTop 内容的上padding
- CardView_contentPaddingRight 内容的右padding
- CardView_contentPaddingBottom 内容的底padding
card_view:cardUseCompatPadding 设置内边距,V21+的版本和之前的版本仍旧具有一样的计算方式
card_view:cardPreventConrerOverlap 在V20和之前的版本中添加内边距,这个属性为了防止内容和边角的重叠
至于cardview的把上面的的几个属性用好就可以,在代码中没有很多的涉及。
- Android之RecycleView和CardView
- Android 使用RecycleView和CardView
- Android recycleview+cardview
- Android 5.0+(RecycleView、CardView、Palette)
- RecycleView和CardView笔记(一)
- 5.0 recycleview 和cardview基本使用
- Recycleview 多布局添加和cardview使用
- Android recycleview和cardview结合使用出现的边角阴影问题
- Android 5.0 之 RecyclerView 和 CardView
- RecycleView和CardView的简单介绍和用法
- android 5.0之cardview
- android MaterialDesign之CardView
- Android 5.0 之CardView
- Android控件之CardView
- Android学习之CardView
- Android CardView和Palette
- 使用cardview和recycleview时碰到的一些问题
- Android Material Design系列之RecyclerView和CardView
- scala 实例——一
- hive 同一个表不同分区的数据求和
- IOS安装CocoaPods详情过程
- 如何定义和实现新的GObject之对象方法
- Hash冲突的解决方式
- Android之RecycleView和CardView
- Timer 在异步子线程 要放到 Runloop里才能使用
- 微信公众号开发
- 对最小生成树算法的理解
- lodash
- cuda优化小结
- redis简单工具类
- JSP-1
- 一、Clion 2017.2安装配置及CMakefile.txt初认识