如何在Android中创建可调整大小的ImageView

如何在Android中创建可调整大小的ImageView,android,bitmap,image-resizing,Android,Bitmap,Image Resizing,我希望我的应用程序的用户能够在运行时修改图像。用户应该能够通过点击图像视图的一角并拖动它来修改图像的高度和宽度,如下图所示: 我花了很多时间研究这个,我发现了一些类似于Pinch Zoom的东西,但没有一个完全符合我的要求 目前,我正在使用下面的功能调整位图的大小,并使用seekbar的onprogress更改方法(而不是frame)更改宽度。使用此函数更改图像大小并不能平滑工作 public static Bitmap decodeFile(File f,int WIDTH,int HIGH

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

我花了很多时间研究这个,我发现了一些类似于Pinch Zoom的东西,但没有一个完全符合我的要求

目前,我正在使用下面的功能调整位图的大小,并使用seekbar的onprogress更改方法(而不是frame)更改宽度。使用此函数更改图像大小并不能平滑工作

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;

}
更新:

现在使用已接受的问题答案在画布上绘制位图,工作顺利

现在,铰孔部分将图像周围的帧设置为类似裁剪帧的内容

请帮我做到这一点。

“你做错了”

您没有每次都创建新的
位图
,而是有几个选项:

  • 调整图像视图本身的大小
  • 创建自己的
    视图
    并使用
    画布
    绘制位图。这将允许您根据需要拉伸
    Btimap
  • 如果要使用
    画布
    ,则要显示这些“裁剪点”,也可以在画布上绘制它们。尽管如此,为了实现所需的行为和外观,您可能还需要覆盖这些方法:

  • onTouchEvent
    -当用户触摸裁剪点时,处理您的调整大小行为
  • onMeasure
    -稍微增加
    视图的大小,因为“裁剪点”稍微超出图像

  • 您可以使用此use cropimageview3完成此操作,并将图像设置为float drawable,您已经完成了

    您好,我看到了教程,但我想问您:位于图像侧面的点是否仅允许X轴或Y轴移动?如果是这样的话,那么您就不能在代码的
    //计算移动的距离
    部分中,简单地调整X轴和/或Y轴上图像的大小,并将其更新为
    图像视图
    ?没有未定位的点。重新缩放后,此帧应根据图像大小来确定。所以这个帧应该在每次图像周围动态生成。我改变了我的问题形象。请检查这个新图像。谢谢…我想有要点的部分已经完成了?你为此做了什么吗?框架现在还没有实现。首先,我试着只是为了宽度。我用seekbar代替frame来增加和减少宽度。我使用decodeFile函数重新调整位图的大小,并将其设置为imagview。但位图更改太慢,因此无法顺利运行。我能像在收缩变焦中一样获得平滑度吗?你到底有什么问题?你试过写点什么吗?谢谢我得到了我想要的流畅。我现在正在使用canvas..还有关于我们裁剪图像时的框架的任何建议。@SanketKachhela我知道这是很久以前的事了,但是你能分享你的代码吗?