传统UI开发中,如果背景的大小不一样,一般需要为每种大小都制作一张图片,这在button中尤为明显。当然我们也可以一小块一小块水平重复的画,也可以垂直的话。在android中专门有一种叫nine patch图片(以 9.png结尾)来解决背景大小不一样时,只用一张背景图片。
在android sdk的目录下,tools文件夹里头draw9patch.bat的专门处理9patch的工具。
打开一张png图片,我们可以在png图片最外面的空格画一个像素宽的黑线。图片左边黑线的高度决定了垂直拉升时的扩展区域,也即当垂直拉伸时,只有这个区域的图片会被拉伸。同理图片上边的黑线长度决定了水平拉升时的扩展区域。图片右边的黑线可以不画,默认是指可以压扁到0px,画上黑线后,垂直方向就只可以压扁到右边黑线的高度了。图片下方的情况也一样。
从中我们也可以理解为什么叫 nine patch,相当于把一张png图分成了9个部分,分别为4个角,4条边,以及一个中间区域,4个角是不做拉升的,所以还能一直保持圆角的状态,而2条水平边和垂直边分别只做水平和垂直拉伸,所以不会出现边会被拉粗的情况,只有中间用黑线指定的区域做拉伸。结果是图片不会走样。
一般配置好环境后,使用自带的draw9patch.bat都会遇上dos窗口一闪便消失的情况,使用命令行运行该批处理后,看到跑出以下异常:
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/jdesktop/swingworker/SwingWorker
at com.android.draw9patch.Application$1.run(Application.java:48)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:633)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.lang.ClassNotFoundException: org.jdesktop.swingworker.SwingWorker
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at sun.misc.Launcher$ExtClassLoader.findClass(Launcher.java:229)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
... 9 more
这是因为Android在更新SDK之后并没有自动将它依赖的SwingWorker的lib文件下载回来,所以需要我们手动下载,然后放到指定位置,应该是在<您的sdk所在目录>/tools/lib/目录下,就OK啦,swing-worker-1.1.jar见附件:
分享到:
相关推荐
android 中用9.path对图片进行处理,处理后图片不会变形,可以进行不变形的缩放。
"*.9.png"是Android os里所支持的一种特殊的图片格式,用它可以实现部分拉伸,这种图片是经过9Path进行特殊处理过的,如果不处理的话,直接用PNG图就会有失真,拉伸不正常的现象出现。 3、9Path在哪里呢? 在...
本项目是一个安卓端的对图片进行马赛克处理的项目源码,如果图片过大可能出现直接强制退出的情况,支持毛玻璃效果、区块整体涂鸦、马赛克方格、跟随手指涂鸦效果使用方法: xml布局: java源码: mvImage....
用户自行选择加载方式,所以加载图片不受本库控制,若出现OOM等问题,可能需要在displayImage里进行压缩处理等 有好的建议可以提issue, 谢谢~~ 使用 配置权限 使用方式 // 自定义图片加载器 private ImageLoader...
(图片暂时没有处理上传服务器,只是上传了本地sdcard的path路径) 1.4此项目还有值得看的地方就是listview的复用处理。此处主要有两种处理方法。 1.5此项目为了测试方便,现在的所有信息都是自己给自己发。你也可以...
蓝色部分是对图片进行简单的压缩处理,如果不进行处理会出现内存溢出。 红色部分是将图片保存在DCIM文件夹下。 绿色部分是发生一个广播通知系统重新扫描制定文件,这样我们就可以在图库本地图片中看到拍摄的图片。...
----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...
2.3.3 使用9Patch图片作为按钮背景 68 2.3.4 单选按钮(RadioButton)和复选 框(CheckBox)介绍与应用 69 2.3.5 状态开关按钮(ToggleButton) 的功能与用法 71 2.3.6 时钟(AnalogClock和Digital ...
第3章、Android事件处理,包括按键响应机制和消息传递机制 3.2、基于监听器的事件处理: 3.3、基于回调的事件的处理: 3.4、响应系统设置的事件: 3.5、Handler消息传递机制: 第4章、深入理解Activity 4.1、...
用户自行选择加载方式,因此加载图片不受本库控制,如果出现OOM等问题,可能需要在displayImage里进行压缩处理等 有好的建议可以提 ,谢谢~~ 使用 初始化 // 自定义图片加载器 ISNav . getInstance() . init( new ...
1.首先跳转到系统相册选择图片 public void ChoosePicture(View view) { // 激活系统图库,选择一张图片 Intent intent = new Intent();...2.重载startActivityForResult函数,处理所选择的图片 @Override
第3章、Android事件处理,包括按键响应机制和消息传递机制 3.2、基于监听器的事件处理: 3.3、基于回调的事件的处理: 3.4、响应系统设置的事件: 3.5、Handler消息传递机制: 第4章、深入理解Activity 4.1、...
2.3.3 使用9Patch图片作为按钮背景 68 2.3.4 单选按钮(RadioButton)和复选 框(CheckBox)介绍与应用 69 2.3.5 状态开关按钮(ToggleButton) 的功能与用法 71 2.3.6 时钟(AnalogClock和Digital Clock)的功能与...
本项目是一个安卓端的对图片进行马赛克处理的项目源码,如果图片过大可能出现直接强制退出的情况,支持毛玻璃效果、区块整体涂鸦、马赛克方格、跟随手指涂鸦效果使用方法: xml布局:java源码: mvImage....
:rocket:更简单的处理Android系统文件操作 :rocket:适用于Android 4.4及以上系统,兼容AndroidQ新的存储策略 :rocket:图片压缩算法参考 :backhand_index_pointing_right: :rocket: Kotlin Sample :backhand_...
React本机得到真实路径 从文件uri获取真实文件路径 安装(iOS) 目前不支持 安装(Android) ...settingsDir, ' ../node_modules/react-native-get-real-path/android ' ) android/app/build.grad
本文实例讲述了Android编程实现擦除Bitmap中某一块的方法。分享给大家供大家参考,具体如下: 以前要截取Bitmap中的图片使用的一块块的拼接,虽然可以实现,但是效率很低。想了很久,无意中看到网上的对BITMAP图片的...
本文介绍了Android 简单的图片查看器源码实现,分享给大家,具体如下: public class MainActivity extends Activity { private EditText et_path; private ImageView iv; //创建handler 对象 // private Handler...