如何在Android中创build可resize的ImageView

我希望我的应用程序的用户能够在运行时修改图像。 用户应该能够通过点击图像视图的angular落并拖动它来修改图像的高度和宽度,如下图所示:

在这里输入图像说明

我花了很多时间研究这个,我发现多点触控感和调整一个大的位图文件缩放输出文件像捏缩放,但这些都不符合我的要求。

目前我正在调整位图使用这下面的finction和改变宽度在search栏的onprogress改变方法而不是框架。 通过使用这个function改变图像尺寸是不行的。

public static Bitmap decodeFile(File f,int WIDTH,int HIGHT){ try { //Decode image size BitmapFactory.Options o = new BitmapFactory.Options(); o.inJustDecodeBounds = true; BitmapFactory.decodeStream(new FileInputStream(f),null,o); //The new size we want to scale to final int REQUIRED_WIDTH=WIDTH; final int REQUIRED_HIGHT=HIGHT; //Find the correct scale value. It should be the power of 2. int scale=1; while(o.outWidth/scale/2>=REQUIRED_WIDTH && o.outHeight/scale/2>=REQUIRED_HIGHT) scale*=2; //Decode with inSampleSize BitmapFactory.Options o2 = new BitmapFactory.Options(); o2.inSampleSize=scale; return BitmapFactory.decodeStream(new FileInputStream(f), null, o2); } catch (FileNotFoundException e) {} return null; } 

更新:

现在在使用这个问题的接受答案在canvas上平滑地使用绘制位图。

现在扩展的部分是围绕图像设置框架,就像裁剪框架一样。

请帮我做到这一点。

Solutions Collecting From Web of "如何在Android中创build可resize的ImageView"

你可以使用这个库使用cropimageview3来完成这个工作,并设置你的图像在浮动drawable和你完成

“你这样做是错的”。

而不是每次创build新的Bitmap ,你有几个select:

  1. 调整ImageView本身的大小。
  2. 创build您自己的View并使用Canvas绘制位图。 这可以让你拉伸Btimap只要你想。

如果你使用Canvas ,那么为了显示这些“裁剪点”,你也可以在canvas上绘制它们。 尽pipe如此,为了实现所需的行为和外观,您可能还需要重写这些方法:

  1. onTouchEvent – 在用户触摸裁剪点时处理您的调整行为。
  2. onMeasure – 稍微增加你的View大小,因为你的“crop-points”稍微偏离了图像。