1

我正在制作一个 android 应用程序,用户在其中从图库中选择并加载图像。我完成了在图像视图中加载我的图像。图像视图上方有一个按钮。当用户单击按钮时,必须在图像上绘制一个具有默认位置和尺寸的矩形。用户可以通过单击边来重新调整该矩形的大小,也可以将矩形拖动到图像视图中的任意点。我对 Google 和堆栈溢出进行了一些研究,发现我需要为我的矩形创建一个自定义视图并将其绘制在 imageview 上。我找到的解决方案展示了如何制作自定义视图以及如何向其中添加触摸事件。但问题是我没有找到如何在活动中的图像视图上添加 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) {


        }
    });
}

在此处输入图像描述

4

2 回答 2

0

浏览这些链接。可以帮助你

Android中的重叠视图

如何在android中的其他视图上添加覆盖视图?

还要检查链接的帖子

希望这可以帮助你

于 2012-08-09T18:34:43.960 回答
0

基本上在 SurfaceView 上绘制图像。然后对于任何过去的事情,设置 android:background="@null" 以获得透明度。这就是你如何分层这样的东西。不要设置为 null 而是设置为 @null。

于 2012-08-09T18:35:20.683 回答