ユーザーがギャラリーから画像を選択してロードするAndroidアプリを作成しています。画像ビューに画像をロードしました。画像ビューの上にボタンがあります。ユーザーがボタンをクリックすると、デフォルトの位置と寸法で長方形が画像上に描画される必要があります。ユーザーは、辺をクリックしてこの四角形のサイズを変更したり、四角形を画像ビュー内の任意のポイントにドラッグしたりできます。Google とスタック オーバーフローに関する調査を行って、長方形のカスタム ビューを作成し、それをイメージビュー上に描画する必要があることを発見しました。私が見つけた解決策は、カスタム ビューを作成する方法とそれにタッチ イベントを追加する方法を示しています。しかし問題は、アクティビティの画像ビューに myCustomView を追加する方法の解決策が見つからなかったことです。この疑問を解消するのを手伝ってください。
以下は、ボタン(画像の読み込み)がある私の主な活動です。ユーザーはそれをクリックして、ギャラリーから画像を読み込みます。画像のパスは他のアクティビティに送信されます。
public class MainActivity extends Activity {
private static int RESULT_LOAD_IMAGE = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button buttonLoadImage = (Button) findViewById(R.id.buttonLoadPicture);
buttonLoadImage.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
Intent i = new Intent(
Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, RESULT_LOAD_IMAGE);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK
&& null != data) {
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(selectedImage,
filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
Intent i = new Intent(MainActivity.this, ImageActivity.class);
i.putExtra("key", picturePath);
startActivity(i);
finish();
}
}
}
以下は、画像が imageview に表示され、mycustomview を呼び出す必要があるアクティビティです。
public class ImageActivity extends Activity {
Paint paint = new Paint();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_image);
Bundle bundle = getIntent().getExtras();
final String value = bundle.getString("key");
Bitmap bmp = BitmapFactory.decodeFile(value);
ImageView imageView = (ImageView) findViewById(R.id.imgView);
imageView.setImageBitmap(bmp);
Button buttonExit = (Button) findViewById(R.id.buttonExit);
buttonExit.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
finish();
}
});
Button buttonDrawRect = (Button) findViewById(R.id.DrawRect);
buttonDrawRect.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
}
});
}