
如图所示,当点击不同区域做出不同提示
首先制作背景图,然后将不同区域的图片单独截取下来,截取的楼层图必须和背景相同大,保证当所有图片重叠是是一样完整的图片
背景图:

楼层图:

package com.bitcare.view;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
public class NavMapView extends View {
private Bitmap[] mBitmaps;
private OnClickBitmapListener clickBitmapListener;
public NavMapView(Context context) {
super(context);
}
public NavMapView(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* 设置图片
* @author yubin
* @date 2013-10-12
*/
public final void setBitmaps(Bitmap[] bitmap) {
this.mBitmaps = bitmap;
invalidate();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (mBitmaps != null) {
for (int i = 0; i < mBitmaps.length; i++) {
canvas.drawBitmap(mBitmaps[i], 0, 0, null);
}
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
which(event.getX(), event.getY());
}
return true;
}
public void which(float x, float y) {
if (mBitmaps != null) {
for (int i = 0; i < mBitmaps.length; i++) {
// 判断坐标点不超过图片得宽高
if ((int) x > mBitmaps[0].getWidth() || (int) y > mBitmaps[0].getHeight()) {
clickBitmapListener.ClickBitmap(-1);
break;
}
Bitmap mBitmap = mBitmaps[i];
// 判断坐标点是否是在图片得透明区域
if (mBitmap.getPixel((int) x, (int) y) != 0) {
clickBitmapListener.ClickBitmap(i);
break;
}
}
}
}
public final void setOnClickBitmapListener(OnClickBitmapListener listener) {
this.clickBitmapListener = listener;
};
public static interface OnClickBitmapListener {
/**
* @param index -1表示超出范围
* @author yubin
* @date 2013-10-12
*/
void ClickBitmap(int index);
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。