Android培训班(22)

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 19:02 点击:

在初始化过程里,会显示一个LOGO图片,那么它是怎么实现显示这个图片的呢?它的代码如下:

#001  /* 565RLE image format: [count(2 bytes), rle(2 bytes)] */

#002 

#003  int load_565rle_image(char *fn)

#004  {

这段代码是加载565RLE格式的LOGO图片,函数的参数是图片路径。

 

#005      struct FB fb;

#006      struct stat s;

#007      unsigned short *data, *bits, *ptr;

#008      unsigned count, max;

#009      int fd;

#010 

#011      if (vt_set_mode(1))

#012          return -1;

这段代码是设置显示输出为图片模式。

 

#013 

#014      fd = open(fn, O_RDONLY);

#015      if (fd < 0) {

#016          ERROR("cannot open %s ", fn);

#017          goto fail_restore_text;

#018      }

这段代码是打开要显示的图片。

 

#019 

#020      if (fstat(fd, &s) < 0) {

#021          goto fail_close_file;

#022      }

这段代码是获取打开文件的信息,比如文件的大小。

 

#023 

#024      data = mmap(0, s.st_size, PROT_READ, MAP_SHARED, fd, 0);

#025      if (data == MAP_FAILED)

#026          goto fail_close_file;

这段代码是映射图片文件到内存。

 

#027 

#028      if (fb_open(&fb))

#029          goto fail_unmap_data;

这段代码是打开显示缓存内存,以便把图片数据放到显示缓存里。

 

#030 

#031      max = fb_width(&fb) * fb_height(&fb);

#032      ptr = data;

#033      count = s.st_size;

#034      bits = fb.bits;

#035      while (count > 3) {

#036          unsigned n = ptr[0];

#037          if (n > max)

#038              break;

#039          android_memset16(bits, ptr[1], n << 1);

#040          bits += n;

#041          max -= n;

#042          ptr += 2;

#043          count -= 4;

#044      }

这段代码是把图片数据填入显示缓存。

 

#045 

#046      munmap(data, s.st_size);

#047      fb_update(&fb);

这段代码是更新显示缓存,并把LOGO显示出来。

 

#048      fb_close(&fb);

#049      close(fd);

#050      unlink(fn);

这段代码关闭上面打开的资源,并删除LOGO图片文件,由于android把LOGO图片加载到内存里,并且LOGO显示完成后,再没有作用了,及时回收资源。如果想不删除这个图片,就需要把这行代码删除掉,或者每次显示前动态地拷贝到这里。

 

#051      return 0;

#052 

#053  fail_unmap_data:

#054      munmap(data, s.st_size);   

#055  fa

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • Android 完全退出程序
    • 原创:Android应用开发-Andorid歌词秀,含源码
    • android 屏幕保护
    • Android手机软件汉化教程---第四课 dex文件汉化
    • 众多Android 开源项目推荐,给力工作给力学习
    • Android Audio代码分析4
    • Android得到已安装的应用程序信息!
    • Android开发者指南(29) —— USB Host and Accessory
    • Android成长的幕后推手:工程师鲁宾
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1