我们都知道,朋友圈的图片显示基本是随机的(一张图片时一排显示一张,两张图片时一排显示两张,三张图片时显示三张,超过三张就换行显示),这在很多应用中都经常运用到。这是示例图片
以android studio为例:
1.添加
compile 'com.lzy.widget:ninegridview:0.2.0'
2.在MyApplication中初始化
package com.example.chengl.fristblood;
import android.app.Application;
import android.content.Context;
import android.graphics.Bitmap;
import android.widget.ImageView;
import com.lzy.ninegrid.NineGridView;
import com.squareup.picasso.Picasso;
import org.xutils.BuildConfig;
import org.xutils.x;
/**
* Created by yangjw on 2016/10/25.
*/
public class MyApplication extends Application {
// 在application的onCreate中初始化
@Override
public void onCreate() {
super.onCreate();
//初始化xutils
x.Ext.init(this);
x.Ext.setDebug(BuildConfig.DEBUG);
//初始化9九宫格
NineGridView.setImageLoader(new PicassoImageLoader());
}
/** Picasso 加载 */
private class PicassoImageLoader implements NineGridView.ImageLoader {
@Override
public void onDisplayImage(Context context, ImageView imageView, String url) {
Picasso.with(context).load(url)//
.placeholder(R.drawable.ic_default_image)//
.error(R.drawable.ic_default_image)//
.into(imageView);
}
@Override
public Bitmap getCacheImage(String url) {
return null;
}
}
}
3.布局代码
<com.lzy.ninegrid.NineGridView
android:id="@+id/commu_circle_flower_nine_grid"
android:layout_margin="20dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"/>
4.在适配器中加载
@BindView(R.id.commu_circle_flower_nine_grid)
NineGridView nineGridView;
ImageInfo是库中提供的数据Bean,需要两个url,分别表示小图和大图的url,没有大图或者小图,则都赋给相同的Url即可。
//多图片加载
String[] splitList = resultBean.getAttachment().split(",");
ArrayList<ImageInfo> imageInfo = new ArrayList<>();
for (int i = 0; i < splitList.length; i++) {
ImageInfo info = new ImageInfo();
info.setThumbnailUrl(splitList[i]);
info.setBigImageUrl(splitList[i]);
imageInfo.add(info);
}
viewHoudler.nineGridView.setAdapter(new NineGridViewClickAdapter(context,imageInfo));