我在imageview上绘制矩形时遇到问题。这是代码的和平。 Xml也在那里。我完全担心的是,如果我们可以在imageview上绘制矩形。??
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.cropimage);
paint=new Paint();
bobj = new BaldBooth1();
bm = BaldBooth1.bMap;
d = new BitmapDrawable(bm);
iv = ((ImageView) findViewById(R.id.image));
iv.setImageDrawable(d);
createRectInView(iv);
((ImageButton) findViewById(R.id.next)).setOnClickListener(this);
}
public void createRectInView(View v) {
paint.setColor(Color.BLACK);
paint.setStrokeWidth(3);
canvas=new Canvas();
canvas.drawRect(50, 50, 80, 80, paint);
v.draw(canvas);
}
答案 0 :(得分:2)
您的方法createRectInView(View v)
不会在ImageView上绘制一个矩形,它只是创建一个画布,在该画布上绘制一个矩形,然后在该画布上绘制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);
}
}
更新:
嗨arun,我只是测试代码,它运行正常。以下是详细信息:例如,您可以在com.abc.widget包中创建ExtendedImageView,因此在cropImage.xml文件中,将<ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content">
替换为<com.abc.widget.ExtendedImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content">
。如您所见,您只需要更改类名。然后将onCreate()
方法更改为:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.cropimage);
bobj = new BaldBooth1();
bm = BaldBooth1.bMap;
d = new BitmapDrawable(bm);
iv = ((ImageView) findViewById(R.id.image));
iv.setImageDrawable(d);
((ImageButton) findViewById(R.id.next)).setOnClickListener(this);
}