Android在图像视图中创建一个矩形
嗨,我想知道如何在imageview中创建矩形。正如您在图像()中看到的,我需要创建一个内部和外部的矩形,这对于确定外部的碰撞没有问题,但似乎无法创建内部的一个。要创建内部的,我是这样做的:Android在图像视图中创建一个矩形,android,collision-detection,area,rect,Android,Collision Detection,Area,Rect,嗨,我想知道如何在imageview中创建矩形。正如您在图像()中看到的,我需要创建一个内部和外部的矩形,这对于确定外部的碰撞没有问题,但似乎无法创建内部的一个。要创建内部的,我是这样做的: Rect r1 = new Rect(Object1.x, Object1.y, Object1.x + Bounds1.width(), Object1.y + Bounds1.height()); 对于内部的一个,我想做同样的事情,但将所有值减半,但不起作用=(我认为您必须编写自定义imagevie
Rect r1 = new Rect(Object1.x, Object1.y, Object1.x + Bounds1.width(), Object1.y + Bounds1.height());
对于内部的一个,我想做同样的事情,但将所有值减半,但不起作用=(我认为您必须编写自定义imageview扩展imageview并重写onDraw方法。
在其上绘制矩形。扩展图像视图。在绘制时覆盖并绘制矩形
public class ExtendedImageView extends ImageView {
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setColor(Color.BLACK);
paint.setStrokeWidth(3);
canvas.drawRect(50, 50, 80, 80, paint);
}
}
编辑:
谢谢你们,但我没有使用OnDraw方法或画布,我的图像没有绘制,但文件夹中的png图像是可绘制的,没有使用OnDraw方法和画布就无法完成吗=(你可以有一个背景图像并在上面画一个矩形。检查编辑器。但是通过这种方式,你可以检查两个矩形之间是否相交?是的,你可以。你所需要的只是坐标。有一些游戏库可以帮助检测碰撞检测。感谢链接,但目前我想实现一些更简单的功能,只是为了学习,我刚开始学习Android^^
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ExtendedImageView ev= new ExtendedImageView(this);
ev.setBackgroundResource(R.drawable.ic_launcher);// set background
setContentView(ev);
}
class ExtendedImageView extends ImageView {
public ExtendedImageView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setColor(Color.BLACK);
paint.setStrokeWidth(3);
canvas.drawRect(300, 300, 100, 100, paint);// draw rectangle on it.
}
}
}