【问题标题】:Bitmap rotation issue in androidandroid中的位图旋转问题
【发布时间】:2012-06-15 09:21:04
【问题描述】:

我正在旋转屏幕点击按钮的背景图像。

Bitmap rotatedBitmap = null;
int curAngle = 0;

private Bitmap rotateImageBitmap(Bitmap org) {      

    if(rotatedBitmap != null  )
    {
        rotatedBitmap.recycle();
    }

    Matrix matrix = new Matrix();
    curAngle += 90;
    matrix.postRotate(curAngle);
    rotatedBitmap =  Bitmap.createBitmap(org, 0, 0,  org.getWidth(),  org.getHeight(), matrix, true);

    return rotatedBitmap;        
}

应用程序在第 5 次单击按钮时强制关闭。 (图像旋转 4 次)
Logcat:尝试使用回收的位图。请帮帮我。

【问题讨论】:

  • curAngle 不增加 90 每次旋转 90 并将图像保存在 Main Bitmap 中
  • 看起来传递给方法的位图正在被回收。

标签: android bitmap image-rotation


【解决方案1】:

最大角度为 360,当您点击第 5 次时,您的代码设置角度 = 450 这是无效的。所以当角度达到 360 度时尝试重置你的角度。

【讨论】:

  • 或者可以做 curAngle = curAngle%360 吗?
  • 或者可以做.. curAngle = (curAngle + 90) % 360 ;
【解决方案2】:

这是来自开发者指南 ....

  1. 移动设备通常具有受限的系统资源。 Android 设备可以为单个应用程序提供低至 16MB 的内存。

  2. 位图会占用大量内存,尤其是对于照片等丰富的图像。例如,Galaxy Nexus 上的相机可拍摄高达 2592x1936 像素(5 兆像素)的照片。如果使用的位图配置是 ARGB_8888(Android 2.3 以后的默认配置),则将此图像加载到内存中大约需要 19MB 内存(2592*1936*4 字节),会立即耗尽某些设备上的每个应用程序的限制。

【讨论】:

    猜你喜欢
    • 2015-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-20
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多