gpt4 book ai didi

android - 如何在android中动态地使形状可拖动和可调整大小

转载 作者:搜寻专家 更新时间:2023-11-01 09:06:05 25 4
gpt4 key购买 nike

我是 android 的新手,我正在制作一个简单的应用程序,我从图库中选择一个图像,在图像上绘制一个矩形,用户可以在图像上的任何位置拖动并重新调整矩形的大小动态地。

到目前为止,我的代码可以从图库中加载图像并在图像上绘制一个矩形。但我不知道如何使矩形可动态拖动。

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();

ImageView imageView = (ImageView) findViewById(R.id.imgView);
Bitmap bMap = BitmapFactory.decodeFile(picturePath);

bMap = bMap.copy(Bitmap.Config.ARGB_8888 , true);

float width = imageView.getWidth();
float height = imageView.getHeight();

Canvas canvas = new Canvas(bMap);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(4);
paint.setColor(Color.RED);
canvas.drawRect(width/2+60, height/2-20, width/2-60, height/2+20, paint);

imageView.setImageBitmap(bMap);

}


}

Output

我想要的输出类似于上图。红色矩形可以由用户调整大小和拖动,然后保存图像。

最佳答案

您需要创建一个自定义 View 来表示您绘制的矩形。在 onDraw(...) 中,您可以设置矩形的 Paint 及其初始大小。现在的概念是,当它的角被触摸并被拖动时,当用户从屏幕上抬起手指时,矩形的 x 和 y 坐标将会改变。我会推荐给你this关于如何创建自定义 View 的 Android 开发人员指南。和 this是此处的类似问题帖子,可能会给您一些想法。

关于android - 如何在android中动态地使形状可拖动和可调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11816331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com