android GridView 的使用 实现多项选择
2013-08-02 17:39
204 查看
今天小研究了一下GridView,目的是为了实现 下面的效果(GridView多项选择):
首先,在布局文件添加GridView ,创建适配器的items...
具体的都在注释里边了,下面是 程序源码 片段,由于xml文件比较简单,故不在贴出.
MainActivity.java
首先,在布局文件添加GridView ,创建适配器的items...
具体的都在注释里边了,下面是 程序源码 片段,由于xml文件比较简单,故不在贴出.
MainActivity.java
package com.app.gridview; import android.os.Bundle; import android.app.Activity; import android.util.Log; import android.view.Menu; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.GridView; public class MainActivity extends Activity { static MainActivity instance;//实例 GridView gridView1;//声明对象 MyGridViewAdapter adapter;//声明适配器 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); instance =this; //获得组件 gridView1 =(GridView) findViewById(R.id.gridView1); gridView1.setNumColumns(2); //获得适配器 adapter = new MyGridViewAdapter(instance); //设置适配器到组件 gridView1.setAdapter(adapter); //添加监听 gridView1.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //更改显示 adapter.changeState(position); } }); } }自定义适配器 MyGridViewAdapter.java
package com.app.gridview; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.GridView; import android.widget.ImageView; public class MyGridViewAdapter extends BaseAdapter { Context context; boolean isCheck;// 选中 Boolean boo[] = {false, false, false, false, false}; int imgsid[] = {R.drawable.aa_badge_ad, R.drawable.aa_badge_award, R.drawable.aa_badge_exclusive, R.drawable.aa_badge_gift, R.drawable.aa_badge_new,}; public MyGridViewAdapter(Context context) { this.context = context; isCheck = false; } @Override public int getCount() { return imgsid.length; } @Override public Object getItem(int position) { return imgsid[position]; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ImageView imageView; if (convertView == null) { imageView = new ImageView(context); imageView.setLayoutParams(new GridView.LayoutParams(200, 200));// 设置ImageView对象布局 imageView.setAdjustViewBounds(false);// 设置边界对齐 imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);// 设置刻度的类型 imageView.setPadding(8, 8, 8, 8);// 设置间距 } else { imageView = (ImageView) convertView; } imageView.setImageDrawable(makeBmp(imgsid[position], boo[position])); // imageView.setImageResource(imgsid[position]);//为ImageView设置图片资源 return imageView; } private LayerDrawable makeBmp(int id, boolean isChosen) { Bitmap bitmap = ((BitmapDrawable) context.getResources() .getDrawable(id)).getBitmap(); // 根据isChosen来选取对勾的图片 Bitmap seletedBmp; if (isChosen == true) { seletedBmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.btncheck_yes); } else { seletedBmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.btncheck_no); } // 使 Drawable叠加层(合成图片) Drawable[] array = new Drawable[2]; array[0] = new BitmapDrawable(bitmap); array[1] = new BitmapDrawable(seletedBmp); // 层图形对象 LayerDrawable mLayerDrawable = new LayerDrawable(array);// 参数为上面的Drawable数组 /* * Specify modifiers to the bounds for the drawable[index].索引号 left += l * top += t; right -= r; bottom -= b; */ mLayerDrawable.setLayerInset(0, 0, 0, 0, 0); // 第一个参数0代表数组的第一个元素 mLayerDrawable.setLayerInset(1, 88, 0, 0, 88);// 第一个参数1代表数组的第二个元素 return mLayerDrawable; // 返回合成后的图 } /* * 被点击的时候调用,改变点击后的状态 */ public void changeState(int position) { if (isCheck == false) { if (position < boo.length) { boo[position] = !boo[position]; isCheck = !isCheck; } } else { if (position < boo.length) { boo[position] = !boo[position]; isCheck = !isCheck; } } // 调用适配器的更新状态方法 notifyDataSetChanged(); } }
相关文章推荐
- android GridView 的使用 实现多项选择
- android开发之&使用ViewPager加gridView实现菜单按钮分页滑动(类似QQ表情选择翻页效果)
- Android 使用开源库StickyGridHeaders来实现带sections和headers的GridView显示本地图片效果
- Android 使用开源库StickyGridHeaders来实现带sections和headers的GridView显示本地图片效果
- Android 使用GridView来实现类似RadioButton的多行单选功能
- Android用GridView排列相册,实现微信选择图片效果
- Android使用GridView实现日历功能(详细代码)
- Android 使用开源库StickyGridHeaders来实现带sections和headers的GridView显示本地图片效果
- Android 仿美团网,探索使用ViewPager+GridView实现左右滑动查看更多分类的功能
- Android程序——使用GridView组件实现如下图所示的效果
- Android 使用开源库StickyGridHeaders来实现带sections和headers的GridView显示本地图片效果
- Android使用GridView实现日历功能示例(详细代码)
- Android使用criteria选择合适的地理位置服务实现方法
- Android中Recyclerview使用1----实现ListView,GridView,瀑布流样式
- Android中使用开源框架Citypickerview实现省市区三级联动选择
- Android 使用开源库StickyGridHeaders来实现带sections和headers的GridView显示本地图片效果
- Android之UI学习篇:使用GridView实现九宫格的菜单
- Android使用GridView实现日历功能(详细代码)
- android 选择手机图库,实现修改个人资料,头像上传功能,可直接使用
- Android使用GridView实现横向滚动效果