【.9.img】Android设计中的.9.png


cover3

在Android的设计过程中,为了适配不同的手机分辨率,图片大多需要拉伸或者压缩,这样就出现了可以任意调整大小的一种图片格式“.9.png”。这种图片是用于Android开发的一种特殊的图片格式,它的好处在于可以用简单的方式把一张图片中哪些区域可以拉伸,哪些区域不可以拉伸设定好,同时可以把显示内容区域的位置标示清楚。
本文结合一些具体的例子来看下.9.png的具体用法。

首先看下普通的.png资源与.9.png的资源区别:
Android设计中的.9.png

普通的png资源就不多介绍了,可以明显看到.9.png的外围是有一些黑色的线条的,那这些线条是用来做什么的呢?我们来看下放大的图像:
Android设计中的.9.png

放大后可以比较明显的看到上下左右分别有一个像素的黑色线段,这里分别标注了序号。简单来说,序号1和2标识了可以拉伸的区域,序号3和4标识了内容区域。当设定了按钮实际应用的宽和高之后,横向会拉伸1区域的像素,纵向会拉伸2区域的像素。如下图:
Android设计中的.9.png

拉伸的含义应该比较容易理解,但是内容区域的标注有什么意义呢?我们来看下图:
Android设计中的.9.png

这里程序设置的文字垂直居中,水平居左的对齐方式。对齐方式是没有问题的,但是对于这种大圆角同时又有些不规则边框的的图形来说,错误的标注方式会让排版看起来很混乱。所以我们需要修正内容区域的线段位置和长度。
Android设计中的.9.png
把横向的内容区域缩短到圆角以内,纵向的内容区域控制在输入框的高度以内,这样文字就可以正常显示了。

这里还有一种特殊情况,就是本身是.9.png的资源,但是在修改过程中你希望这张.9.png不能被拉伸(在做皮肤的情况中有可能会遇到),那怎么办呢?只要把拉伸区域的点点在透明像素的地方就可以了,这样拉伸的时候会拉伸透明部分的像素,而不会拉伸图像本身。如下图:
Android设计中的.9.png
大家可以看到拉伸区域的黑点是可以不连续的。

说了半天.9.png的用法,那.9.png如何输出呢?有很多种方式可以输出.9.png,比如说用draw9patch.bat这个工具,或者简单一点,用photoshop直接输出。输出的方式是先输出普通的png资源,然后扩大画布大小,上下左右各空出一个像素,再用一个像素的铅笔工具(颜色选择纯黑色),上下左右分别画点就可以了,保存的时候注意把后缀修改为.9.png。
有两点需要特别注意下:
1.最外围的一圈像素必须要么是纯黑色,要么是透明,一点点的半透明的像素都不可以有,比如说99%的黑色或者是1%的投影都不可以有;
2.文件的后缀名必须是.9.png,不能是.png或者是.9.png.png,这样的命名都会导致编译失败。

感谢你的阅读,本文由 腾讯ISUX 版权所有,转载时请注明出处,违者必究,谢谢你的合作。
注明出处格式:腾讯ISUX (http://isux.tencent.com/android-ui-9-png.html)

Splash.img是一种用于替换开机第一帧图像的镜像文件。可以通过两种方式来替换LK display(bootloader)logo。一种是利用平台自带的logo_gen.py生成splash.img镜像,然后使用fastboot重新刷写splash.img分区。另一种是利用三方软件将.png格式的图片转换为bootable/bootloader/lk/platform/msm_shared/include/splash.h头文件的buffer,并替换原有的logo。 在制作开机第一帧时,可以将提供的图片复制到基线名/device/qcom/common/display/logo/目录下,并在该目录执行命令python logo_gen.py 图片名,即可生成splash.img。然后将生成的splash.img复制到基线名/device/qcom/项目名/目录下,覆盖原有的splash.img文件。 另外,在高通6115平台上,开机第一帧的图片位于modem测代码的目录BOOT.XF.4.1/boot_images/QcomPkg/Logo/LA/logo1.bmp。制作这个开机第一帧图片的规则是使用bmp格式,深度为8位(可以使用Windows画图工具将256色位图另存为8位深度的.bmp格式)。 具体的代码逻辑可以参考源码bootable/bootloader/lk/dev/fbcon/fbcon.c的相关部分。系统首先会尝试从.img格式的镜像获取开机第一帧图像,如果失败,则会通过splash.h头文件的数组获取图像。如果数组无效或者获取失败,系统会显示默认的fbimg图像。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [高通平台第一帧splash和Bootanimation修改](https://blog.csdn.net/weixin_42237018/article/details/99678412)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Android 开机第一帧制作、开关机动画制作、壁纸添加](https://blog.csdn.net/Thatgriler/article/details/127107184)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值