一、RecycleView

  1. <android.support.v7.widget.RecyclerView
  2. android:id="@+id/my_recycler_view"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:scrollbars="vertical"/>
三个关键要素
LayoutManager 线性布局(LinearLayoutManager) Gird布局(GridLayoutManager) 瀑布流布局(StaggeredGridLayoutManager)
Adapter RecyclerView.Adapter<T> T为继承ViewHolder的实现类
Dataset RecyclerView.ViewHolder
recyclerView的条目点击事件需要自己写接口去处理。
 
其它补充知识
recycleView有预加载机制(系统只将屏幕可见范围之内的元素保存在内存中),当第一个Item的高度占据了屏幕时,也就是屏幕内此时只有一个Item,那么在加载下一个Item时会出现卡顿现象,因为内存中不存在可利用的Item,需要去新创建一个Item,造成卡顿。
解决办法,若使用的是LinearLayoutManager,只需重写getExtraLayoutSpace()方法(将返回LayoutManager应该预留的额外空间(显示范围之外,应该额外缓存的空间))。
  1.  LinearLayoutManager linearLayoutManager =newLinearLayoutManager(this){
    @Override
    protectedint getExtraLayoutSpace(RecyclerView.State state){
    return300;
    }
    };

    具体步骤

  1. //创建默认的线性LayoutManager
  2. mLayoutManager =newLinearLayoutManager(this);
  3. //设置recycleView的方向为横向
  4. //mLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
  5. mRecyclerView.setLayoutManager(mLayoutManager);
  6. //如果可以确定每个item的高度是固定的,设置这个选项可以提高性能
  7. mRecyclerView.setHasFixedSize(true);
  8. //创建并设置Adapter
  9. adapter =new rlAdapter();
  10. mRecyclerView.setAdapter(adapter);
  11. //处理条目点击事件
      adapter.setOnItemClickListener(new rlAdapter.OnRcvItemClickListener(){
@Override
publicvoid onItemClick(View view,int position){
Toast.makeText(MainActivity.this,"当前点击的是第:"+position +"个条目",Toast.LENGTH_SHORT).show();
}
});
 staticclass rlAdapter extendsRecyclerView.Adapter<RlViewHolder>implementsView.OnClickListener{

 //定义接口,处理Item的点击事件
publicstaticinterfaceOnRcvItemClickListener{
void onItemClick(View view,int position);
}
privateOnRcvItemClickListener itemClickListener ;
publicvoid setOnItemClickListener(OnRcvItemClickListener itemClickListener){
this.itemClickListener = itemClickListener;
}
@Override
publicRlViewHolder onCreateViewHolder(ViewGroup viewGroup,int i){
View view =View.inflate(viewGroup.getContext(),R.layout.item_listview,null);
view.setOnClickListener(this);
returnnewRlViewHolder(view);
} @Override
publicvoid onBindViewHolder(RlViewHolder rlViewHolder,int position){
rlViewHolder.iv.setImageResource(arrs[position%5]);
rlViewHolder.tv.setText("测试:"+position%5);
//将数据保存到itemView中
rlViewHolder.itemView.setTag(position);
}
@Override
publicint getItemCount(){
return100;
} @Override
publicvoid onClick(View v){
if(itemClickListener !=null){
itemClickListener.onItemClick(v,(Integer) v.getTag());
}
}
} staticclassRlViewHolderextendsRecyclerView.ViewHolder{
ImageView iv;
TextView tv; publicRlViewHolder(View itemView){
super(itemView);
iv =(ImageView) itemView.findViewById(R.id.iv);
tv =(TextView) itemView.findViewById(R.id.tv);
}
}

二、CardView

CardView继承自FrameLayout类,可以包含圆角和阴影。
通过使用android:elevation属性,创建一个阴影的卡片

1、xml中使用android:cardCornerRadius属性指定圆角半径

2、代码中使用CardView.setRadius 设置圆角半径

3、使用 android:cardBackgroundColor属性设置卡片颜色

4、代码中使用CardView.setBackgroundColor设置卡片颜色,可能会影响卡片的阴影

