我在画布上从.png文件中绘制了5个位图 - 头部,身体和两条胳膊和腿。
如何在OnTouch上检测到哪些触摸?而且,更具体地说,我可以检测OnTouch是否在触摸的身体部位的实际形状内吗?
我的意思是,很明显,.png本身是矩形的,但Android知道吗,或者我可以告诉它,忽略图像中的透明度?
答案 0 :(得分:2)
您可以获得触摸的像素颜色,并将其与背景上的像素颜色进行比较。
编辑:好的,忽略这一点,你无法获得画布上像素的颜色,所以相反,获取触摸的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
}
}
}
}