Android gridview 点击item切换图片
2016-04-19 12:08
417 查看
首先创建一个gridview
上面代码可以看出并没有用系统的simpleAdapter,而是自己写的adapter,这样可以方便我们对gridview里面的元素做处理
看看Adapter里面的代码:
其他部分都是一些基础的东西比较简单,这边主要是给giridview的图片设置ontouchListener,对按下和抬手的动作做下处理,这样就能够使Item在点击和抬手时有个图片切换的效果了,但是到这一步仅仅是能够切换图片了,要是gridView在调用OnitemClickListener的时候你会发现根本不执行,为什么呢,要是深入研究的话得追踪到android的事件分发机制上去,网上好的博文也有一堆,这边就不做细讲了,有兴趣的同学可以考虑看看这篇博客,讲的很好。
Android中onTouch方法的执行过程以及和onClick执行发生冲突的解决办法。这时可能就有人要问了,难道必须要看那么深吗,我仅仅只是想让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效果就做出来了
相关文章推荐
- Android之自定义生成彩色二维码
- android.content.res.Resources$NotFoundException
- 关于JNI
- Android中Activity传递参数至Fragment中
- android获取状态栏高度
- 基于 Facebook Redex 实现 Android APK 的压缩和优化
- Android源码抽象工厂---IPolicy
- Android按钮单击事件的四种常用写法总结
- android的引用库类
- Android项目中打jar包 和 使用
- Android滑动切换页面Tab文字颜色发生渐变效果
- Android 垃圾回收,用软引用建立缓存
- android studio利用命令行打包生成apk
- Android Bitmap convert to ByteArray
- 关于如何正确地在android项目中添加第三方jar包
- Android 传感器hal层分析
- Android wakelock机制
- 监听android软键盘弹出或者关闭的方法
- Android 带清除功能的输入框控件ClearEditText,仿IOS的输入框
- Android Studio 使用快捷键