2015-10-13 77 views
-1

意外的是,我无法在互联网上找到如何创建一个没有方形边界的图像对象,以便onClick事件应该只在用户点击图像时触发。Android Studio如何创建一个没有方形边界的图像?

onClick event should not fire up when a user click at this point outside the image

onClick event should only fire up when a user click at a point inside the image

所有的途径和方法有很大的欢迎。谢谢。

+0

即使你可以得到一个没有方形边框的图像,你放入的imageview仍然是方形的 – tyczj

+2

根据定义,图像是矩形。 – njzk2

+0

对于一个例子,在html中,我们可以使用svg对象来创建图像,以便该对象的形状与图像相同,没有方形边界,现在我已经尝试在android studio中使用svg,并且仍然存在不可见的方块边界,如果点击图像外点击事件将触发 – Charas

回答

1

如果您用作ImageView,您可以设置:background =“@ null”,希望这可以帮助您。

+0

nah,doesn没有工作,onClick事件仍然发射时,它的点击图像以外.. – Charas

+0

对不起,我可怜的英语,我误解了你。这可以通过定义View的子类并重写onClickEvent()方法来解决。当点击图像时,获取被点击的点的颜色值,如果一个颜色值为绿色,则响应该事件。如果全部透明,则停止它并返回。 –

+0

谢谢你,这似乎会工作,你能指导我的方法来获得点的颜色值?它是getSolidColor()方法吗? – Charas

0

这是从其他的博客样本:

@Override 

public boolean onTouchEvent(MotionEvent event) { 

    int action = event.getAction(); 

    if(action != MotionEvent.ACTION_DOWN) { 

     return super.onTouchEvent(event); 

    } 

    int x = (int)event.getX(); 

    int y = (int)event.getY(); 

    if(width == -1 || height == -1) { 

     Drawable drawable = ((StateListDrawable)getBackground()).getCurrent(); 

     bitmap = ((BitmapDrawable)drawable).getBitmap(); 

     width = getWidth(); 

     height = getHeight(); 

    } 

    if(null == bitmap || x < 0 || y < 0 || x >= width || y >= height) { 

     return false; 

    } 

    int pixel = bitmap.getPixel(x, y); 

    if(Color.TRANSPARENT == pixel) { 

     return false; 

    } 

    return super.onTouchEvent(event); 

} 

这就是博客:click here

的博客意识到,点击Chrome浏览器图标的不同部分的功能,加深其被点击的部分的颜色,在这里该事件是通过判断颜色来回应的。

晚安!

+0

谢谢你的帮助,我会试试这个方法。 – Charas

相关问题