android - Dealing with Large Bitmaps(平铺小位图来创建墙纸)

标签 android memory views bitmap

我遇到了内存问题,我认为这可能与创建大型位图有关。

手头的任务是获取一个相当小的平铺图像并创建一个较大的平铺图像并将其设置为手机壁纸。我这样做的方式是:

1) Create a view that is 2 * screen width, 1 * screen height

2) Set the view background to a BitmapDrawable with the tile mode set to repeat

3) Create a bitmap with the views dimensions

4) draw the view to the bitmap by: view.draw(new Canvas(bitmap))

5) set wallpper: getApplicationContext().setWallpaper(bitmap)

这在我的手机 (HTC Magic) 和我试过的其他手机上运行良好。但是我收到了与此问题相关的错误报告。我试图通过将所需尺寸加倍来重现问题,当 View 被绘制到位图时,问题似乎发生在第 4 步:

ERROR/dalvikvm-heap(124): Heap Massage needed (7372800-byte external allocation too big)

我不确定如何解决这个问题。请帮忙! 谢谢

最佳答案

我相信你已经想到了,但是:你包括了吗

<uses-permission android:name="android.permission.SET_WALLPAPER" />

在您的 list 文件中?

你确定没有抛出异常?显示 Toast 可能有问题。

关于android - Dealing with Large Bitmaps(平铺小位图来创建墙纸),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4022860/

相关文章:

mysql - 是否可以从另一个 View 创建 View ?

count - 如何在 Web 应用程序中创建可靠且强大的页面查看计数器?

asp.net-mvc - MVC View 中的分支逻辑

android - 如何在产品 flavor 中使用不同的启动器 Activity ?

android - 当从单独的类调用 asynctask 时,进度对话框不显示在异步任务中

c++ - 链接器脚本 - 在内存区域的末尾放置一个节

c++ - 为什么在分配有 'new' 的指针上调用 free() 会导致堆损坏?

Android:在屏幕上定位文字。 Google ML Kit 边界框有点偏离

android - 我可以使用 android camera intent 拍摄黑白照片吗?

c - Valgrind/内存错误