如何设置drawBitmap不全屏显示

3
我有一个位图,我是这样绘制它的:
bit = BitmapFactory.decodeResource(getResources(),
                   R.drawable.anim_ctrl_panel);
Paint paint = new Paint();
canvas.drawBitmap(bit, 80, 440, paint);

问题在于图片设置为全屏。在onTouchEvent方法中,我实现了位图的事件,并且无论我在屏幕上选择哪里,事件都会被触发。我希望图片有一个特定的位置,并且只有在该位置才触发事件。我该如何做到这一点?
编辑:问题出在onTouchEvent方法上。这是解决方案:
public boolean onTouchEvent(MotionEvent event) {if(80 <= event.getX() && event.getX()<= (80+bit.getWidth()/2) && (440 <= event.getY() && (event.getY() <= 440+bit.getHeight()))){   
            //...
        }else if((80+bit.getWidth()/2) <= event.getX() && event.getX()<= (80+bit.getWidth()) && (440 <= event.getY() && (event.getY() <= 440+bit.getHeight()))){
            //...
            }

这篇文章可以帮助我:如何使用OnTouch()检测图像是否被触摸

2个回答

1

试试这个:

canvas.save();
canvas.translate(posX, posY);
canvas.drawBitmap(bit, 0f, 0f, paint);
canvas.restore();

其实很相似,但应该是可行的。我还尝试限制您想要绘制的区域。http://developer.android.com/reference/android/graphics/Canvas.html#drawBitmap(android.graphics.Bitmap, android.graphics.Rect, android.graphics.RectF, android.graphics.Paint) - vicentazo

1
针对在特定区域设置图像,我认为矩形很有用,
就像这样,(在我的情况下,它对我有效)。
Canvas canvas = new Canvas(bitmap);
final Paint paint = new Paint();         
final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());         
paint.setAntiAlias(true);         
canvas.drawARGB(0, 0, 0, 0);         
canvas.drawBitmap(bitmap, rect, rect, paint);

试一下。

欲了解更多信息,请查看Android - Drawing (Core)

谢谢。


我得到了同样的东西...我认为我的问题在于onTouchEvent方法...我只放了这个:if (event.getX() > bit.getWidth() / 2),我也应该加一个y的条件,对吗? - Gabrielle
创建一个特定的ImageView对象,使用矩形和画布来固定高度和宽度(根据您的需要),然后为该特定视图实现onTouch(根据我理解您的问题)。谢谢。 - user370305
或者进行计算,获取触摸事件的getX和getY,并编写if条件语句来检查它是否在您的图像矩形坐标内,然后执行您想要的操作。 - user370305
如果您发现这是解决方案,请点赞并接受为正确答案。它会帮助您和其他用户。谢谢。 :-) - user370305

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接