Android关于点击事件的特别处理
来源:互联网 发布:韦东山嵌入式linux项目 编辑:程序博客网 时间:2024/05/29 21:28
以前,自己做过点击控件的区域点击;但是,那时候做的就是将一个控件以左上角为原点,将一个控件分为几个部分,准备一个公式。然后通过eventmMotion.getX(),和eventMotion.getY(),获得点击事件在控件里面的x,y坐标。然后,再判断,这个x,y坐标在哪一个区域,然后再做出相应的处理。
但是,这次呢?情况不同。直接以图片说明,点击第一张图片中的虚线框,会在虚线框的右上角出现一个小X。效果是第二张图片,然后再点击界面的任何一个地方,小X就会消失,也就是回到第一张图片的样子。
点击虚线框,展示所有的删除图片。这个简单,就是获取所有的删除图片的引用,然后图片的显示属性置为可见,就行了。
现在的问题是:
1.我点击了删除图片以外的区域,怎么让他们消失。尤其是点击了屏幕上的其它控件怎么办,这些控件有自己的响应事件,总不能挨个将代码吧!如果没有添加点击事件,那么总不能,在加上点击事情吧!
2.如果点击的是删除图片,弹出对话框确认是不是删除资源。但是此时,其他的删除图标是不会消失的。
现在就来解决这两个问题。
第一,将布局文件中的根标签,我使用的是LinearLayout,使用自定义的。然后再复写这个自定义的事件处理方法,onInterceptTouchEvent(MotionEvent ev),在这个方法中,发送一个广播,在广播将点击事件在屏幕上(ev.getRawX(),ev.getRawY())的横纵坐标带过去。
第二,在相应的地方,我这里是fragment,拦截这个广播;然后获取点击事件的横纵坐标,和获取删除图片在屏幕上的位置。再做出判断,点击区域是不是删除的图片上。然后再做出相应的操作。
附上在广播处理中的代码:(效果已经实现)
<span style="white-space:pre"></span> float evLocationX = intent.getFloatExtra(InterceptInfoLinearLayout.EV_LOCATION_TAG_X, 0); float evLocationY = intent.getFloatExtra(InterceptInfoLinearLayout.EV_LOCATION_TAG_Y, 0); // Log.i(TAG, "evLocation:" + evLocation[0] + "," + evLocation[1]); Log.i(TAG, "evLocationX:" + evLocationX + ",Y:" + evLocationY); int bookSize = mTreeBookUnits.size(); int width = 0; int heigth = 0; ImageView deleteIcon = null; if (bookSize > 0) { width = mTreeBookUnits.get(0).getDeleteIcon().getWidth(); heigth = mTreeBookUnits.get(0).getDeleteIcon().getHeight(); } int[] viewLocation = new int[2]; int j = 0; for (; j < bookSize; j++) { deleteIcon = mTreeBookUnits.get(j).getDeleteIcon(); deleteIcon.getLocationOnScreen(viewLocation); if ((evLocationX <= viewLocation[0] + width && evLocationX >= viewLocation[0]) && (evLocationY <= viewLocation[1] + heigth && evLocationY >= viewLocation[1])) { //如果点击了一个删除图标 break; } } Log.i(TAG, "mResetDeleteIconReceiver:j:" + j); if (j >= bookSize) { //点击了一个删除图标 for (int i = 0; i < bookSize; i++) { mTreeBookUnits.get(i).getDeleteIcon().setVisibility(View.INVISIBLE); } }
- Android关于点击事件的特别处理
- 关于ViewPager的点击事件的处理
- android graphics画图的点击事件处理
- Android graphics画图的点击事件处理
- android graphics画图的点击事件处理
- android点击和滑动事件的处理
- 【Android】RecyclerView的OnItemClickListener点击事件处理
- android 点击、滑动事件的处理 GestureDetector
- 《android按钮点击事件的频繁点击问题处理》
- 关于iPhone的点击事件绑定无效的处理方法
- Android 点击Notification事件处理
- Android:处理ListView条目中的Button的点击事件和条目点击事件冲突
- Android-11-点击事件的4种处理方式
- android中的listView的点击事件失效处理
- android软键盘回车键的点击事件处理
- android abslistview item点击事件无响应的处理方式
- Android:ListView中嵌入GridView,处理点击事件的冲突
- Android之Button点击事件处理的几种方式
- Android开发者福音-史上最快模拟器genymotion
- 数据库事务的四大属性
- Spring3.0官网文档学习笔记(七)--3.4.2
- rfgyrtyrt
- C++Primer读书笔记(第九章)
- Android关于点击事件的特别处理
- u-boot移植总结(三)(转)S3C2440对Nand Flash操作和电路原理(基于K9F2G08U0A)
- C++Primer读书笔记(第十章)
- Apache OFbiz service engine 源码解读
- 黑马程序员 java编程基础知识笔记
- 暑假计划
- 测试MySQL Fabric用于replication的实验
- HDU 2544 最短路——贝尔曼福特(结构体&优化) spfa算法
- hdu 1421 动态规划