Ваш метод 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);
}
}
Обновлен:
Привет, Арун, я просто тестирую код, и он работает нормально. Вот подробности: например, вы можете создать ExtendedImageView в пакете com.abc.widget, поэтому в вашем файле 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);
}