点击图片中不规则图形提示选中不同区域
如图所示,当点击不同区域做出不同提示
首先制作背景图,然后将不同区域的图片单独截取下来,截取的楼层图必须和背景相同大,保证当所有图片重叠是是一样完整的图片
背景图:
楼层图:
1 如图所示,当点击不同区域做出不同提示 2 首先制作背景图,然后将不同区域的图片单独截取下来,截取的楼层图必须和背景相同大,保证当所有图片重叠是是一样完整的图片 3 背景图: 4 5 楼层图: 6 7 8 [java] view plaincopy 9 package com.bitcare.view; 10 11 import android.content.Context; 12 import android.graphics.Bitmap; 13 import android.graphics.Canvas; 14 import android.util.AttributeSet; 15 import android.view.MotionEvent; 16 import android.view.View; 17 18 public class NavMapView extends View { 19 20 private Bitmap[] mBitmaps; 21 private OnClickBitmapListener clickBitmapListener; 22 23 public NavMapView(Context context) { 24 super(context); 25 } 26 27 public NavMapView(Context context, AttributeSet attrs) { 28 super(context, attrs); 29 } 30 31 /** 32 * 设置图片 33 * @author yubin 34 * @date 2013-10-12 35 */ 36 public final void setBitmaps(Bitmap[] bitmap) { 37 this.mBitmaps = bitmap; 38 invalidate(); 39 } 40 41 @Override 42 protected void onDraw(Canvas canvas) { 43 super.onDraw(canvas); 44 if (mBitmaps != null) { 45 for (int i = 0; i < mBitmaps.length; i++) { 46 canvas.drawBitmap(mBitmaps[i], 0, 0, null); 47 } 48 } 49 } 50 51 @Override 52 public boolean onTouchEvent(MotionEvent event) { 53 if (event.getAction() == MotionEvent.ACTION_DOWN) { 54 which(event.getX(), event.getY()); 55 } 56 return true; 57 } 58 59 public void which(float x, float y) { 60 if (mBitmaps != null) { 61 for (int i = 0; i < mBitmaps.length; i++) { 62 // 判断坐标点不超过图片得宽高 63 if ((int) x > mBitmaps[0].getWidth() || (int) y > mBitmaps[0].getHeight()) { 64 clickBitmapListener.ClickBitmap(-1); 65 break; 66 } 67 Bitmap mBitmap = mBitmaps[i]; 68 // 判断坐标点是否是在图片得透明区域 69 if (mBitmap.getPixel((int) x, (int) y) != 0) { 70 clickBitmapListener.ClickBitmap(i); 71 break; 72 } 73 } 74 } 75 } 76 77 public final void setOnClickBitmapListener(OnClickBitmapListener listener) { 78 this.clickBitmapListener = listener; 79 }; 80 81 public static interface OnClickBitmapListener { 82 /** 83 * @param index -1表示超出范围 84 * @author yubin 85 * @date 2013-10-12 86 */ 87 void ClickBitmap(int index); 88 } 89 }
来自:http://blog.csdn.net/q445697127/article/details/12653127