Android学习随笔 -- draw9patch的使用

draw9patch的作用

通过draw9pacth生成的.9.png的图片的主要解决 在设计中 比如使用一个图片作为背景图片时,当要填充的区域 的长宽比例不同于图片的实际长宽比例时 图片会被拉伸的变形。所以使用生成的.9.png图片不会被完全的拉伸变形  而是只是拉伸其中的某一部分。

如没有使用draw9patch的图片做背景 以及 使用draw9patch的图片做的背景。

图像会被全部拉伸放大,变形不清晰。这样的不需要放的部分不会被拉伸变形。

如何制作9patch的图片

进入android目录下的tool目录下面运行draw9patch.bat, 到如需要制作的png格式的图片。

在图片的上部分和做部分各加上黑条,接下来我来介绍黑条的作用。

在其上部分空白处加上如上图黑点   左侧的表示 在横向向左延伸时候被拉伸的区域

右侧的表示向右侧拉伸的区域

同理,左侧的黑条区域 为上下拉伸时 被拉伸的区域,点击 Show patches 将会显示被拉伸的所有区域

下面在展示一些使用前后的对比图

这里主要就是设置好 黑条的位置,在保存图片 会生成一个.9.png 的图片 这个图片就是需要使用的9patch的图片。

Android学习随笔 -- draw9patch的使用

时间: 2024-08-09 02:06:04

Android学习随笔 -- draw9patch的使用的相关文章

android 学习随笔八(网络)

1.简单新闻客户端 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:c

android 学习随笔二十一(内容提供者 )

一.内容提供者* 应用的数据库是不允许其他应用访问的* 内容提供者的作用就是让别的应用访问到你的私有数据* 自定义内容提供者,继承ContentProvider类,重写增删改查方法,在方法中写增删改查数据库的代码,举例增方法 @Override public Uri insert(Uri uri, ContentValues values) { db.insert("person", null, values); return uri; }* 在清单文件中定义内容提供者的标签,注意必须

android 学习随笔二十八(应用小结 )

去掉标题栏的方法 第一种:也一般入门的时候经常使用的一种方法requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏注意这句一定要写在setContentView()方法的前面,不然会报错的 第二种:在AndroidManifest.xml文件中定义<application android:icon="@drawable/icon" android:label="@string/app_name" androi

Android学习随笔之UI美化(一)--------- 样式和主题

1.样式和主题的使用 样式和主题是一样的,都是一系列属性的集合,只是应用的对象不同,样式应用在单个控件上,如果TextView,Button等.主题应用在功能清单文件中的<application>或者<activity>标签上以属性的形式出现,如: <application         theme=”XXX”/> <activity     theme=”XXX”/>   来看一个清单文件: 在这里要明确两点:  1.主题是应用在application或

Android学习随笔之UI美化(二)--------- shape的使用

shape用于设定形状,可以在selector,layout等里面使用,有6个子标签. 大小(size) 渐变(gradient) 填充(solid) 圆角(corners) 描边(stroke) 间隔(padding) res/drawable/shape_self.xml <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.androi

android 学习随笔十二(网络:使用异步HttpClient框架)

使用异步HttpClient框架发送get.post请求 在https://github.com/ 搜索 asyn-http https://github.com/search?utf8=?&q=asyn-http 下载 loopj/android-async-http public class MainActivity extends Activity { Handler handler = new Handler(){ public void handleMessage(android.os

android 学习随笔十八(广播与服务 )

1.广播接收者注册 清单文件注册(Android四大组件都要在清单文件中注册) 一旦应用部署,广播接收者就生效了,直到用户手动停止应用或者应用被删除 广播接收者可以使用代码注册 需要广播接收者运行时,使用代码注册,不需要时,可以使用代码解除注册 特殊广播接收者,必须代码注册.电量改变.屏幕开关,必须使用代码注册 2.注册广播接收者 //创建广播接收者对象 receiver = new ScreenOnOffReceiver(); //通过IntentFilter对象指定广播接收者接收什么类型的广

android 学习随笔

Memory Options: VM Heap表示每个应用所能占用的最大内存. Android 项目目录结构 SRC java源码 android.jar 导入jar才能使用android的api libs 第三方jar包 assets 资源文件夹,存放音频视频等较大文件 bin 编译打包后自动生成的文件 RES 资源文件夹 drawable存放图片(ID 在R.java自动生成,通过ID调通,不用通过IO调用)文件名不能用数字和中文 layout 布局文件 menu 指定菜单样式 values

android 学习随笔二十七(JNI:Java Native Interface,JAVA原生接口 )

JNI(Java Native Interface,JAVA原生接口) 使用JNI可以使Java代码和其他语言写的代码(如C/C++代码)进行交互. 问:为什么要进行交互? 首先,Java语言提供的类库无法满足要求,且在数学运算,实时渲染的游戏上,音视频处理等方面上与C/C++相比效率稍低. 然后,Java语言无法直接操作硬件,C/C++代码不仅能操作硬件而且还能发挥硬件最佳性能. 接着,使用Java调用本地的C/C++代码所写的库,省去了重复开发的麻烦,并且可以利用很多开源的库提高程序效率.