您的位置:首页 > 移动开发 > Android开发

Android gridview 点击item切换图片

2016-04-19 12:08 417 查看
首先创建一个gridview

private void initGridView(View view) {
GridView gridView = (GridView) view.findViewById(R.id.gv);
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
for (int i = 0; i < ICONS.length; i++) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("icon", ICONS[i]);
map.put("name", APPNAMES[i]);
list.add(map);
}
// set the backColor transparent when item clicked
gridView.setSelector(new ColorDrawable(Color.TRANSPARENT));
GridAdapter adapter = new GridAdapter(this.getApplicationContext(), list);
gridView.setAdapter(adapter);
}


上面代码可以看出并没有用系统的simpleAdapter,而是自己写的adapter,这样可以方便我们对gridview里面的元素做处理

看看Adapter里面的代码:

holder.iv.setOnTouchListener(new OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event) {
Log.e("MotionEvent", event.getAction() + "");
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
((ImageView) v).setImageResource(MainActivity.ICONS_PRESSED[position]);
break;
case MotionEvent.ACTION_UP:
((ImageView) v).setImageResource(MainActivity.ICONS[position]);
break;
}
return false;
}
});


其他部分都是一些基础的东西比较简单,这边主要是给giridview的图片设置ontouchListener,对按下和抬手的动作做下处理,这样就能够使Item在点击和抬手时有个图片切换的效果了,但是到这一步仅仅是能够切换图片了,要是gridView在调用OnitemClickListener的时候你会发现根本不执行,为什么呢,要是深入研究的话得追踪到android的事件分发机制上去,网上好的博文也有一堆,这边就不做细讲了,有兴趣的同学可以考虑看看这篇博客,讲的很好。
Android中onTouch方法的执行过程以及和onClick执行发生冲突的解决办法。这时可能就有人要问了,难道必须要看那么深吗,我仅仅只是想让gridview可以点击而已,好得,下面楼主贴下代码大家就清楚了,但是这个并不值得采取,这有点回避问题的意思:

holder.iv.setOnClickListener(new ItemClickListener(mContext,position));
这边相信大家已经很清楚了,我们只要给gridview 的图片设置点击事件就可以了。这样一来一个有弹性的gridview效果就做出来了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: