安卓开发区分地图不同的块
来源:互联网 发布:unity3d怎么创建地面 编辑:程序博客网 时间:2024/06/07 07:11
安卓开发区分地图不同的块
关于取屏幕的像素值问题,由于项目的需要,在地图上要划分不同的块来实现点击事件,解决办法就是把不同的块设为不同的颜色值,点击屏幕时得到坐标,然后把屏幕坐标转化为bitmap里实际的坐标,然后就可以直接获得像素值,代码如下:
DisplayMetrics metric = getResources().getDisplayMetrics();
BitmapFactory.Options bfoOptions = new BitmapFactory.Options();
bfoOptions.inScaled = false;
// getWindowManager().getDefaultDisplay().getMetrics(metric);
if (bitmap == null)
bitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.all, bfoOptions);
float density = metric.density;
int sWidth = (int) (metric.widthPixels); // 屏幕宽度(像素)
int sHeight = (int) (metric.heightPixels);
int bWidth = bitmap.getWidth();// bitmap宽高
int bHeight = bitmap.getHeight();
double rWidthPro = (double) bWidth / sWidth;// 比例
double rHeightPro = (double) bHeight / sHeight;
int pX = (int) (event.getRawX() * rWidthPro);// bitmap实际坐标
int pY = (int) (event.getRawY() * rHeightPro) - 50;
// if (event.getRawY() > sHeight / 3)
pY = pY - 50;
int value = bitmap.getPixel(pX, pY);
ColorValue colorValue = new ColorValue();
colorValue.x = Color.red(value);
colorValue.y = Color.green(value);
colorValue.z = Color.blue(value);
final String cityName = getCityName(colorValue);
if (cityName == null)
return true;
int resid = getResources().getIdentifier(cityName, "drawable",
getPackageName());
Drawable drawable = getResources().getDrawable(resid);
image.setImageResource(resid);
BitmapFactory.Options bfoOptions = new BitmapFactory.Options();
bfoOptions.inScaled = false;
// getWindowManager().getDefaultDisplay().getMetrics(metric);
if (bitmap == null)
bitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.all, bfoOptions);
float density = metric.density;
int sWidth = (int) (metric.widthPixels); // 屏幕宽度(像素)
int sHeight = (int) (metric.heightPixels);
int bWidth = bitmap.getWidth();// bitmap宽高
int bHeight = bitmap.getHeight();
double rWidthPro = (double) bWidth / sWidth;// 比例
double rHeightPro = (double) bHeight / sHeight;
int pX = (int) (event.getRawX() * rWidthPro);// bitmap实际坐标
int pY = (int) (event.getRawY() * rHeightPro) - 50;
// if (event.getRawY() > sHeight / 3)
pY = pY - 50;
int value = bitmap.getPixel(pX, pY);
ColorValue colorValue = new ColorValue();
colorValue.x = Color.red(value);
colorValue.y = Color.green(value);
colorValue.z = Color.blue(value);
final String cityName = getCityName(colorValue);
if (cityName == null)
return true;
int resid = getResources().getIdentifier(cityName, "drawable",
getPackageName());
Drawable drawable = getResources().getDrawable(resid);
image.setImageResource(resid);
0 0
- 安卓开发区分地图不同的块
- 安卓百度地图开发
- 安卓开发中遇到的色块残留问题
- 安卓开发百度地图需要注意的问题
- cocos2d-x生成的ios应用和安卓应用的ID(用于区分不同应用的标识)
- 不同苹果设备的区分《摘自iOS开发指南》
- 安卓开发高德地图(1)—— 地图的显示
- 安卓智能地图开发与实施四:二维地图的MapView与Layers
- 安卓游戏开发--策略地图游戏
- 安卓开发之地图加载
- 百度地图安卓搜索服务开发
- 安卓百度地图简单开发
- 安卓开发之百度地图定位
- 安卓百度地图开发代码
- 【安卓开发】连接百度地图api
- 安卓开发-百度地图-HelloBaiduMap
- 百度地图SDK安卓开发
- 安卓开发——百度地图修改地图中心点为所需经纬度以及地图空白的问题
- 对于《由对称性解2-sat问题》和“拓扑排序”的学习理解
- Java项目导出源代码jar包在Eclipse中查看中文注释乱码的问题
- 数的变幻(十个小孩分糖果)
- Android中Fatal signal 11 (SIGSEGV) at 0x6df6d7bf (code=2), thread 31535
- ioctl和内核通信传值例子
- 安卓开发区分地图不同的块
- 移动互联网长连接方案实例
- Understanding process.nextTick()
- 【c++程序】函数指针
- 32位 64位 数据类型区别
- Train Problem I
- Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果
- Android隐藏输入法
- 快速矩阵幂HDU2157