gpt4 book ai didi

android - 使用动画android旋转图像位图

转载 作者:行者123 更新时间:2023-11-30 03:21:55 25 4
gpt4 key购买 nike

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

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

这是我的代码。

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

最佳答案

动画旋转 View 的愿望与旋转并保存实际位图的愿望之间存在冲突。

如果你想旋转 ImageView ,最好的方法是在带有动画更新步骤的 onDraw 方法中旋转 Canvas ,或者使用 Android 的帮助程序,如 旋转动画。如果您需要示例,请给我们留言。

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

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

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

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

很乐意按照要求详细说明。

一些来源

Android: Rotate image in imageview by an angle (也提到了创建许多位图的问题)

Rotating a view in Android (gauravjain0102 的回答被低估了!)

关于android - 使用动画android旋转图像位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18983631/

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