在整体显示上使用的是GridView来实现的,这里使用的是simpleCursorAdapter类的数据适配,在进行适配的时候就是对ImageView控件进行适配的。
1) GridView控件的数据适配
public void initGridViewData(){
String imgName=ImgDao.Properties.Imgname.columnName;
String imgJianjie=ImgDao.Properties.Imgjianjie.columnName;
String imgPath=ImgDao.Properties.Imgpath.columnName;
String imgContent=ImgDao.Properties.Imgcontent.columnName;
cursor = getDb().rawQuery("select _id,IMGNAME,IMGPATH from "+getImgDao().getTablename()+"",null);
String []from=new String[]{imgName,imgPath};
int []to=new int[]{R.id.imgName,R.id.imgPathDetails};
SimpleCursorAdapter simpleCursorAdapter=new SimpleCursorAdapter(getBaseContext(),R.layout.adapter_picture_item,cursor,from,to);
imgGrid.setAdapter(simpleCursorAdapter);
}
这里主要使用的是简单游标适配器。
2) 对GridView控件设定
<GridView
android:id="@+id/imgGrid"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:columnWidth="100dp"
android:numColumns="3"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:stretchMode="columnWidth"
android:layout_marginTop="10dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:gravity="center"
/>
GridView控件主要的属性就是numColumns属性,该属性的作用就是设置当前行显示的ImageView图片的个数,这里设置成3,表示的是一行显示的ImageView的个数是3个。
3) ImageView进行特殊设置
<com.sn.controlers.SNImageView
android:id="@+id/imgPathDetails"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_gravity="center"
android:scaleType="centerCrop"
android:padding="4dp"
android:adjustViewBounds="true"
android:src="@drawable/ankang"
/>
这里主要使用的属性是scaleType和adjustViewBounds两个属性,这里的scaleType属性主要使用的值是centerCrop和fitXY两个值,当使用scaleType时,表示的是将图片缩略显示,当图片的大小小于当前的ImageView的值(主要是从长和宽的角度上说的),当图片的长和宽小于ImageView的长和宽的时候,此时的图片是全部显示的,当图片的长和宽的大小大于ImageView的长和宽时,则就按照当前的ImageView进行缩略显示,产生缩略图效果。
ImageView的android:adjustViewBounds属性为是否保持原图的长宽比,单独设置不起作用,需要配合maxWidth或maxHeight一起使用。