zoukankan      html  css  js  c++  java
  • 点击图片中不规则图形提示选中不同区域


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

    楼层图:


     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

  • 相关阅读:
    cat n个文件 June
    promise 码农
    [Linux]加载iso文件,并绑定到FTP共享
    [Linux]解决一例多个硬盘Linux启动的问题
    [CentOS]创建yum本地源
    [Java]服务器端用 Axis1.4 返回复杂对象记录
    [chs]Axis2 Binary Distribution 安装指南
    [CentOS]开启yum缓存
    [转]CSS hack总结
    闭包匿名闭包
  • 原文地址:https://www.cnblogs.com/code4app/p/4495232.html
Copyright © 2011-2022 走看看