Android GridView的使用方法
Android的GridView控件用于把一系列的空间组织成一个二维的网格显示出来 应用的比较多的就是组合图片显示 下面我就详细讲一个例子
首先写一个类继承BaseAdapter
[java]view plaincopy
-
publicclassImageListextendsBaseAdapter{
-
-
publicBitmap[]image;
-
Activityactivity;
-
-
//construct
-
publicImageList(Activitya){
-
activity=a;
-
}
-
@Override
-
publicintgetCount(){
-
//TODOAuto-generatedmethodstub
-
returnimage.length;
-
}
-
@Override
-
publicObjectgetItem(intposition){
-
//TODOAuto-generatedmethodstub
-
returnimage[position];
-
}
-
@Override
-
publiclonggetItemId(intposition){
-
//TODOAuto-generatedmethodstub
-
returnposition;
-
}
-
publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
-
//TODOAuto-generatedmethodstub
-
ImageViewimageView;
-
if(convertView==null){
-
imageView=newImageView(activity);
-
imageView.setLayoutParams(newGridView.LayoutParams(50,50));//设置ImageView宽高
-
imageView.setAdjustViewBounds(false);
-
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
-
-
}else{
-
imageView=(ImageView)convertView;
-
}
-
imageView.setImageBitmap(image[position]);
-
-
returnimageView;
-
}
-
publicstaticBitmapdrawableToBitmap(Drawabledrawable){
-
-
Bitmapbitmap=Bitmap
-
.createBitmap(
-
drawable.getIntrinsicWidth(),
-
drawable.getIntrinsicHeight(),
-
drawable.getOpacity()!=PixelFormat.OPAQUE?Bitmap.Config.ARGB_8888
-
:Bitmap.Config.RGB_565);
-
Canvascanvas=newCanvas(bitmap);
-
drawable.setBounds(0,0,drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());
-
drawable.draw(canvas);
-
returnbitmap;
-
}
-
}
然后在主程序里
[c-sharp] view plaincopy
-
finalGridViewgv=(GridView)findViewById(R.id.grid);
-
ImageListadapter=newImageList(available.this);
-
Resourcesres=getResources();
-
Bitmapbmp=BitmapFactory.decodeResource(res,R.drawable.logo);
-
adapter.image=newBitmap[20];
-
for(inti=0;i<=19;i++)
-
{
-
adapter.image[i]=bmp;
-
}
-
gv.setAdapter(adapter);
-
gv.setOnItemClickListener(newOnItemClickListener(){
-
@Override
-
publicvoidonItemClick(AdapterView<?>arg0,Viewarg1,
-
intarg2,longarg3){
-
//TODOAuto-generatedmethodstub
-
Log.i("phb",arg2+"");
-
Log.i("phbsel",gv.isFocused()+"");
-
Intenti=newIntent(available.this,com.mobile.links.shop.mycx.shopcart.class);
-
startActivity(i);
-
}
-
});
-
gv.setOnItemSelectedListener(newOnItemSelectedListener(){
-
@Override
-
publicvoidonItemSelected(AdapterView<?>arg0,Viewarg1,
-
intarg2,longarg3){
-
//TODOAuto-generatedmethodstub
-
Log.i("selected",arg2+"");
-
tv.setText(arg2+":detail");
-
}
-
@Override
-
publicvoidonNothingSelected(AdapterView<?>arg0){
-
//TODOAuto-generatedmethodstub
-
-
}
-
-
});
-
其中onClick函数是判断被点击
而onSelect函数是判断被选中 也就是获得焦点的imageview
这样我们就可以基于gridview来做一些应用了。
构建gridview的xml代码
[c-sharp] view plaincopy
-
<?xmlversion="1.0"encoding="utf-8"?>
-
<LinearLayout
-
android:id="@+id/relativelayout"
-
android:layout_width="fill_parent"
-
android:layout_height="fill_parent"
-
xmlns:android="http://schemas.android.com/apk/res/android"
-
android:orientation="vertical"
-
>
-
<GridViewandroid:id="@+id/availgrid"
-
android:layout_width="fill_parent"
-
android:layout_height="wrap_content"
-
android:numColumns="4"
-
android:verticalSpacing="30dp"
-
android:layout_centerHorizontal="true"
-
-
/>
-
-
-
</LinearLayout>
更多相关文章
- 【Android FFMPEG 开发】Android Studio 工程配置 FFMPEG ( 动态
- Android中切换屏幕方向时Activity生命周期函数执行情况分析
- android之网格布局GridLayout
- Android 加载图片文件 函数
- Android为Menu添加item及响应函数
- android之检查service运行状态函数
- Android Studio 基础 之 一键快速实现一个类的 构造函数、getter
- Android Studio如何提示函数用法
- Android Studio怎样提示函数使用方法