【Android界面实现】关于Android中9patch图的一点小解释

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992

关于为什么使用.9图,我就不长篇大论了,就是为了减少图片资源体积,我们这篇文章重点解决.9图的制作的一些小问题。

.9的制作,实际上就是在原图片上添加1px的边界,然后按照我们的需求,把对应的位置设置成黑色线,系统就会根据我们的实际需求进行拉伸。

下图是对.9图的四边的含义的解释,左上边代表拉伸区域,右下边代表padding box,就是间隔区域,在下面,我们给出一个例子,方便大家理解。

先看下面两张图,我们理解一下这四条线的含义。

上图和下图的区别,就在于右下边的黑线不一样,具体的效果的区别,看右边的效果图。上图效果图中深蓝色的区域,代表内容区域,我们可以看到是在正中央的,这是因为我们在右下边的是两个点,这两个点距离上下左右四个方向的距离就是padding的距离,所哟深蓝色内容区域在图片正中央,我们再看下图,由于右下边的黑线是图片长度,所以就没有padding,从效果图上的表现就是深蓝色区域和图片一样大,因此,我们可以利用右下边来控制内容与背景图边缘的padding。

如果你还不明白,那么我们看下面的效果图,我们分别以图一和图二作为背景图,下面是效果图。

我们可以看到,使用wrap_content属性设置长宽,图一比图二的效果大一圈,这是为什么呢?还记得我上面说的padding吗?

这就是padding的效果提现,怎么证明呢?我们再看下面一张图,给图一添加padding=0,这样背景图设置的padding效果就没了,是不是两个一样大了?

ok,我想你应该明白右下边的黑线的含义了,下面我们再看一下左上边的效果。

下面我们只设置了左上边线,效果图如下

上面的线没有包住图标,下面的线正好包住了图标,从右边的效果图应该可以看出差别,黑线所在的区域就是拉伸区域,上图黑线所在的全是纯色,所以图标不变形,下面的拉伸区域包裹了图标,所以在拉伸的时候就会对图标进行拉伸,但是这样就会导致图标变形。注意到下面红线区域了嘛?这是系统提示我们的,因为这样拉伸,不符合要求,所以会提示一下。

介绍了这么多,你应该会用ninepatch了吧?不会的话就留言,我看到就给你答疑解惑,嘻嘻

时间: 2024-11-10 03:10:20

【Android界面实现】关于Android中9patch图的一点小解释的相关文章

Javascript中window.opener的一点小总结

以前一直认为window.opener只有在window.open方法打开下的窗口才可以访问,没想到即使是a链接打开的页面的照样可以访问.window.opener指向父窗口,也就是来源窗口.可以利用window.opener获取来源页面location.href信息等,也可以操作来源 页面的DOM,十分强大 但下面的情况,window.opener的值为null 1,跨域的情况如果是www.a.com/1.html链接到www.b.com/2.html,这种情况会丢失2,利用的javascri

关于html页面中<a>标签的一点小问题

今天无聊在电脑上写一个网页的音乐播放器,在点击播放列表中的歌名时,页面突然就调到顶部了.我的a标签是这样写的:<a href="#"></a>.按理说是不该有跳转的,但是发生了,虽然可以再拖下来,但是用户体验真心不好.很久没有写html,记得以前没有碰到这种情况,所以就去网上搜了一下,看到了各种说法.只好自己去想了.当我无意间在标签中的“#”之后加了个a之后,突然发现页面就不跳转了,所以可能是浏览器对于“#”自动识别为跳转,加了东西后就会忽略了.所以以后可以写成

angular js jquery中post请求的一点小区别

这也是最近遇到的坑,还是之前那个项目,现在要实现登录功能. 背景:注册功能之前已经跑通了.前端用的是jquery后台是springMVC.鉴于注册和登录有些接口功能是类似的(比如注册确保邮箱是没有注册过,而登录是确保注册过),于是后台还准备用注册的那套接口. 登录的接口get请求是没问题的,但是post却出了问题:后台收不到请求体里的内容. 后来发现是jquery和angular的post行为有些区别,于是我做了个实验. <!DOCTYPE html> <html lang="

shell中需要了解的一点小东西

shell脚本调用的两种方式 一种是赋予权限,使用绝对路径 另一种只需要拥有读权限,使用bash 调用脚本 history命令 -c 清空历史命令 -w 把缓存中的历史命令写入历史命令保存文件当中,如果不手工指定历史命令保存文件,则放入默认历史命令保存文件~/.bash_history 历史命令默认会保存1000条,这是通过环境变量HISTSIZE来进行设置的,我们可以再环境变量配置文件/etc/profile中进行修改 因为历史命令是保存在~/.bash_history中的,而不是内存中,所以

UITableView中关于viewForHeaderInSection的一点小坑

新手入门,在保持兴趣的前提下,最直接的办法就是照着例子手动敲一遍代码,然后将示例跑起来,这样能最直观的看到效果. 但是,一般的面向初学者的教程或实例,技术面都相对于浅显,实现的效果也比较Low,就像开发商刚盖出的房子一样,也叫房子,但那是毛坯房.相对于有其他语言开发经验或项目经验的初学者(Ps:例如我~)来说,往往会以点带面,会主动去挖掘与教程相关的“姿势点”,想尽办法用已掌握的新技能去将这些实例完善.扩展,想一次就做出精装修的房子.又因为对于一门刚接触的新语言,了解的不够深入,所以也会难免陷入

Android 界面跳转及数据交换

作者:卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/40015757 本文演示:Android 界面跳转及数据交换,通过一个小Demo展示全部过程. 效果如下所示: 1)MainActivity.java package doogle.xian.bundletest; import android.app.Activity; import android.content.Intent; import android.os.Bund

android扁平化界面设计—在android中使用Font-Awesome

Font-Awesome 是为Bootstrap设计的一个图标集合字体,里面包含了300多个常用图标.使用Font-Awesome还具有如下优点: 1.减少了图标的绘制工作 2.适合扁平化界面设计 3.图标的大小和颜射可以在代码中自己设置,颜射不固定,可变性大 4.减小了APK的大小 Font-Awesome的使用方式: 到http://fortawesome.github.io/Font-Awesome/下载Font-Awesome字体,目前最新版本是4.3.0然后解压压缩包,将Fonts文件

iOS中xib与storyboard原理,与Android界面布局的异同

用文本标记语言来进行布局,用的最多的应该是HTML语言.HTML可以理解为有一组特殊标记的XML语言. 一.iOS中xib与storyboard显示原理 在iOS中主要的布置界面的方式有3种:代码,xib,storyboard. 1. 代码 代码布置界面是万能的,但通常很复杂.布置一个简单的界面可能需要很多行代码,因此十分繁琐. 下面为创建一个按钮的代码,最少也要3行: UIButton *btn = [UIButton buttonWithType:UIButtonTypeContactAdd

Android 界面中隐藏项目名称

具体办法有两个: 一.针对整个项目,所有页面都不显示标题栏可是就android的theme, 即在android配置文件AndroidManifest.xml中,为application节点添加android:theme属性,其值为android:style/Theme.NoTitleBar,完整语句为:<application android:icon="@drawable/icon" android:label="@string/app_name"  an