1

在我的应用程序中,我提供了从文件路径编辑图像的功能。现在我想添加一个功能来用动画改变图像方向,然后保存它。

我可以更改方向,但不知道如何为其添加动画。

这是我的代码。

ImageView img;
Bitmap bmp;
Bitmap rotatedBMP;
String imageFilePath="";
File imgFile;
public void rotate(){
    if(rotatedBMP == null){
        if(imgFile != null && imgFile.exists())
            bmp = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
    }else
        bmp = rotatedBMP;
    // Getting width & height of the given image.
            int w = bmp.getWidth();
            int h = bmp.getHeight();
            Matrix mtx = new Matrix();
            mtx.preRotate(90);
            rotatedBMP = Bitmap.createBitmap(bmp, 0, 0, w, h, mtx, true);
            /*BitmapDrawable bmd = new BitmapDrawable(rotatedBMP);
            img.setImageDrawable(bmd);*/
            img.setImageBitmap(rotatedBMP);
}
4

1 回答 1

1

您希望以动画方式旋转视图与希望旋转和保存实际位图之间存在冲突。

如果要旋转图像视图,最好的方法是在onDraw具有动画更新步骤的方法中旋转画布,或者使用 Android 的帮助程序,例如RotateAnimation. 如果您需要示例,请给我们留言。

这是“好方法”,因为它不会在每个动画帧上创建一个新的位图,这将非常昂贵。

但是,您有一个冲突,您还想旋转位图本身,而不仅仅是视图,以便保存它。这很好,因为它不是在每个动画步骤上。

因此,您必须尽可能晚地保存要应用于位图的用户选择的转换。然后动画视图然而是适当的以响应用户。在保存时,您将在写入文件时连接所有用户转换。或者放弃动画的想法。

我的实现想法是在本地存储第二个矩阵,并让每个用户输入都更新画布变换该矩阵。然后,您将在按下保存按钮时“获取”位图并将其应用于更新的转换矩阵。

很高兴按要求详细说明。

一些来源

Android:将图像视图中的图像旋转一个角度(也提到了创建许多位图的问题)

在 Android 中旋转视图(gauravjain0102 的答案被低估了!)

于 2013-09-24T14:06:29.210 回答