Android RecyclerView的使用(三)——瀑布流的实现
来源:互联网 发布:qq飞车b车 大黄蜂数据 编辑:程序博客网 时间:2024/06/05 22:47
Android RecyclerView的使用(三)——瀑布流的实现
前言: RecyclerView提供了一种插拔式的体验,高度的解耦,异常的灵活,通过设置它提供的不同LayoutManager,ItemDecoration , ItemAnimator实现绚丽的效果。
- 通过布局管理器LayoutManager,可以控制其显示的方式;
- 通过ItemDecoration,可以控制Item间的间隔(可定制);
- 通过ItemAnimator,可以控制Item增删的动画;
- 至于点击、长按事件,RecyclerView并没有给我们提供相应的方法接口,需要我们自己实现。
上一节我们了解了如何为RecyclerView 添加分割线本节我们将学习如何实现瀑布流。
效果图:
1、 布局文件。
<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/myRecyclerView" android:layout_width="match_parent" android:layout_height="match_parent"/></android.support.constraint.ConstraintLayout>
2、定义item的样式,item_single_imgview.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:background="#442F2F2F" android:layout_margin="3dp" android:layout_height="wrap_content"> <ImageView android:id="@+id/imgView" android:layout_width="match_parent" android:layout_height="match_parent" /></LinearLayout>
3、自定义Adapter适配器
public class StaggeredAdapter extends RecyclerView.Adapter<StaggeredAdapter.MyViewHolder> { private LayoutInflater mInflater; private Context mContext; private int[] imgIds; private List<Integer> heights; public StaggeredAdapter(Context context, int[] imgIds) { this.mContext = context; this.imgIds = imgIds; mInflater = LayoutInflater.from(context); this.heights = new ArrayList<>(); for (int i = 0; i < datas.size(); i++) { this.heights.add((int) (300 + Math.random()*300)); } } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = mInflater.inflate(R.layout.item_single_imgview, parent, false); MyViewHolder viewHolder = new MyViewHolder(view); return viewHolder; } @Override public void onBindViewHolder(MyViewHolder holder, int position) { ViewGroup.LayoutParams lp = holder.itemView.getLayoutParams(); lp.height = heights.get(position); holder.itemView.setLayoutParams(lp); holder.imageView.setBackgroundResource(imgIds[ position % imgIds.length]); } @Override public int getItemCount() { return mDatas.size(); } class MyViewHolder extends RecyclerView.ViewHolder { ImageView imageView; public MyViewHolder(View itemView) { super(itemView); imageView = itemView.findViewById(R.id.imgView); } }}
4、StaggeredActivity.java
public class StaggeredActivity extends AppCompatActivity { private RecyclerView recyclerView; private int[] imgIds; private StaggeredAdapter mAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_staggered); initDatas(); recyclerView = (RecyclerView) findViewById(R.id.myRecyclerView); mAdapter = new StaggeredAdapter(this, imgIds); recyclerView.setAdapter(mAdapter); recyclerView.setLayoutManager(new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL)); } private void initDatas() { imgIds = new int[]{R.mipmap.img01, R.mipmap.img02, R.mipmap.img03, R.mipmap.img04, R.mipmap.img05, R.mipmap.img06, R.mipmap.img07}; }}
就这样,我们实现了瀑布流,图片的高度是随机生成的。
阅读全文
0 0
- Android RecyclerView的使用(三)——瀑布流的实现
- android中RecyclerView的简单使用(三)——瀑布流
- Android RecyclerView 的基本使用--瀑布流
- android 瀑布流的实现(用recyclerview的实现的)
- Android使用RecyclerView实现瀑布流
- 强大的滚动控件——RecyclerView(三)瀑布流效果
- 使用RecyclerView实现的瀑布流高度自适应
- RecyclerView的简单使用以及实现瀑布流效果
- 5.使用RecyclerView优雅的实现瀑布流效果
- 使用RecyclerView实现的瀑布流高度自适应
- RecyclerView的瀑布流
- RecyclerView瀑布流的简单实现
- 基于RecyclerView的瀑布流实现
- RecyclerView用法之瀑布流的实现
- RecyclerView实现瀑布流的效果
- 【Android-RecyclerView】瀑布流实现
- 【Android-RecyclerView】瀑布流实现
- Android RecyclerView实现瀑布流
- 游戏人生
- 白话C++系列(const再现江湖)
- 数据结构实验之排序一:一趟快排
- java网络图片抓取及其引发的相关问题
- springboot框架用户信息的增删改
- Android RecyclerView的使用(三)——瀑布流的实现
- Unity3D
- poi导出EXCEL经典实现()
- Javaweb中最简单的文件上传
- 创建制定表空间和有空间大小的表
- CSS样式之overflow属性
- 问题:Tomcat环境配置好后,在命令行内运行 startup 显示 不是内部命令
- Tim
- Windows套接字I/O模型(5) -- 完成端口模型