Android:旋转大图像时不会抛出错误
我搜索并找到了旋转图像的简单代码。我将图像从ImageView对象中提取到位图中,旋转它,然后将其放回原处。我意识到这不是最有效的方法,但我认为如果不在CATCH块中给出错误消息,它不会崩溃 这是我的密码。唯一传入的值是“r”或“l”,这取决于我要旋转的方向。Smaler图像(1500x1500或更小)工作正常。2500x2500左右的尺寸会出现问题Android:旋转大图像时不会抛出错误,android,image,crash,rotation,Android,Image,Crash,Rotation,我搜索并找到了旋转图像的简单代码。我将图像从ImageView对象中提取到位图中,旋转它,然后将其放回原处。我意识到这不是最有效的方法,但我认为如果不在CATCH块中给出错误消息,它不会崩溃 这是我的密码。唯一传入的值是“r”或“l”,这取决于我要旋转的方向。Smaler图像(1500x1500或更小)工作正常。2500x2500左右的尺寸会出现问题 public void rotate(String dir) { try { float angle = (dir
public void rotate(String dir)
{
try
{
float angle = (dir.equals("r") ? 90 : -90);
Bitmap bitmap = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
Matrix matrix = new Matrix();
matrix.reset();
matrix.postRotate(angle);
bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, false);
imageView.setImageBitmap(bitmap);
}
catch(Exception e)
{
Utilities.logError(e.toString());
}
}
关于它为什么会崩溃,为什么不例外,有什么线索吗?我刚刚收到一条消息“不幸的是,进程……已经停止”,我被踢回我的应用程序的欢迎屏幕
哦,对于踢腿,我将角度设置为零(硬编码),它没有崩溃。我怀疑它只是花了太长的时间来旋转,而安卓正在适应。但我不知道如何确认这是问题所在,或者如何告诉Android再等一会儿
即使我减少了旋转的预览图像,当我去保存时,我将不得不旋转全尺寸图像至少一次,并将遇到同样的问题。不是吗?我可以在不查看日志的情况下或多或少地保证您会遇到内存不足异常 您需要使用较小的图像,或者使用另一种不占用太多内存的方法进行旋转(您在这里同时分配了2个2500x2500位图!太多了!) 尝试使用旋转动画来获得效果
希望这有帮助:)这是堆栈跟踪后的崩溃部分是内存问题,部分是超时问题。我在UI线程中旋转,在某些情况下,它花费的时间有点太长。只有当我的应用程序也在做其他事情时,它的内存才会耗尽,但我敢打赌,在许多其他设备上,这都会是一个问题。模拟器就到此为止。他们都没有问题。只有真正的电话。谢谢