【发布时间】:2012-08-10 02:40:50
【问题描述】:
我正在制作一个 android 应用程序,用户可以在其中从图库中选择并加载图像。我已完成将图像加载到图像视图中。图像视图上方有一个按钮。当用户单击按钮时,必须在图像上绘制一个具有默认位置和尺寸的矩形。用户可以通过单击边来重新调整该矩形的大小,也可以将矩形拖动到图像视图中的任意点。我对 Google 和堆栈溢出进行了一些研究,发现我需要为我的矩形创建一个自定义视图并将其绘制在 imageview 上。我找到的解决方案展示了如何制作自定义视图以及如何向其中添加触摸事件。但问题是我没有找到如何在活动中的图像视图上添加 myCustomView 的解决方案。请帮我解开这个疑惑。
下面是我的主要活动,其中有一个按钮(加载图像)用户单击它以从图库中加载图像。图片的路径发送给其他activity。
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 的 Activity。
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) {
}
});
}
【问题讨论】:
-
所以您希望“imageView”在单击边时调整大小。对吗??
-
在我的问题的编辑中不看图像。我只想在我的图像上绘制一个红色矩形。以聚焦图像的某些特定部分。我希望调整矩形的大小并拖动而不是 imageView..
标签: android android-imageview android-custom-view