android gridview多个或单个选中,自定义圆型imageview
来源:互联网 发布:移动网络电视好用吗 编辑:程序博客网 时间:2024/05/06 01:50
//Activity
package com.example.activity;import java.util.ArrayList;import java.util.List;import com.example.adapter.MyAdapter;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.GridView;import android.widget.ImageView;import android.widget.AdapterView.OnItemClickListener;public class MyActivity extends Activity { /** Called when the activity is first created. */private GridView grid;private MyAdapter adapter;private ImageView imageview;private ImageView imageviews;private Boolean bl = true;private List<Item> datas;public Integer[] myImageIds = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); datas = new ArrayList<Item>(); for (int i = 0; i < myImageIds.length; i ++){ Item tempItem = new Item(); tempItem.setId(i); tempItem.setSelect(false); datas.add(tempItem); } grid = (GridView) findViewById(R.id.grid); adapter = new MyAdapter(MyActivity.this, datas); grid.setAdapter(adapter); grid.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View v, int position, long id) { Item tempItem = datas.get(position); tempItem.setSelect(!tempItem.isSelect()); adapter.notifyDataSetChanged(); } }); } }
//Adapter
package com.example.adapter;import java.util.List;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import com.example.activity.CircularImageView;import com.example.activity.Item;import com.example.activity.R;public class MyAdapter extends BaseAdapter{private LayoutInflater inflater;private CircularImageView imageview;//圆图private int clickTemp = -1;private Context context;private List<Item> datas;public MyAdapter(Context context, List<Item> datas){this.context=context;this.datas = datas;this.inflater = LayoutInflater.from(context);}public int getCount() {// TODO Auto-generated method stubreturn datas.size();}public Object getItem(int position) {// TODO Auto-generated method stubreturn position;}public long getItemId(int position) {// TODO Auto-generated method stubreturn position;}public void setSeclection(int position) {clickTemp = position;}public View getView(int position, View convertView, ViewGroup parent) {convertView = inflater.inflate(R.layout.image, null);Item tempItem = datas.get(position);imageview=(CircularImageView)convertView.findViewById(R.id.ImageView);if (tempItem.isSelect()){imageview.setImageDrawable(context.getResources().getDrawable(R.drawable.right));} else {imageview.setImageDrawable(context.getResources().getDrawable(R.drawable.kong));}return convertView;}}
//圆图
package com.example.activity;import android.annotation.SuppressLint;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapShader;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.PorterDuff;import android.graphics.Shader;import android.graphics.drawable.BitmapDrawable;import android.graphics.drawable.Drawable;import android.graphics.drawable.TransitionDrawable;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View;import android.widget.ImageView;public class CircularImageView extends ImageView {private int borderWidth = 6;private int viewWidth;private int viewHeight;private Bitmap bitmap;private Paint paint;private Paint paintBorder;private BitmapShader shader;private int action;public CircularImageView(Context context) {super(context);init();}public CircularImageView(Context context, AttributeSet attrs) {super(context, attrs);init();}public CircularImageView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);init();}private int measureWidth(int measureSpec) {int specMode = View.MeasureSpec.getMode(measureSpec);int specSize = View.MeasureSpec.getSize(measureSpec);if (specMode == MeasureSpec.EXACTLY)return specSize;return viewWidth;}private int measureHeight(int measureSpecHeight, int measureSpecWidth) {int specMode = View.MeasureSpec.getMode(measureSpecHeight);int specSize = View.MeasureSpec.getSize(measureSpecHeight);if (specMode == MeasureSpec.EXACTLY)return specSize;return viewHeight;}private void init() {paint = new Paint();paint.setAntiAlias(true);paintBorder = new Paint();paintBorder.setAntiAlias(true);setBorderColor(Color.WHITE);}public void setBorderColor() {setBorderColor(Color.TRANSPARENT);}public void setBorderColor(int rscId) {if (this.paintBorder != null)this.paintBorder.setColor(rscId);invalidate();}@SuppressLint({"DrawAllocation"})public void onDraw(Canvas canvas) {try {Drawable drawable = getDrawable();if (drawable instanceof BitmapDrawable) {BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable;if (bitmapDrawable != null) {bitmap = bitmapDrawable.getBitmap();}} else if (drawable instanceof TransitionDrawable) {TransitionDrawable transitionDrawable = (TransitionDrawable) drawable;BitmapDrawable bitmapDrawable = (BitmapDrawable) transitionDrawable.getDrawable(transitionDrawable.getNumberOfLayers() - 1);if (bitmapDrawable != null) {bitmap = bitmapDrawable.getBitmap();}}if (bitmap != null) {shader = new BitmapShader(Bitmap.createScaledBitmap(bitmap,viewWidth, viewHeight, false), Shader.TileMode.CLAMP,Shader.TileMode.CLAMP);paint.setShader(shader);int circleCenter = viewWidth / 2;canvas.drawCircle(circleCenter, circleCenter, circleCenter,paintBorder);canvas.drawCircle(circleCenter, circleCenter, circleCenter- borderWidth, paint);}switch (this.action) {case MotionEvent.ACTION_DOWN :setColorFilter(Color.GRAY, PorterDuff.Mode.MULTIPLY);default :}clearColorFilter();} catch (Exception e) {e.printStackTrace();}}protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {viewWidth = measureWidth(widthMeasureSpec);viewHeight = measureHeight(heightMeasureSpec, widthMeasureSpec);setMeasuredDimension(viewWidth, viewHeight);}public boolean onTouchEvent(MotionEvent ev) {action = ev.getAction();return super.onTouchEvent(ev);}public void setBorderWidth(int borderWidth) {this.borderWidth = borderWidth;invalidate();}}
0 0
- android gridview多个或单个选中,自定义圆型imageview
- android上传单个或多个文件
- Android imageView 自定义单个或多个角为圆角及圆形图片工具
- 单个和多个checkbox选中事件
- 单个和多个checkbox选中事件
- gridview,点击选中一个或多个item,并改变item背景颜色,字体等
- Struts2上传单个或多个文件
- java 单个或多个文件上传
- 上传单个或多个文件
- mybatis传入单个或多个参数
- Javascript根据选中的数据颜色,全文档搜索选中的数据节点(可条件选择单个或多个)
- Android UI SurfaceView的使用-绘制单个图型或多个图形
- Android圆型头像实现
- android裁剪圆型头像
- android GridView选中效果
- 选中gridview中的某一行或多行,实现删除
- jspsmartupload组件实现单个或多个文件上传(上)
- jspsmartupload组件实现单个或多个文件上传(下)
- hadooper-MapReduce和并行数据库,朋友还是敌人?
- 信息检索与排序模型之布尔模型
- 使用CocoaPods来管理iOS程序的依赖和搭建服务
- [Linux] Linux内核参数min_free_kbytes与lowmem_reserve_ratio
- Linux下nginx的启动 关闭 重启
- android gridview多个或单个选中,自定义圆型imageview
- 像十八岁一样奔跑
- 数据类型
- Velocity语法
- 正确理解ThreadLocal
- 向量偏移并查集
- this 指针的使用
- 素数线型筛
- JavaScript中的ActiveXObject对象