Android学习之制作.9.png(点九)切图-程序员宅基地

技术标签: app  安卓  android  Android  

前言

在Android开发中,我们会碰到图片在有些机器上拉伸,导致模糊的情况。
举个例子:各种app(QQ,微信等)的聊天气泡会随着内容自动拉伸。如果不使用.9.png,则很可能会出现下面的现象(图片来源于网络)。各种按钮的背景图也需要用到.9.png
在这里插入图片描述
因此为了使图片有更好的显示效果,我们要用到一种特殊格式的图片(NinePatchDrawable graphic),也叫做点九图。这是一种可拉伸的位图,在Android中会自动调整图片的大小以适应内容。

点九图

我们所看到的点九图的四周都有黑边标记,但是这些黑边都不会被显示出来,这些黑边用于标记拉伸内容填充的部分。

四条边线的含义
上边线:图像横向可拉伸的部分
左边线:图像纵向可拉伸的部分
右边线:图像纵向可填充内容(文字或图片)区域
下边线:图像横向可填充内容(文字或图片)区域
在这里插入图片描述

如何制作

使用Android自带的draw9patch工具,位于java的jdk、android的sdk中tools目录下的draw9patch.bat。

源图片要求:

  • 必须是标准png格式
  • 图像的四角必须为纯透明
  • “黑边”一定非黑即纯透明,黑=纯黑(#FF000000),透明=纯透明( #00000000 )。若混入任何其他色值,都会导致图像无法正常显示
  • 文件名必须以“.9.png”结尾,不然会编译失败
  • 必须保存在“res/drawable/”目录之下。

工具下载
若找不到工具,可点击链接进行下载,可能审核还没通过
https://download.csdn.net/download/c529283955/12137325

工具使用:
打开draw9patch.bat,文件->打开9-patch…或使用快捷键Ctrl+O
在这里插入图片描述

打开一张符合要求的png图片,左边是操作区域,右边是各种拉伸之后的预览视图
在这里插入图片描述

使用鼠标左键单击像素点绘制边线,也可按住鼠标左键绘制。若绘制错误,可使用Shift+鼠标左键进行擦除
我这里绘制完上、左边线之后,图片就没有模糊了。
在这里插入图片描述

我们将 显示内容区域 选中,观察预览视图绘制下、右边线,紫色的区域即为内容显示的区域
在这里插入图片描述

保存即可,切记:保存时不要更改.9.png的文件名后缀!
在这里插入图片描述

至此,点九图片制作完成。添加进AndroidStudio中即可使用,但是点九图必须保存在“res/drawable/”目录之下,可能会保存在res\drawable-v24,这样会导致虚拟机调试app时出现异常android.view.InflateException: Binary XML file line #0: Error inflating class。
具体可看文章:https://blog.csdn.net/c529283955/article/details/104171951

总结

9patch图的制作十分简单,只要上手操作,一切都明白了

部分资料引用自:http://www.tuyiyi.com/v/55429.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/c529283955/article/details/104186520

智能推荐

【4】机器人手眼标定:J4关节移动相机标定算法_可动眼标定-程序员宅基地

文章浏览阅读904次。分享一个可任意移动,任意旋转的J4关节移动相机标定算法。只需标定一次,相机就可以在任意位置且相机可以带旋转的进行拍照。简单方便。—Edited By Hugo部分代码如下截图:..._可动眼标定

HDU 1114_while(t--) { for(i = 0; i < 10001; i++); }-程序员宅基地

文章浏览阅读332次。背包问题_while(t--) { for(i = 0; i < 10001; i++); }

CentOS MySQL5.5编译安装_centos mysql5.5 编译安装-程序员宅基地

文章浏览阅读543次。准备工作:CentOS系统,MySQL安装包(也可在系统在线下载)实验环境:腾讯云centos7.2 X64 , mysql-5.5.54描述:源码下载目录/src/;安装目录/usr/local/mysql/;目录可根据自己及的需求自定义一、远程连接到Linux服务器,二、创建mysql用户及所属mysql组不允许登录,在线下载mysql源码包,并解压,创建mysql用户及组不允许登录,可以使用..._centos mysql5.5 编译安装

很多人觉得FPGA难学,因为他们没总结出数电的尽头是模电!-程序员宅基地

文章浏览阅读6.1k次,点赞33次,收藏152次。问:本人零基础,想学FPGA,求有经验的人说说,我应该从哪入手,应该看什么教程,应该用什么学习板和开发板,看什么书等,希望有经验的好心人能够给我一些引导。如果想速成,那就..._密码学和图像处理哪个难

HDU 5046 Airport (DLX可重复覆盖+二分)_给定n个城市,选择k个城市-程序员宅基地

文章浏览阅读338次。题意:在N个城市选出K个城市,建飞机场(1 ≤ N ≤ 60,1 ≤ K ≤ N),N个城市给出坐标,选择这K个机场,使得从城市到距离自己最近的机场的 最大的距离 最小。输出这个最小值。思路:我居然想歪,歪到想到了模式识别的K均值算法,简直瞎搞2333333.(虽说和DLX一样都是暴力)DLX可重复覆盖+二分距离制关系表即可代码:kuangbin模板,注意爆_给定n个城市,选择k个城市

亚马逊海外购德国馆上线了,这次什么值得买?-程序员宅基地

文章浏览阅读1.2w次。昨天下午“亚马逊海外购德国商店正式上线”的消息一出,网友不淡定了,在亚马逊微博话题#真德来了#底下,刷出了三千多条评论,九千多万阅读量(截至发稿)。有网友问,德系车能买么;有网友说,之前去德国旅游总要背几把刀回来,那质量杠杠的,这次应该可以直接上亚马逊海外购买德国刀了吧;还有网友吐槽,在国内真见不着功能键那么多的热水壶......没错,继美、日、英站点之后,亚马逊海外购上线了德国站_亚马逊海外购买什么意思

随便推点

C++解析XML文件(一、 CMarkUp的使用)_c++ cmarkup-程序员宅基地

文章浏览阅读1.3k次。一、前言XML文件经常会被当做配置文件来使用,所以如何解析XML文件,也是一个必备skill。本文介绍如何用CMarkUp来解析XML文件,CMarkUp是一个不需要编译成动态库可以直接用的类。二、函数介绍2.1 bool CMarkup::Load( MCD_CSTR_FILENAME szFileName ) 加载xml文件,szFileName为文件名2.2 bool CMarkup::FindElem( MCD_CSTR szName ) 查找名为szName的元素或者节点2.3 _c++ cmarkup

Kafka分区、副本机制(二)_kafka生产者分区写入策略-程序员宅基地

文章浏览阅读141次。2.Kafka 高级2.1. 分区和副本机制2.1.1 分区写入策略生产者可以写入消息到同批次中,Kafka将会根据不同的策略分配到不同的分区中。分区策略主要3种:轮询分区策略这是一种默认的策略,也是采用最多的策略。它可以最大限度保证所有的消息平均分配到一个分区中。当生产者生产消息时,将key设置为 null, 则认为使用轮询算法均匀地分配分区。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yKkRTPXS-1604475558866)(_kafka生产者分区写入策略

强化学习笔记 experience replay 经验回放_经验回放数组存满后为什么要删除旧的数据-程序员宅基地

文章浏览阅读4.6k次,点赞10次,收藏29次。1 回顾 :DQNDQN 笔记 State-action Value Function(Q-function)_UQI-LIUWJ的博客-程序员宅基地DQN是希望通过神经网络来学习Q(s,a)的结果,我们输入一个人状态s,通过DQN可以得到各个action对应的Q(s,a)通常用TD来求解DQN其中rt是实际进行交互得到的真实奖励,Q(s,a),是预测得到的价值函数(注:Q是fixed target network,所以qt和yt会稍有不同)在之前我们所说..._经验回放数组存满后为什么要删除旧的数据

算术的非标准模型(修改稿)_非标准算术模型-程序员宅基地

文章浏览阅读2.2k次。算术的非标准模型包括无穷大自然数,是非标准分析的先驱。鲁宾逊无穷小微积分(超实数)就是传统微积分的非标准模型。深入学习、理解算术的非标准模型对于正确理解无穷小微积分是十分有益的。建议读者仔细研读本文附件。,袁萌 陈启清 12月10日附件:算术的非标准模型Non-Standard Models of ArithmeticAsher M. Kach1 May 20..._非标准算术模型

2020.3.19 XCTF的基础题_hackbar xxf头-程序员宅基地

文章浏览阅读382次。题目描述:(学会使用hackbar)1.打开hackbar,用get方式传递a=1,如图所示2.勾选hackbar上的Enable post data,用post方式传递b=2,可获得flag,如图所示原理:X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项HTTP Referer..._hackbar xxf头

如何在Python中使用静态变量在计数_python3 静态计数-程序员宅基地

文章浏览阅读2.3k次。如何在Python中使用静态变量在计数转载:https://blog.csdn.net/sunshine_in_moon/article/details/51145843今天,在用Python写一个统计一个文件下有多少文件的小标本时,遇到了一个很棘手的问题。如何在Python中使用静态变量来计数。然后,就在网上一通查找,找的方法都是利用类的方法来实现静态变量。说实话没有看太懂,另外我想如果用类成员..._python3 静态计数