1、效果图分享
更多详细请移至文章末尾下载Apk查看
2、代码分析
1.GridView item 布局xml
grid_item.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<!-- 九宫格布局 -->
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerInParent="true"
android:layout_marginBottom="10dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="0dp"
android:layout_marginTop="10dp"
android:background="@drawable/shape_grid"
android:paddingBottom="30dip"
android:paddingLeft="17dip"
android:paddingRight="17dip"
android:paddingTop="30dip">
<ImageView
android:id="@+id/iv_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true" />
<TextView
android:id="@+id/tv_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/iv_item"
android:layout_centerHorizontal="true"
android:layout_marginTop="5.0dip"
android:maxLines="1"
android:textSize="14.0sp" />
</RelativeLayout>
</RelativeLayout>
(drawable) shape_grid.xml
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="90"
android:endColor="#ffffffff"
android:startColor="#ffffffff" />
<corners android:radius="10dp" />
<stroke
android:width="1dip"
android:color="#ffdddddd" />
</shape>
2.GridView 使用布局页面
<GridView
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:horizontalSpacing="1dp"
android:listSelector="@null"
android:numColumns="2"
android:scrollbars="none"
android:stretchMode="columnWidth"
android:verticalSpacing="1dp"
/>
3.Adapter 中使用的BaseViewHolder
public class BaseViewHolder {
@SuppressWarnings("unchecked")
public static <T extends View> T get(View view,int id){
SparseArray<View> viewHolder = (SparseArray<View>)view.getTag();
if(viewHolder == null){
viewHolder = new SparseArray<View>();
view.setTag(viewHolder);
}
View childView = viewHolder.get(id);
if(childView == null){
childView = view.findViewById(id);
viewHolder.put(id,childView);
}
return (T)childView;
}
}
4.Adapter java文件
public class MyGridAdapter extends BaseAdapter {
private Context mContext;
List<String> mList;
/*几张图片*/
public int[] imgs = new int[]{
R.drawable.jieri,
R.drawable.place,
R.drawable.jinianri,
R.drawable.xingzuo,
R.drawable.shengxiao,
R.drawable.forbit,
R.drawable.app,
};
public MyGridAdapter(Context _mContext,ArrayList<String> _list){
this.mContext = _mContext;
list = _list;
}
@Override
public int getCount(){
return list.size();
}
@Override
public Object getItem(int position){
return list.get(position);
}
@Override
public long getItemId(int position){
return position;
}
@Override
public View getView(int position,View converttView,ViewGroup parent){
if(converttView == null){
converttView = LayoutInflater.from(mContext)
.inflate(R.layout.grid_item,parent,false);
}
TextView tv = BaseViewHolder.get(converttView, R.id.tv_item);
ImageView iv = BaseViewHolder.get(converttView,R.id.iv_item);
iv.setBackgroundResource(imgs[position-1]);
tv.setText(list.get(position));
return converttView;
}
}
5.Activity 使用
GridView gridView = (GridView)mParent.findViewById(R.id.gridview);
List<String> list = new ArrayList<String>();
list.add("中国");
list.add("美国");
list.add("德国");
list.add("英国");
list.add("法国");
list.add("俄罗斯");
list.add("加拿大");
gridView.setAdapter(new MyGridAdapter(MainActivity.this,list));
3、更多效果图请下载Apk查看
下载看看