您的位置:首页 > 移动开发 > Android开发

android .9资源简单使用方法

2016-05-16 22:37 609 查看
1.什么是.9资源
简单地说,.9.png资源是安卓上面处理可拉伸视觉资源的一种格式。为什么需要可拉伸?第一,UI控件形状千奇百怪,显然矩形是无法完全满足需求的。第二,安卓机型碎片化严重,各种分辨率的屏幕都需要适配。所以很多时候视觉设计者设计的样式是固定的一些位置特殊处理,其余可无限拉伸,譬如,四个圆角处理好,其余位置拉伸即可。“.9”是九宫格的意思,所以也叫九宫格图片。

2.如何制作.9资源
安卓SDK提供了一个简单易用的制作工具draw9patch,在sdk/tools/下。启动以后是如下界面:



将某一个png图片拖入,譬如下图:



拖入后可以看到



左侧是操作区,右侧是效果展示区。如何操作?非常简单,用位于上下左右四个边缘的一个像素的黑线定义横向和纵向的拉伸区域。譬如上图,我希望横向可以在中间的区域(非圆角区域)拉伸,纵向箭头以上的区域拉伸(箭头始终位于右下角的效果)。那么,需要这样来配置:



点击或按住鼠标左键是绘制黑线,shift+点击或按住鼠标左键是擦除。有对齐阴影帮助绘制。右侧可以实时显示出拉伸效果。如果制作.9有误,在apk build time会报错提示。制作完成之后,ctrl+s另存为.9.png文件。

3.如何在程序中使用.9资源
主要有两种场景:作为背景、作为蒙板。
(1)作为背景
假设你的.9资源在drawable中定义为 R.drawable.myninepatch。
ImageView image = (ImageView)findViewById(R.id.imageview);
image.setBackgroundResource(R.drawable.myninepatch);

(2)作为蒙板
即在一个已经有完整视觉内容的view上面,绘制一个.9,利用其透明的部分,显示原有view的部分内容。
需要override View的onDraw()方法:
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Drawable drawable = getDrawable();
if (drawable != null) {
NinePatchDrawable mask = (NinePatchDrawable) context.getDrawable(R.drawable.myninepatch);
mask.setBounds(0, 0, getMeasuredWidth(), getMeasuredHeight());

//可以用一个color filter来灵活设置蒙板颜色
mask.setColorFilter(new PorterDuffColorFilter(0xFFFFFFFF, PorterDuff.Mode.SRC_ATOP));
mask.draw(canvas);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: