Android下使用的比较频繁的用来导航的控件就是Gallery了,这里我们回顾一下如何使得我们的Gallery控件显示一些特效,扩充原有系统Gallery的展现。
设计目标:
扩充系统Gallery功能,使得Gallery能够显示选中效果。
设计思路:
设计2组图片,并且绘制时根据item是否选中来绘制;
步骤:
- 扩充构造函数,添加参数:context、两组resource,并且根据传入的resource分别创建2组view;
- override getView方法,并且在其中根据是否选中来返回不同的内容;
代码比较简单:
public class GalleryAdapter extends BaseAdapter {
private Context context;
private View[] views;
private View[] views_f;
public GalleryAdapter(Context context, int[] resources, int[] resources_f) {
super();
this.context = context;
createViews(resources, resources_f);
}
private void createViews(int[] resources, int[] resources_f) {
views = new View[resources.length];
views_f = new View[resources_f.length];
for (int i = 0; i < resources.length; i++) {
views[i] = createView(resources[i]);
}
for (int i = 0; i < resources_f.length; i++) {
views_f[i] = createView(resources_f[i]);
}
}
private View createView(int resourceId) {
Bitmap bm = BitmapFactory.decodeResource(context
.getResources(), resourceId);
ImageView v = new ImageView(context);
v.setImageBitmap(bm);
LayoutParams params = new LayoutParams(bm.getWidth(), bm.getHeight());
v.setLayoutParams(params);
return v;
}
@Override
public int getCount() {
return views.length;
}
@Override
public Object getItem(int position) {
return views[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Gallery gly = (Gallery) parent;
if (position == gly.getSelectedItemPosition())
return views_f[position];
return views[position];
}
}