在我的应用程序中,我提供了从文件路径编辑图像的功能。 现在我想添加一个功能来改变动画的图像方向,然后保存它。
我可以更改方向,但不知道如何向其添加动画。
这是我的代码。
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);
}
答案 0 :(得分:1)
您希望旋转视图的动画与旋转和保存实际位图的愿望之间存在冲突。
如果要旋转图像视图,最好的方法是使用动画更新步骤在onDraw
方法中旋转画布,或者像RotateAnimation
那样使用Android的助手。 。如果您想要示例,请给我们留言。
这是“好方法”,因为它不会在每个动画帧上创建新的位图,这将非常昂贵。
但是,你有一个冲突,你也想要旋转位图本身,而不仅仅是视图,以便保存它。这很好,因为它不是每个动画步骤。
因此,您必须尽可能晚地保存用户选择的要应用于位图的转换。然后为视图设置动画,但是响应用户是合适的。在保存时,您将在写入文件时连接所有用户转换。或者放弃动画制作的想法。
我的实现思路是在本地存储第二个矩阵,并让每个用户输入都更新画布变换和该矩阵。然后,您可以按住保存按钮并将其应用于更新的转换矩阵,然后“抓住”位图。
很高兴按要求详细说明。
某些来源
Android: Rotate image in imageview by an angle(提及创建许多位图的问题)
Rotating a view in Android(gauravjain0102的答案被低估了!)