您的位置:首页 > 其它

RecyclerView

2016-04-16 22:27 507 查看

RecyclerView

v7包里才有的,用来代替ListView的一个新的组件。

优势:

1.在初始化ViewHolder的时候(onCreateViewHolder),就自动实现了优化,不需要自己写ViewHolder的一些判断,组件优化的非常好。

2.相对于ListView,RecyclerView可以使用LinearLayoutManager等类似的布局,直接修改布局的样式,不在需要自己去写新的布局了。

3.RecyclerView具备很好的结构层次,可以将ViewHolder和Adapter分开。

首先添加RecyclerView的V7包。

demo如下:

//        rv = new RecyclerView(this);
//        setContentView(rv);
//        rv.setLayoutManager(new LinearLayoutManager(this));
//        rv.setAdapter(new RecyclerView.Adapter() {
//
//            class  MyViewHolder extends RecyclerView.ViewHolder {
//                TextView tv;
//                public MyViewHolder(TextView itemView) {
//                    super(itemView);
//                    tv = itemView;
//                }
//                public TextView getTv()
//                {
//                    return tv;
//                }
//            }
//
//            @Override
//            public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
//                return null;
//            }
//
//            @Override
//            public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) {
//
//            }
//
//            @Override
//            public int getItemCount() {
//                return 0;
//            }
//        });


RecyclerView rv ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportFragmentManager().beginTransaction().replace(R.id.linearLay, new mainFragment()).commit();

rv = new RecyclerView(this);
setContentView(rv);
rv.setLayoutManager(new LinearLayoutManager(this));
rv.setAdapter(new RecyclerView.Adapter() {

class  MyViewHolder extends RecyclerView.ViewHolder {
TextView tv;
public MyViewHolder(TextView itemView) {
super(itemView);
tv = itemView;
}
public TextView getTv()
{
return tv;
}
}

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
return new MyViewHolder(new TextView(viewGroup.getContext()));
}

@Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) {
MyViewHolder myViewHolder = (MyViewHolder)viewHolder;
myViewHolder.getTv().setText(data[i]);
}

@Override
public int getItemCount() {
return data.length;
}

String [] data = new String[]{"aaa","bbb","ccc"};
});


//可以查看依赖的写法
//http://www.mvnrepository.com/

//RecyclerView是ListView升级版
//1:创建RecyclerView对象
//1-1:创建RecyclerView对象
//1-2:创建RecyclerView对象每一项的布局
//2:创建布局管理器,来管理RecyclerView对象的每一项
//2-1:布局管理器线性布局【垂直、水平】【每行只能显示一项】
//2-2:布局管理器网格布局【垂直、水平】【每行可以显示多项】
//2-2:布局管理器瀑布流布局【垂直、水平】【每行可以显示多项】【每项的高度不一样,造成参差不齐的多栏布局】
//3:创建适配器
//3-1:创建适配器对象
//3-2:创建适配器集合关联
//3-3:创建ViewHolder
//3-4:集合数据绑定到ViewHolder

//4:全部组合起来形成RecyclerView对象


RecyclerView还可以实现横向滑动视图。

Android L中的RecyclerView 、CardView 、Palette的使用

 CardView

CardView
CardView继承自FrameLayout类,可以在一个卡片布局中一致性的显示内容,卡片可以包含圆角和阴影。CardView是一个Layout,可以布局其他View。CardView 的使用可以参考《Material Design UI Widgets》。文章最后会给出这篇文章示例代码。


Palette

Palette从图像中提取突出的颜色,这样可以把色值赋给ActionBar、或者其他,可以让界面整个色调统一,效果见上图(Palette)。
Palette这个类中提取以下突出的颜色:

Vibrant  (有活力)

Vibrant dark(有活力 暗色)

Vibrant light(有活力 亮色)

Muted  (柔和)

Muted dark(柔和 暗色)

Muted light(柔和 亮色)

itmap bm = BitmapFactory.decodeResource(getResources(), item.image);
Palette palette = Palette.generate(bm);
if (palette.getLightVibrantColor() != null) {
name.setBackgroundColor(palette.getLightVibrantColor().getRgb());
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(palette.getLightVibrantColor().getRgb()));
// getSupportActionBar().

}


/article/1361160.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: