RecyclerView采用StaggeredGridLayoutManager布局的瀑布流效果
来源:互联网 发布:矿泉水国家标准数据 编辑:程序博客网 时间:2024/06/01 12:18
参考网友的文章,自己动手试试:
布局文件:
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:background="#060000" android:layout_height="match_parent"><android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="wrap_content" android:layout_height="wrap_content"></android.support.v7.widget.RecyclerView></LinearLayout>
item.xml:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content"> <ImageView android:id="@+id/img" android:layout_width="match_parent" android:layout_height="wrap_content" android:adjustViewBounds="true" android:scaleType="centerCrop"/> <TextView android:id="@+id/title" android:textColor="#fff" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center"/></LinearLayout>
实体类:Product.java
package com.example.tes.recyclerviews;/** * Created by no1 on 2016/7/14. */public class Product { private int img; private String title; public Product(int img, String title) { this.img = img; this.title = title; } public int getImg() { return img; } public void setImg(int img) { this.img = img; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; }}
适配器:MyAdapter.java
package com.example.tes.recyclerviews;import android.content.Context;import android.support.v7.widget.RecyclerView;import android.support.v7.widget.RecyclerView.ViewHolder;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TextView;import java.util.List;/** * Created by no1 on 2016/7/14. */public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyHolder> { private List<Product> data; private Context context; private int resouce_id; public MyAdapter(List<Product> data, Context context, int resouce_id) { this.data = data; this.context = context; this.resouce_id = resouce_id; } @Override public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(resouce_id,null); MyHolder myHolder = new MyHolder(view); return myHolder; } @Override public void onBindViewHolder(MyHolder holder, int position) { holder.img.setImageResource(data.get(position).getImg()); holder.title.setText(data.get(position).getTitle()); } @Override public int getItemCount() { return data.size(); } public class MyHolder extends ViewHolder { private TextView title; private ImageView img; public MyHolder(View view) { super(view); img = (ImageView) view.findViewById(R.id.img); title = (TextView) view.findViewById(R.id.title); } }}
主活动:MainActivity.java
package com.example.tes.recyclerviews;import android.app.Activity;import android.os.Bundle;import android.support.v7.widget.RecyclerView;import android.support.v7.widget.StaggeredGridLayoutManager;import java.util.ArrayList;import java.util.List;public class MainActivity extends Activity { private List<Product> data; private int[] imgs ={ R.drawable.pp0,R.drawable.pp1,R.drawable.pp2,R.drawable.pp3,R.drawable.pp4,R.drawable.pp5,R.drawable.pp6,R.drawable.pp7,R.drawable.pp8,R.drawable.pp9, R.drawable.pp10,R.drawable.pp11,R.drawable.pp12,R.drawable.pp13,R.drawable.pp14,R.drawable.pp15,R.drawable.pp16,R.drawable.pp17,R.drawable.pp18,R.drawable.pp19 }; private String[] titles ={ "春雪","夏雨","秋菊","冬梅","玫瑰","晓月","如花","燕雀","青瓷","浮萍", "翡翠","红缨","踏雪","彩石","霓凰","鸳鸯","冷月","飘雪","采莲","紫苑" }; private RecyclerView recyclerView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initData(); initView(); } private void initView() { recyclerView = (RecyclerView) findViewById(R.id.recyclerView); recyclerView.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL)); MyAdapter adpter = new MyAdapter(data,MainActivity.this,R.layout.item); recyclerView.setAdapter(adpter); SpacesItemDecoration decoration=new SpacesItemDecoration(16); recyclerView.addItemDecoration(decoration); } private void initData() { data = new ArrayList<Product>(); for(int i=0;i<imgs.length;i++){ Product product = new Product(imgs[i],titles[i]); data.add(product); } }}
分割线类:SpaceItemDecoration.java
package com.example.tes.recyclerviews;/** * Created by no1 on 2016/7/14. */import android.graphics.Rect;import android.support.v7.widget.RecyclerView;import android.view.View;public class SpacesItemDecoration extends RecyclerView.ItemDecoration { private int space; public SpacesItemDecoration(int space) { this.space=space; } @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { outRect.left=space; outRect.right=space; outRect.bottom=space; if(parent.getChildAdapterPosition(view)==0){ outRect.top=space; } }}
效果图:
0 0
- RecyclerView采用StaggeredGridLayoutManager布局的瀑布流效果
- RecyclerView 瀑布流的配置以及它的 StaggeredGridLayoutManager 布局管理器的使用
- 瀑布流 RecycleView 的 StaggeredGridLayoutManager?
- 使用StaggeredGridLayoutManager实现瀑布流效果
- 使用StaggeredGridLayoutManager实现瀑布流效果
- Android RecyclerView+StaggeredGridLayoutManager实现瀑布流图片闪烁问题
- RecyclerView布局+瀑布流
- Recyclerview 瀑布流效果
- Android RecyclerView 的瀑布流式布局
- RecyclerView的简单瀑布流效果
- 使用RecyclerView展示瀑布流的效果
- RecyclerView实现瀑布流的效果
- RecyclerView的横向布局及点击事件(也可做瀑布流效果)
- RecyclerView 实现瀑布流效果
- RecyclerView实现瀑布流效果
- RecyclerView和StaggeredGridLayoutManager实现瀑布流向下滑动item跳动、留白的问题
- RecyclerView的瀑布流
- RecyclerView的瀑布流制作热门搜索效果
- Impala问题汇总
- 编程题目:The Coupon Code
- 有序数组长度为N 元素出现的长度为 大于等于 N 除 4 的最小的数
- Retrofit返回结果成功与失败相反
- static 方法和static 变量
- RecyclerView采用StaggeredGridLayoutManager布局的瀑布流效果
- L2-010. 排座位
- 劣质的草(USACO 美国信息学月赛)【7.13考试第一题】
- 我的多项式输出
- boost::program_options 解析命令行参数
- UITableView默认加载的区域
- Native层怎样获得java层实现的服务,如activity manager
- 框架插件使用
- kafka常见问题