在Android中将图像放在矩形中

时间:2014-07-25 18:59:41

标签: android image

我有一个已经在屏幕上的ImageView,但我想在它周围放一个矩形用于碰撞检测。我试过这样做:

public void onDraw(Canvas canvas) {
         int[] l = new int[2];
            playerimage.getLocationOnScreen(l);
            int xxx = l[0];
            int yyy = l[1];
            int w = playerimage.getWidth();
            int h = playerimage.getHeight();
            int[] ll = new int[2];
            brickimg.getLocationOnScreen(l);
            int xxxx = l[0];
            int yyyy = l[1];
            int ww = playerimage.getWidth();
            int hh = playerimage.getHeight();
        paint.setColor(Color.BLACK);
        paint.setStrokeWidth(3);
        canvas.drawRect(xxx, yyy, w, h, paint);
        paint.setStrokeWidth(0);
        paint.setColor(Color.BLACK);
        canvas.drawRect(xxxx, yyyy, ww, hh, paint );

但它没有制作矩形。还有另一种方法可以在图像周围放置一个矩形吗?我正在尝试进行碰撞检测。

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

您可以尝试此功能。

public boolean collision(ImageView a, ImageView b){
    float bl = a.getY();
    float bt = a.getX();
    float br = a.getWidth() + bl;
    float bb = a.getHeight() + bt;
    float pl = b.getY();
    float pt = b.getX();
    float pr = b.getWidth() + pl;
    float pb = b.getHeight() + pt;
    if (bl <= pr && bl >= pl && bt >= pt && bt <= pb) {
        return true;

    } else if (br >= pl && br <= pr && bb >= pt && bb <= pb) {
        return true;
    } else if (bt <= pb && bt >= pt && br >= pl && br <= pr) {
        return true;
    } else if (bb >= pt && bb <= pb && bl >= pl && bl <= pr) {
        return true;
    }
    return false;
}