很久没有进行我的Android学习之旅了,今天抽空继续。

简单一点吧,就瞧瞧那个Grid的效果,Android提供了一个GridView,不过从APIDemo中看来,它似乎与PC上的GRID差别还是挺大的,更像那个IconView的感觉。不知道Android中如何实现表格界面?虽然在移动终端上,表格一般不会有谁使用,大家似乎更倾向于使用ListView,而Android对于ListView则有更简单的实现ListActivity。

废话不说,还是自己写几句代码来实验一下。

< GridView id ="@+id/grid"
android:layout_width
="fill_parent"
android:layout_height
="fill_parent"
android:padding
="10dip"
android:verticalSpacing
="10"

android:horizontalSpacing
="10"
android:numColumns
="auto_fit"
android:columnWidth
="60"
android:stretchMode
="columnWidth"

android:gravity
="center"
/>

从描述文件中的这些属性来看,与表格非常类似,除了padding和spacing以外,它还多了那个gravity,这里是center表示单元格中的内容居中放,在类GridView中也提供了方法setGravity(int)来实现这个效果。

接着,我们沿用以前那个fillMaps方法来构造SimpleAdapter,以前将这个adapter赋给ListActivity,现在同样的Adapter,却是赋给了GridView,效果又会是怎样呢?

List < HashMap < String,String >> items = fillMaps();

GridViewgrd
= (GridView) this .findViewById(R.id.grid);
SimpleAdapteradapter
= new SimpleAdapter( this ,items,R.layout.list_row, new String[] ... {"name"} , new int [] ... {R.id.item} );
grd.setAdapter(adapter);

我觉得GridView并不象表格,倒更象IconView,下面试试用图像作为GridView的内容。现在,不能用简单Adapter了,得自己弄一个ImageAdapter,就让它衍生于BaseAdapter类吧。

public class ImageAdapter extends BaseAdapter ... {
//这是资源ID的数组
privateInteger[]mThumbIds=...{
R.drawable.a,R.drawable.b,R.drawable.c,
R.drawable.d,R.drawable.e,R.drawable.f,
R.drawable.g,R.drawable.h,R.drawable.i
}
;

publicImageAdapter(Contextc)...{
mContext
=c;
}


publicintgetCount()...{
returnmThumbIds.length;
}


publicObjectgetItem(intposition)...{
returnposition;
}


publiclonggetItemId(intposition)...{
returnposition;
}


publicViewgetView(intposition,ViewconvertView,ViewGroupparent)...{
ImageViewi
=newImageView(mContext);
//设置图像源于资源ID。
i.setImageResource(mThumbIds[position]);
i.setAdjustViewBounds(
true);
i.setBackground(android.R.drawable.picture_frame);

returni;
}


privateContextmContext;

}

很简单,只要重载几个方法就可以了,关键是那个getView方法,它负责构建出每个单元格中的对象实例。这里我们构造的是一个ImageView实例。

然后就是同样的将这个Adapter赋给GridView即可,大家可以看看效果,注意在做这个例子前,先放几个小图片到res/drawable目录下,buildproject一下就可以得到那个R.drawable.a了(这里的a是图像文件名,如a.png)。

在getView方法中我们使用了ImageView类,这又是一个widget。除了上面用到的几个方法以外,还有以下几个方法值得注意:

与图像来源有关的方法,我们只用了资源文件的方式。

// 不同的图像来源
public void setImageBitmap(Bitmapbm)
public void setImageDrawable(Drawabledrawable)
public void setImageResource( int resid)
public void setImageURI(ContentURIuri)

图像效果的操作。

// 颜色过滤
public void setColorFilter( int color,Modemode)
// 矩阵变换
public void setImageMatrix(Matrixmatrix)
// 透明度
public void setAlpha( int alpha)

具体的使用可以参考API,动手试一下就差不多了。

更多相关文章

  1. 浅谈Java中Collections.sort对List排序的两种方法
  2. Python list sort方法的具体使用
  3. python list.sort()根据多个关键字排序的方法实现
  4. android上一些方法的区别和用法的注意事项
  5. Android(安卓)Activity界面切换添加动画特效
  6. android实现字体闪烁动画的方法
  7. Android中dispatchDraw分析
  8. Android四大基本组件介绍与生命周期
  9. Android(安卓)MediaPlayer 常用方法介绍

随机推荐

  1. php三个函数、两种选择防止sql注入
  2. PHP判断某个IP4是否属于某一个IP段
  3. php json_encode如何使用
  4. PHP获取绝对路径dirname(__FILE__)和__DI
  5. nginx php-fpm 输出php错误日志
  6. 深入理解PHP原理之变量作用域(Scope in P
  7. PHP二维数组(或任意维数组)转换成一维数组
  8. php如何计算两个时间戳之间相差的日时分
  9. 深入理解PHP原理之变量(Variables inside
  10. PHP提取多维数组指定一列的方法大全