Android LiveWallpaper:高效加载和绘制各种位图(例如:视频)

时间:2013-01-10 17:56:01

标签: android bitmap load live wallpaper

我正在开发一个动态壁纸,可以在背景上再现动画(如短视频)。

有谁知道如何有效加载各种全屏大小的位图并在画布上绘制它们? 我尝试了两种方法,两者都不是很好。


方法#1: 在壁纸启动时加载所有位图。

问题:内存超出限制(约35MB)无法加载超过10位图。所以动画缺乏不同的图像。


方法#2: 仅加载2位图。在运行时,绘制位图,删除旧位图,加载新位图,重复。

问题:消耗了很多系统,(不是内存,但一般会降低操作系统),但是它可以工作,因为它不会超出内存限制。但是,仍然会降低整个系统的速度。

示例:

  Drawer.drawAll(res,c,p);
  res.removeOldBitmaps();
  res.loadNewBitmaps(wpservice,display);

我想到的另一种方法是在separete线程上加载资源,你们怎么想?你有其他解决方案吗?

干杯!

1 个答案:

答案 0 :(得分:0)

解决了,我找到的解决方案如下:

在运行时加载图像,1乘1.

并使用以下选项:

/**Effective image decoder by chelin**/
public static Bitmap decodeResource(WallpaperService wpservice,int id){

    int scale=1;
    Resources res = wpservice.getResources();
    BitmapFactory.Options o2 = new BitmapFactory.Options();
    o2.inPreferredConfig = Bitmap.Config.ARGB_8888;
    o2.inSampleSize=scale;
    o2.inPurgeable = true;
    o2.inInputShareable = true;
    return BitmapFactory.decodeResource(res, id, o2);
}

希望它有效,因为它对我有用。干杯!