背景:在一张图片中,有时希望点击不同的区域时,有不同的表现。
思路:把要用的图片调整为合适的大小后(重要),导入到Dreamweaver中,在图片上,把需要添加事件的部分建立图片“热区”,然后映射到手机上的相应区域(有点麻烦,但没想到其它好的方法)。
在该实例中,只对西藏与新疆做了热区响应
效果图:
1.重写ImageView类(关键代码如下)
a.从arrays.xml中加载热点区域
//从arrays.xml中加载热点区域
protected void initMapArea() {
mMapArea.clear();
mFocus.clear();
String[] keys = mContext.getResources().getStringArray(R.array.map_area);
MapArea bodyArea = null;
int idenId = -1;
if(keys != null) {
for(String key : keys) {
idenId = mContext.getResources().getIdentifier(key, "array", mContext.getPackageName());
int[] paths = mContext.getResources().getIntArray(idenId);
idenId = mContext.getResources().getIdentifier(key + "_code", "array", mContext.getPackageName());
String[] ptKeys = mContext.getResources().getStringArray(idenId);
bodyArea = new MapArea(ptKeys, paths);
mMapArea.put(key, bodyArea);
}
}
}
b.把照片上的位置与手机位置进行统一
//进行不同材质机器的兼容
private float toDip(Context context,float pxValue){
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (pxValue * scale + 0.5f);
}
c.热点区域判断
//判断触摸点是否在热点区域
protected void checkAreas(MotionEvent event) {
mFocus.clear();
for(String key : mMapArea.keySet()) {
mPathRectF.setEmpty();
Path path = mMapArea.get(key).getPath();
path.computeBounds(mPathRectF, true);
if(mPathRectF.contains(event.getX(),event.getY())) {
mFocus.add(key);
break;
}
}
}
d.热点区域坐标(arrays.xml)
<string-array name="map_area">
<item>map_xj</item>
<item>map_xz</item>
</string-array>
<string-array name="map_xj_code">
<item>XinJiang</item>
<item>新疆</item>
</string-array>
<string-array name="map_xz_code">
<item>XiZang</item>
<item>西藏</item>
</string-array>
<integer-array name="map_xz">
<item>27</item>
<item>155</item>
.......
2.在调用的Activity中做交互
protected Handler mHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
if(HotImgActivity.this.isFinishing()) {
return;
}
Object obj = msg.obj;
if(obj != null) {
String[] codes = (String[]) obj;
String message ="Code:" + codes[0] + ", Name:" + codes[1];
Toast.makeText(HotImgActivity.this, message, Toast.LENGTH_SHORT).show();
}
};
};
3.在布局文件中体现
<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<!-- 注意scaleType要为'matrix'即原始图像的大小,这样才能保证绘制的点的位置没有发生变化,如果其它,则需要另做转换 -->
<com.hotimg.view.MapAreaView
android:id="@+id/map_areaview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:scaleType="matrix"
android:src="@drawable/china" />
</HorizontalScrollView>
分享到:
相关推荐
在网页设计中,热区(Hotspots)是一种特殊的技术,允许我们为图片的不同区域赋予交互性,使得用户点击这些特定区域时可以触发某些预设的行为,例如执行JavaScript方法。这通常用于实现图像映射,即在一张大图上定义...
在IT行业中,图片热区点击是一种常见的交互设计技术,它允许用户通过点击图像上的特定区域来触发不同的操作或导航到其他页面。在这个“图片热区点击之二(边界反弹,缩放,移动)”主题中,我们将深入探讨边界反弹、缩放...
图片不规则区域点击事件处理 HotImg是基于对一张图片进行不规则区域点击响应不同事件。 基本内容 1.对图片的部分区域进行可响应事件 2.对图片进行缩放后,仍可响应区域点击事件 3.对图片进行移动后.仍可响应区域...
在IT领域,图片热区(Image Maps)是一种常见的网页交互技术,它允许用户在图片上定义特定区域,每个区域可以关联不同的链接或者触发不同的事件。"图片热区js插件"是一个JavaScript插件,用于在网页中实现这种功能,...
【vue3 + ts】支持图片缩放预览和图片热区点击功能
热区技术允许我们为图片指定特定的交互区域,用户点击或悬停在这些区域上时可以触发特定的事件。本文将深入探讨如何使用JavaScript实现这一功能,以及如何确保其在各种浏览器中的兼容性。 首先,我们需要了解什么是...
在网页设计中,"为图片根据坐标自动创建热区并点击变颜色" 是一种交互式功能,它允许用户通过点击图像上的特定位置来定义热区,并可以改变这些区域的颜色或透明度。这种技术通常用于创建图像映射,即在一张图片上...
在IT行业中,尤其是在网页开发领域,图片热区(Image Maps)是一种常见的交互设计技术,它允许我们将图片的不同区域定义为可点击的链接或执行其他交互功能。jQuery,一个流行的JavaScript库,提供了方便的方法来处理...
热区(Area)是HTML `<map>` 元素的一部分,允许我们在图像上定义可点击的交互区域。 1. **HTML `<img>` 和 `<map>` 元素**: - `<img>` 元素用于在网页上插入图像,`usemap` 属性用于关联图像与图像映射。 - `...
在IT行业中,模拟图片热区是一项常见的交互设计技术,它允许用户通过点击或悬停在图像的特定区域来触发特定的交互或展示相关信息。在这个场景中,"模拟图片热区 平面图点击及效果"涉及到的技术主要包括PNG定位、图片...
在网页设计中,图片热区(Image Map)是一种常见的交互元素,它允许用户与图片的特定区域进行交互,比如点击跳转到不同的链接或者执行其他操作。本示例主要探讨如何使用CSS来自定义图片热区,使得这些交互区域不仅...
**jQuery图片自定义热区**是一种网页开发技术,主要用于增强用户体验,通过在图像上创建可交互的区域,用户可以通过点击或悬停在这些热区上获取额外信息或执行特定操作。这种技术通常用于地图、产品展示或其他需要...
在网页设计中,图片热区(Image Map)是一种常见的交互元素,它允许用户通过点击或交互特定区域来触发不同的响应。jQuery 是一个流行的JavaScript库,它简化了DOM操作,事件处理,动画效果等功能,因此使用jQuery...
通过以上步骤,我们就能在Android应用中实现"图片区域点击"的功能,使图片成为具有交互性的热区。这种方式可以应用于各种场景,如地图导航、产品展示等,提高用户体验。在实际开发中,还可以结合动画效果和手势识别...
设计师可以用它替代传统的矩形或圆形按钮,通过图片上的热区来定义点击区域,从而使得界面更加美观和具有创意。此外,设计师还可以在图片上设置多个热区,形成多个交互点,让界面的操作更加直观和便捷。 图片热区的...
每个`<area>`标签可以设置`shape`属性(定义形状,如rect、circle、polygon),`coords`属性(定义形状的坐标),以及`href`属性(定义点击热区后跳转的URL)等。例如: - 矩形热区: ```html , y1, x2, y2" href...
图片热区是指在图像上定义特定的可点击区域,这些区域可以链接到其他页面或执行特定的JavaScript动作,为用户提供交互性。 在网页设计中,热区技术常用于创建交互式地图、产品展示或导航菜单。通过热区,我们可以将...
android区域热化,里边的报纸马赛克处理了。 http://my.csdn.net/my/album/detail/1657027 http://my.csdn.net/my/album/detail/1657026
view.aspx 加载图片和图片热区 orderPoint.aspx 设置图片热区 PS: 热区仅支持不规则多边形 此版本为简易开发版,但功能齐全. 支持图片缩放,热区自动根据图片缩放进行缩放. 第一次上传自主产品,请支持!
5. **扩展区域**:为了确保用户点击时不会因为微小的偏移而错过热区,可以考虑对识别到的热区进行适当扩展,比如使用膨胀算法增加边界。 6. **事件处理**:当用户在图像上点击时,获取鼠标位置,然后检查这个位置...