RecycleView和CardView的更多相关文章

  1. RecycleView + CardView 控件简析

    今天使用了V7包加入的RecycleView 和 CardView,写篇简析. 先上效果图: 原理图: 这是RecycleView的工作原理: 1.LayoutManager用来处理RecycleVi ...

  2. Android RecycleView + CardView 控件简析

    今天使用了V7包加入的RecycleView 和 CardView,写篇简析. 先上效果图: 原理图: 这是RecycleView的工作原理: 1.LayoutManager用来处理RecycleVi ...

  3. Android新特性之CardView的简单使用

    Android新特性之CardView的简单使用 我们学习下Android5.0的新增加的控件CardView.首先我们了解一下CardView的基本使用,然后结合RecycleView使用CardV ...

  4. Android学习之基础知识十五 — 最佳UI体验(Material Design实战)

    一.前言 长久以来,大多数人都认为Android系统的UI并不美观,至少没有iOS系统的美观.以至于很多IT公司在进行应用界面设计的时候,为了保证双平台的统一性,强制要求Android端的界面风格必须 ...

  5. Android最佳实践之Material Design

    Material概述及主题 学习地址:http://developer.android.com/training/material/get-started.html 使用material design ...

  6. 不可错过的几款GitHub开源项目

    工作之余或者周末感觉无聊?不知道干什么?想继续提高技术,但是不知道做什么的同学,看过来,不妨利用闲暇时间来撸几个 GitHub 上还不错的开源项目,本文推荐的开源项目比较适合新手.及对MVP设计模式不 ...

  7. Android控件_RecycleView+CarView+Palette联合应用

    最终效果 表格布局 垂直布局 横向布局 添加引用 build.gradle implementation 'com.android.support:recyclerview-v7:28.0.0' im ...

  8. CardView以及RecycleView的一些问题

    下面这些属性在listview的标签里有用,在recyclerView里没用. tools:listitem="@layout/list_single_answer_item_borrowe ...

  9. RecyclerView,CardView导入和使用(Demo)

    简介: 这篇文章是ANDROID L——Material Design详解(UI控件)的一个补充或者说是应用实例,如果有时间建议大家稍微浏览一下上篇文章. 本文主要介绍Android L新增加的两个U ...

随机推荐

  1. JS常用方法【私房菜-笔记】-持续整理中

    //记录一下前端开发中 JS常用的方法等,持续收集整理中 ---------------------------------------------------------- //处理键盘事件 禁止后 ...

  2. .Net程序员学用Oracle系列(24):数据字典、死锁

    1.静态数据字典 1.1.实用静态数据字典 1.2.运用静态数据字典 2.动态数据字典 2.1.实用动态性能视图 2.2.运用动态性能视图 3.死锁 3.1.定位死锁 3.2.解锁方法 3.3.强制删 ...

  3. Linux中grep命令学习

    1.简介 grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.Unix的grep家族包括grep.egrep和fgrep.egrep和fgrep的命令只跟grep有很小 ...

  4. OpenCV探索之路(十一):轮廓查找和多边形包围轮廓

    Canny一类的边缘检测算法可以根据像素之间的差异,检测出轮廓边界的像素,但它没有将轮廓作为一个整体.所以要将轮廓提起出来,就必须将这些边缘像素组装成轮廓. OpenCV中有一个很强大的函数,它可以从 ...

  5. Maven学习(三)

    maven相关概念 maven坐标 Maven世界拥有大量构建,当我们需要引用依赖包是,需要用一个用来唯一标识去确定唯一的一个构建.如果拥有了统一规范,就可以把查找工作交给机器. 类似于空间找点的坐标 ...

  6. 开涛spring3(1) - Spring概述

    1.1.1  Spring是什么 Spring是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发.应用程序是由 ...

  7. poi解析excel

    一.遇见的问题: 当单元格设置为日期类型时,cell.getCellStyle().getDataFormat()返回的值都为176. poi jar包3.14以上不支持用cell.getCellTy ...

  8. 从LINQ开始之LINQ to Objects(下)

    前言 上一篇<从LINQ开始之LINQ to Objects(上)>主要介绍了LINQ的体系结构.基本语法以及LINQ to Objects中标准查询操作符的使用方法. 本篇则主要讨论LI ...

  9. 读 Zepto 源码之集合元素查找

    这篇依然是跟 dom 相关的方法,侧重点是跟集合元素查找相关的方法. 读Zepto源码系列文章已经放到了github上,欢迎star: reading-zepto 源码版本 本文阅读的源码为 zept ...

  10. 如何编写Hexo主题

    完成一个Hexo的主题其实很简单,和写静态页面差不多,只是内容部分通过Hexo的变量去获取,而且Hexo还内置了一些辅助函数帮你快速方便地完成繁琐的处理. 起步 在写代码之前要先把项目结构搭建好,一个 ...