微博鸭蛙,空間,朋友圈的動(dòng)態(tài)筋岛,都有能夠根據(jù)圖片數(shù)量的不同娶视,使用不同的布局排版。
最具代表的就是1張圖片,4張圖片肪获,多于9張圖片時(shí)寝凌。
網(wǎng)上方法很多,我使用NineGridLayout來(lái)實(shí)現(xiàn)此功能孝赫。
我在此淺談使用方法硫兰,原理性的東西暫時(shí)談不起。
1.導(dǎo)入依賴(lài)庫(kù)
我使用的這個(gè)庫(kù)也是來(lái)自網(wǎng)上大神的寒锚。在此留下大神的鏈接劫映。
http://jaeger.itscoder.com/android/2016/03/06/nine-grid-iamge-view-libaray.html
此鏈接里有更詳細(xì)的說(shuō)明,和demo刹前。
2.新建MyNineGridLayout繼承NineGridLayout,并重寫(xiě)三個(gè)方法泳赋,添加構(gòu)造方法。
這個(gè)時(shí)候喇喉,其實(shí)我們就是新建了View控件祖今,那么接下來(lái)的事情就很簡(jiǎn)單了,只需要像使用其他控件一樣使用它就可以了拣技。
3.首先在xml中使用該控件
4.然后因?yàn)槭桥笥讶?dòng)態(tài)中的一個(gè)控件千诬,所以用到RecyclerView。因此MyNineGridLayout控件的初始化放在Adapter適配器中膏斤。
public class MyNineGridLayoutAdapter extends RecyclerView.Adapter<MyNineGridLayoutAdapter.ViewHolder>
{
private Context context;
private List<NineGridTestModel> modelList;
/*
* RecyclerView的三個(gè)方法
* */
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (null == context)
{
context = parent.getContext();
}
View view = LayoutInflater.from(context).inflate(R.layout.my_statu_item, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.layout.setIsShowAll(false);//當(dāng)圖片多于9張時(shí)徐绑,不完全顯示。
holder.layout.setUrlList(modelList.get(position).urlList);//設(shè)置圖片源
}
@Override
public int getItemCount() {
return (null == modelList) ? 0 : modelList.size();
}
/*
* 內(nèi)部ViewHolder類(lèi)
* */
public class ViewHolder extends RecyclerView.ViewHolder
{
NineGridLayout layout;
public ViewHolder(View itemView) {
super(itemView);
layout = (NineGridLayout) itemView.findViewById(R.id.layout_nine_grid);
}
}
public MyNineGridLayoutAdapter( List<NineGridTestModel> modelList)
{
this.modelList = modelList;
}
}
注意onBindViewHolder()中的兩個(gè)方法:
holder.layout.setIsShowAll(false);當(dāng)圖片數(shù)量大于9張時(shí)莫辨,最后一張會(huì)顯示剩余圖片數(shù)傲茄,如“+3”。當(dāng)參數(shù)為true時(shí)沮榜,會(huì)直接顯示所以圖片盘榨。
holder.layout.setUrlList(modelList.get(position).urlList);設(shè)置圖片的來(lái)源,其中的urlList是List<String>類(lèi)型蟆融。
當(dāng)你的圖片源與前面的步驟都沒(méi)有問(wèn)題是草巡,就可以正常工作了。