Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 这些问题_Android_Bitmap_Touch - Fatal编程技术网

Android 这些问题

Android 这些问题,android,bitmap,touch,Android,Bitmap,Touch,我从画布上的.png文件中绘制了5个位图——一个头部、一个身体和两条胳膊和腿 我怎样才能检测到OnTouch上触碰了哪些?更具体地说,我能检测出OnTouch是否在被触摸身体部位的实际形状范围内吗 我的意思是,很明显,.png本身是矩形的,但是安卓知道,或者我可以告诉它,忽略图像中的透明度吗?你可以触摸像素的颜色,并将其与这些颜色的背景上像素的颜色进行比较 编辑:好的,忽略这一点,你无法获得画布上像素的颜色,因此,取而代之的是,获取触摸的x,y,检查是否有任何身体部位图像被触摸过,如果是,从触摸

我从画布上的.png文件中绘制了5个位图——一个头部、一个身体和两条胳膊和腿

我怎样才能检测到OnTouch上触碰了哪些?更具体地说,我能检测出OnTouch是否在被触摸身体部位的实际形状范围内吗


我的意思是,很明显,.png本身是矩形的,但是安卓知道,或者我可以告诉它,忽略图像中的透明度吗?

你可以触摸像素的颜色,并将其与这些颜色的背景上像素的颜色进行比较

编辑:好的,忽略这一点,你无法获得画布上像素的颜色,因此,取而代之的是,获取触摸的x,y,检查是否有任何身体部位图像被触摸过,如果是,从触摸的x,y中获取图像的x,y,然后获取图像的像素,它应该是透明的或彩色的

public boolean onTouchEvent(MotionEvent event)
{
    int x = (int) event.getX();
    int y = (int) event.getY();
    int offsetx, offsety;

    for(int i = 0;i<NUM_OF_BODY_PARTS;i++)
    {
         if(bodyPartRect[i].intersects(x,y,x+1,y+1))
         {
             offsetx = x - bodyPartRect[i].left;
             offsety = y - bodyPartRect[i].top;
             if(bodyPartBMP[i].getPixel(offsetx,offsety) == TRANSPARENT)
             {
                 //whatever
             }
         }
     }
}
public boolean onTouchEvent(运动事件)
{
int x=(int)event.getX();
int y=(int)event.getY();
int offsetx,offsety;

对于(int i=0;i伟大的想法,我从未想过这是可能的。我将不得不用谷歌搜索如何a)发现按下了什么像素,b)找到它是什么颜色。但非常感谢这个想法。不过,我仍然对任何其他可能的解决方案感兴趣,以进一步拓宽我的知识面。