使用RecylerView实现瀑布流图片
来源:互联网 发布:电子画板手绘软件 编辑:程序博客网 时间:2024/05/16 16:15
ImageUtil
package com.qizu.zhoukaocar;/** * Created by WangChang on 2016/4/3. */public class ImageUtil { public final static String[] imageUrls = new String[]{ "http://img.my.csdn.net/uploads/201508/05/1438760758_3497.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760758_6667.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760757_3588.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760756_3304.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760755_6715.jpeg", "http://img.my.csdn.net/uploads/201508/05/1438760726_5120.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760726_8364.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760725_4031.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760724_9463.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760724_2371.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760707_4653.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760706_6864.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760706_9279.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760704_2341.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760704_5707.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760685_5091.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760685_4444.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760684_8827.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760683_3691.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760683_7315.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760663_7318.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760662_3454.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760662_5113.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760661_3305.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760661_7416.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760589_2946.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760589_1100.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760588_8297.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760587_2575.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760587_8906.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760550_2875.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760550_9517.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760549_7093.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760549_1352.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760548_2780.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760531_1776.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760531_1380.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760530_4944.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760530_5750.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760529_3289.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760500_7871.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760500_6063.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760499_6304.jpeg", "http://img.my.csdn.net/uploads/201508/05/1438760499_5081.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760498_7007.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760478_3128.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760478_6766.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760477_1358.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760477_3540.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760476_1240.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760446_7993.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760446_3641.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760445_3283.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760444_8623.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760444_6822.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760422_2224.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760421_2824.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760420_2660.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760420_7188.jpg", "http://img.my.csdn.net/uploads/201508/05/1438760419_4123.jpg", };}
主方法
package com.qizu.zhoukaocar;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.RecyclerView;import android.support.v7.widget.StaggeredGridLayoutManager;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity { private RecyclerView recyclerView; private List<String> mDatas; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initData(); initView(); } private void initData() { mDatas = new ArrayList<String>(); for (int i = 0 ; i < ImageUtil.imageUrls.length ; i++){ String data = ImageUtil.imageUrls[i]; mDatas.add(data); } } private void initView() { recyclerView = (RecyclerView) findViewById(R.id.recyclerView); //添加布局管理 StaggeredGridLayoutManager manager = new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL); recyclerView.setLayoutManager(manager); //设置适配器 recyclerView.setAdapter(new RecycleAdapter(this,mDatas)); //设置item添加和删除的动画// recyclerView.setItemAnimator(); //设置分隔线// recyclerView.addItemDecoration(new DividerGridItemDecoration(this)); }}适配器
package com.qizu.zhoukaocar;import android.content.Context;import android.graphics.Bitmap;import android.support.v7.widget.RecyclerView;import android.util.SparseArray;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.LinearLayout;import com.bumptech.glide.Glide;import com.bumptech.glide.request.animation.GlideAnimation;import com.bumptech.glide.request.target.SimpleTarget;import com.bumptech.glide.request.target.Target;import java.util.List;/** * Created by jiuhao on 2017/11/18. * data 2017/11/18 * time 上午 10:30 */public class RecycleAdapter extends RecyclerView.Adapter<RecycleAdapter.MyViewHolder> { private List<String> mDatas; private Context context; private LayoutInflater inflater; private SparseArray<Integer> heightArray; public RecycleAdapter(Context context , List<String> mDatas){ this.context = context; this.mDatas = mDatas; this.inflater = LayoutInflater.from(context); } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { heightArray = new SparseArray<Integer>(); View itemView = inflater.inflate(R.layout.item_recycle,parent,false); MyViewHolder viewHolder = new MyViewHolder(itemView); return viewHolder; } @Override public void onBindViewHolder(final MyViewHolder holder, final int position) { if (heightArray.get(position) == null){ Glide.with(context) .load(mDatas.get(position)) .asBitmap() .placeholder(R.mipmap.ic_launcher) .into(new SimpleTarget<Bitmap>(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL) { @Override public void onResourceReady(Bitmap bitmap, GlideAnimation glideAnimation) { // Do something with bitmap here. int height = bitmap.getHeight(); //获取bitmap信息,可赋值给外部变量操作,也可在此时行操作。 bitmap.getWidth(); LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) holder.iv.getLayoutParams(); layoutParams.height = height; holder.iv.setLayoutParams(layoutParams); heightArray.put(position,height); } }); }else { int height = heightArray.get(position); LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) holder.iv.getLayoutParams(); layoutParams.height = height; holder.iv.setLayoutParams(layoutParams); } Glide.with(context) .load(mDatas.get(position)) .into(holder.iv); } @Override public int getItemCount() { return mDatas.size(); } class MyViewHolder extends RecyclerView.ViewHolder{ ImageView iv; public MyViewHolder(View itemView) { super(itemView); iv = (ImageView) itemView.findViewById(R.id.ivImage); } }}逐步局
<?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" tools:context="com.qizu.zhoukaocar.MainActivity"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v7.widget.RecyclerView></android.support.constraint.ConstraintLayout>item_recycle.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" xmlns:card_view="http://schemas.android.com/tools" android:layout_height="match_parent" android:background="#FFFFFF"> <ImageView android:id="@+id/ivImage" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop" android:padding="4dp"/></LinearLayout>dimens
<resources> <!-- Default screen margins, per the Android Design guidelines. --> <dimen name="activity_horizontal_margin">16dp</dimen> <dimen name="activity_vertical_margin">16dp</dimen></resources>依赖
compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'compile 'com.github.bumptech.glide:glide:3.7.0'compile 'com.squareup.okhttp3:okhttp:3.9.0'compile 'com.squareup.okhttp3:logging-interceptor:3.9.0'compile 'com.jakewharton:butterknife-compiler:8.8.1'compile 'com.jakewharton:butterknife:8.8.1'compile 'com.android.support:palette-v7:26.0.0-alpha1'compile 'com.android.support:cardview-v7:26.0.0-alpha1'
阅读全文
1 0
- 使用RecylerView实现瀑布流图片
- Android 异步图片加载+RecylerView瀑布流
- 用recylerView实现瀑布流的效果
- Android学习之RecylerView完美实现瀑布流效果
- Android学习之RecylerView完美实现瀑布流效果
- RecylerView之瀑布流显示
- Android-----RecylerView瀑布流展示
- Android使用LruCache、DiskLruCache实现图片缓存+图片瀑布流
- android 瀑布流图片实现
- 实现瀑布流排布图片
- 图片瀑布流的实现
- RecyclerView实现图片瀑布流
- 使用MultiColumnPullToRefreshListView实现瀑布流加载网络图片
- 使用串行线程实现图片瀑布流加载
- 使用MultiColumnPullToRefreshListView实现瀑布流加载网络图片
- RecylerView---代替ListView,GridView和瀑布流的新控件
- Volley ImageLoader实现图片瀑布流
- Ajax实现瀑布流图片加载
- Codeforces 892 C. Pride (枚举)
- SVN 报错 sqlite[S11]: database disk image is malformed
- Cleaning Shifts 题解
- Django debug page XSS漏洞
- 处理静态资源
- 使用RecylerView实现瀑布流图片
- Python中通过csv的writerow输出多余空行+py2.x &py3.兼容
- Python判断一个文件夹内哪些文件是图片
- machine learning normal equation
- 机器学习实战-14利用SVD简化数据-改进推荐系统
- 一中OJ #1176 立方数分解[尼科梅彻斯定理] | 数论 + 枚举 | 解题报告
- Qt5.5 使用smtp发邮件的各种坑
- DOM、鼠标、表单、多媒体事件
- springmvc 数据绑定