android下制作开机logo

android机器里一般会显示以下图片

1、  Uboot logo

2、  Kernel logo

3、  动画

4、  关机 logo

下面针对以上四种logo说明下如何制作

一、 Uboot logo

Uboot logo 这里的图片一般很采用比较小,用24bit的图片然后用BMPInfo.exe转换成数组,这里需要注意的就是图片的宽和高都要是4的倍数,这样生成的数组才可以是4的倍数。如下代码

点击(此处)折叠或打开

  1. // p16DstBuf- 目标buffer
  2. // p16SrcBuf-源BUFFER,一般来自一个全局数组
  3. // x1, y1, -16bit图片要刷的位置
  4. // nWidth, nHeight -图片宽高
  5. int Draw16bitBMPBuffer(UINT16* p16DstBuf, UINT16* p16SrcBuf, int x1, int y1, int nWidth, int nHeight)
  6. {

  7.     UINT16 *pu16VirBuf, *pu16Line, *pu16SrcLine;
  8.     int x, y;

  9.     UINT32 u32Cx=g_hCurrentDC->width;
  10.     UINT32 u32Cy=g_hCurrentDC->height;

  11.     for(y=y1;y<(y1+nHeight);y++){
  12.         pu16Line = p16DstBuf + y*u32Cx;
  13.         pu16SrcLine = p16SrcBuf + (y-y1)*nWidth;
  14.         for(x=x1;x<(x1+nWidth);x++) {
  15.                 pu16Line[x] = pu16SrcLine[x-x1];
  16.         }
  17.     }    

  18.     return 1;
  19. }


  20. void Draw_16bitBmpArray(UINT16* p16SrcBuf, int x1, int y1, int nWidth, int nHeight)
  21. {

  22.     if(0==g_u8_InitScreenDC) {
  23.      InitScreenDC(CFG_LCD_FBUFFER);
  24.     }
  25. // 进入更新后再初始化LCD
  26.     Draw16bitBMPBuffer(g_hCurrentDC->addr,p16SrcBuf, x1, y1, nWidth, nHeight);
  27. }


  28. int DrawPicture(UINT32 u32ID)
  29. {
  30.     UINT8 g_u8Temp;
  31.     switch(u32ID){//if(LCD_DRAW_LOWBATTERY==u32ID)
  32.         case IMG_BOOT_LOGO:
  33.         Draw_16bitBmpArray((UINT16*)LogoBitmap, (g_hCurrentDC->width-IMG_BOOTLOGO_WIDTH)/2, (g_hCurrentDC->height-IMG_BOOTLOGO_HEIGHT)/2, IMG_BOOTLOGO_WIDTH, IMG_BOOTLOGO_HEIGHT);
  34.                         break;
  35.             
  36.         default:
  37.              break;                
  38.         }                
  39. }



二、 制作kernel logo
1linuxgimp工具

       2、 转换图片

      pngtopnm logo.png | ppmquant -fs 224 | pnmtoplainpnm > logo_linux_clut224.ppm 转换图片png为ppm格式且为224色。

将生成的logo_linux_clut224.ppm 放到drivers/video/logo/ 目录,重新make即可

    三、 动画 logo

  1、 首先要明白, Android 系统的开机动画是一个 zip文件,首先是读取 /data/local/bootanimation.zip, 如果在那里找不到,就去读取默认的 /system/media/bootanimation.zip,而所谓动画只是循环的播放这个zip里的很多png图片
 2、bootanimation.zip你解压发现里面有三个部分(也有可能只有两个部分)
    part0 文件夹
(里面包含.png文件)
    part1 文件夹
    desc.txt  (这个文本是用来告诉系统,如何使用图片目录来实现动画的)
    下面描述下desc.txt的作用,就是用来描述动画如何播放的问题,例如:
     480 288 15        // 图片宽度 480,高度 28815是播放动画的每秒帧率。就是一秒钟播放多少张图片,动画的最原始实现。
     p 1 0 part0        // p
是一个分隔符, 1 表示播放一遍, 0表示播放完后停顿 0 帧,最后是图片所在的 zip包里的目录名。比如你的 zip包里最后是这么个结构
                                      

  
根据这个语法,我们也可以自定义各种动画形式,例如下面所示 :
  p 2 30 part0        
part0里的图片,播放 2遍,播放完一遍后停顿 30帧,因为我们之前设置了帧率是 15帧每秒,那么这里就等于停顿 2秒。
  p 0 0  part1        
part1里的图片无限循环播放,每次播放不停顿。

如果你设置的宽度和高度不充满屏幕也没关系,剩余区域,系统会填充黑色。如果你设置的宽度和高度大过屏幕,系统会自动裁剪显示居中部分的图片区域。
3、 如何打包成.zip文件
    将上述文件夹+desc.txt 无压缩率格式打包成 bootanimation.zip, 注意一定要选择无压缩率,无损压缩。另外保持压缩包后的目录结构。这里需要注意的是在 选择压缩文件 格式时候必须选.zip,  同时压缩方式选存储
     
    
    



阅读(433) | 评论(0) | 转发(0) |
0

上一篇:ubuntu下终端显示中文为乱码的问题

下一篇:android下camera数据流的分析

相关热门文章
  • 电视剧《咱们结婚吧》即将上映...
  • QEMU 访存机制介绍与应用...
  • 基于smdk4412在android4.0上分...
  • linux LCD驱动(一)--硬件分...
  • 《恋爱时光》定档光棍节 创爱...
  • android开发---解压system.img...
  • 不用vs和cygwin!Eclipse+cdt...
  • Android自定义View的实现...
  • Android避免内存泄露:合理使...
  • 让ProgressDialog在setCancela...
  • ChinaUnix & ITPUB社区12周年...
  • ssh连接出现以下提示,求解...
  • 如何扩展MYSQL
  • 准备做一个大型门户,用户什么...
  • gbk or utf8
给主人留下些什么吧!~~
评论热议

你可能感兴趣的:(Android平台)