使用动画android旋转图像位图

时间:2013-09-24 13:54:46

标签: android android-animation

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

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

这是我的代码。

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

1 个答案:

答案 0 :(得分:1)

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

如果要旋转图像视图,最好的方法是使用动画更新步骤在onDraw方法中旋转画布,或者像RotateAnimation那样使用Android的助手。 。如果您想要示例,请给我们留言。

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

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

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

我的实现思路是在本地存储第二个矩阵,并让每个用户输入都更新画布变换该矩阵。然后,您可以按住保存按钮并将其应用于更新的转换矩阵,然后“抓住”位图。

很高兴按要求详细说明。

某些来源

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

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