图片中不规则区域的点击
接着上一条,对于找茬里面更高的要求就是一张大图中不规则图形的点击处理,需要获取点击区域,然后点击对这个不规则区域进行处理,如变色等操作,还能知到点击的是哪个不规则区域。
先看效果图:
这个先要一个xml,这个xml里面就是各个不同区域的描点数据。先看看这个数据怎么获取吧,需要工具:Adobe Dreamweaver 。下面的演示操作使用的是Adobe Dreamweaver CC 2018.
第一步:
第二步点击插入一个Image,
第三步:
这里要选择设计,然后再回到拆分那里
第四步骤,在图片上右键,然后点击属性,选择不规则选择区域:
这里就是不规则选框,选择你要点击事件响应的不规则区域,选择完成在下面的html里面就有一个area便签,里面的一串数字代表了你的不规则区域。也就是后面安卓代码里面的pts字段里的数据了。
下面就是读取这个area区域,然后将这个区域存放在自己的一个实体中,这个实体作为后面返回给点击事件也是有必要的。然后就是监听onTouchEvent,将这个事件瓜分出来点击事件,将这个点击的位置在之前添加的area里查找,看是否包含这个点击的x,y值,如果有就说明点击到了某个区域,然后将这个区域返回出来。
@Overridepublic boolean onTouchEvent(MotionEvent event) {boolean resStat = super.onTouchEvent(event);if (mSourceBitmap != null && !isAnimation) {if (event.getAction() == MotionEvent.ACTION_DOWN) {mDownTime = System.currentTimeMillis();mPointF.set(event.getX(), event.getY());}if (event.getPointerCount() == 1) {if (isCanMove) {moveEvent(event);resStat = true;}if (isCanClick) {clickEvent(event);resStat = true;}} else if (event.getPointerCount() == 2) {if (isCanScale) {scaleEvent(event);resStat = true;}}if (isNeedToCheckOutOfSide) {outOfSideEvent(event);resStat = true;}}return resStat;}/*** 是否点击在热点区检测** @param event*/protected void checkAreas(MotionEvent event) {mHotKeys.clear();float[] curMove = getCurrentMoveXY();float scale = getCurrentScale();for (String key : mCheckAreas.keySet()) {if (mCheckAreas.get(key).isInArea(mEmptyRectF, (event.getX() - curMove[0]) / scale, (event.getY() - curMove[1]) / scale)) {mHotKeys.add(key);lastClick = event;break;}}}
/*** 缩放事件** @param event*/protected void scaleEvent(MotionEvent event) {switch (event.getAction() & MotionEvent.ACTION_MASK) {case MotionEvent.ACTION_POINTER_DOWN:mIsTwoFinger = true;mBeforeDistance = spacing(event);if (mBeforeDistance > 10f) {mSaveMatrix.set(mMatrix);}break;case MotionEvent.ACTION_MOVE:float afterDistance = spacing(event);if (afterDistance > 10f) {float tempScale = afterDistance / mBeforeDistance;mMatrix.set(mSaveMatrix);float newScale = getCheckRangeScale(tempScale);
// imageCenterLocation(event);mMatrix.postScale(newScale, newScale, VIEW_WIDTH / 2, VIEW_HEIGHT / 2);invalidate();}break;case MotionEvent.ACTION_POINTER_UP:if (event.getPointerCount() == 0) {upToCheckOutOfSide(event);}break;default:break;}}
基本上就这么弄完了,下面就来粘贴处demo链接,欢迎下载:https://download.csdn.net/download/greatdaocaoren/12561318
图片中不规则区域的点击相关推荐
- 饼图 + 不规则区域事件处理
饼图的使用场景几乎无处不在,前段时间心血来潮,自定义了一个饼图控件,并且添加了各个区域的点击事件处理. 一.控件的绘制 基本的饼图绘制,相信有点自定义控件基础的各位应该都能绘制出来. @Overrid ...
- Cocos Creator实现不规则区域点击
问题背景 在CocosCreator中,点击图片透明区域依然触发节点的点击事件.但在web开发中,可以使用Inkscape.SvgPathEditor等矢量图编辑器转为SVG,或者直接从figma中导 ...
- cocos2d-x中实现不规则按钮的点击效果
cocos2d-x中实现不规则按钮的点击效果 先说一点,这是从别人那里扒来的,亲测有效觉得不错,分享一下: 原理很简单,就是判断按钮图片的点击区域 像素点透明度是不是0,需要修改源代码: 我拿coco ...
- 逃避误区,利用PS统计不规则区域的像素值
写在最前: 之前网上的方法利用直方图来统计选定区域的像素值,而笔者在实际使用过程中发现,这样的做法存在以下两个问题: 1)PS显示图片总像素与实际图片总像素像素存在误差(笔者的图片尺寸为 2912x1 ...
- android 部分区域点击,Android编程实现ListView中item部分区域添加点击事件功能
本文实例讲述了Android编程实现ListView中item部分区域添加点击事件功能.分享给大家供大家参考,具体如下: 需求如题目:Android listview中item部分区域添加点击事件,在 ...
- js小学生图区_js实现图片区域可点击大小随意改变(适用移动端)代码实例
实现图片区域可点击,实际上使用map是可以的,但是适配效果并不好,图片只能是固定大小的值,而且点都被写死了. 在这里,我使用的js基于canvas写的一个小工具.可以圈出你需要点击的部分,然后生成一串 ...
- html5 图片羽化,课题:html5图像羽化(不规则区域羽化,feather,html5羽化)
下午搜索了一堆相关文章,没有找到符合要求的. 对一张图片应用不规则区域的羽化,该怎么做呢? 首先去查了下 羽化的原理,然而没有什么用, 然后就开始从表现层去研究怎么模拟? idea 1: blur滤镜 ...
- unity图片指定任意不规则区域显示
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; ...
- eNSP解决OSPF不规则区域几个方法和vlink-peer
因为刚学OSPF路由协议,下面只是个人实验结果,可能也有不准确的地方,请批评指正,谢谢 解决OSPF不规则区域 1.多进程双向重分布 2.Tunnel隧道 3.virtual-link 1.多进程双向 ...
- PhyGeoNet一种可用于不规则区域的物理信息极限学习机
题目 Physics-Informed Geometry-Adaptive Convolutional Neural Networks for Solving Parametric PDEs on I ...
最新文章
- 10、同步机制遵循的原则_我要遵循的10条原则
- OpenAI最新论文:机器学习效率正在超越摩尔定律
- java8中的Lamba表达式
- 搭建 mysql-mmm 高可用群集
- MAC下homebre安装mysql
- Python-流程控制之循环
- spark SortShuffleWriter的实现
- 【clickhouse】clickchouse的分区合并速度小于插入速度会怎么样
- 【Elasticsearch】使用Elasticsearch 7.8 快速搭建食谱搜索系统
- 将dll制作成控件_案例丨首例将影视作品制作成网络图片集被判侵权案 二审维持原判...
- 大一计算机word排版试题,Word排版练习题
- java自动签到_原来实现钉钉自动签到如此简单,每天准时上下班不是梦
- mindoc源码编译和部署
- 爱快支持服务器网卡嘛,虚拟机安装爱快软路由,跟我一起来测试,单网卡安装教程...
- BZOJ 2751: [HAOI2012]容易题(easy)( )
- 误差反向传播(手把手教你推导如何通过反向传播更新参数)
- list保存到scv
- 2020扁皮筋排名_2020年高性价比弹弓推荐,(12月)弹弓选购攻略
- 【明解C语言】选择语句之switch
- 一个普通的小活动让超市回头客源源不断?方案简单到爆