热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

Android------使用9Patch图片作为按钮背景

从图片中来看,当按钮内容不够或太大时,Android会自动缩放整张图片,以保证背景图片能覆盖整个按钮。但这种缩放整张图片的效果可能并不是很好。有时候我们需要的情

               从图片中来看,当按钮内容不够或太大时,Android会自动缩放整张图片,以保证背景图片能覆盖整个按钮。但这种缩放整张图片的效果可能并不是很好。有时候我们需要的情况是只想缩放图片中某个部分,这样才能保证按钮的视觉效果。

        为了实现只缩放图片中某个部分的效果,我们需要借助9Patch图片来实现。9Patch图片是一种特殊的PNG图片,这种图片以.9.png结尾,它在原始的图片四周各添加宽度为1像素的线条,这4条线决定了图片的缩放规则、内容显示规则。

        通过9Patch编辑时,左侧和上侧的线共同决定了图片的缩放区域,右侧和下侧的线共同决定了显示的区域,我们通过实例来说明。(9Patch为Android SDK自带的工具,该工具位于Android SDK安装路径下的tools目录下的draw9patch.bat文件)


        启动draw9patch.bat之后,通过该工具主菜单上的“File-Open 9-Pacth”菜单项打开一张PNG图片,这里我们以ic-launcher图片为例


         首先,上一张未编辑状态的图片,我们可以发现图片周围的灰色区域,那就是我们用来产生上面所说的1像素线条的区域。



        我们先来定义图片需要缩放的区域,一般来说图片的内容我们是不想缩放的,想缩放的是图片的透明或者背景部分,上面说过左侧和上侧的线条共同决定了图片的缩放区域,我们通过单击左侧和上侧的灰色区域不放,然后左右或上下移动鼠标,来产生线条,如下图所示


 左侧和上侧黑色线条对应的部分就是我们想要缩放的区域


同理,我们通过相同的方发来定义图片需要显示但不缩放的区域,如下图所示


右侧和下侧黑色线条的对应部分就是我们需要显示但不缩放的区域


最后我们将这张图片做为按钮背景,测试一下效果,效果如下

      

这是使用9Patch编辑过后的按钮背景图片        这是未使用9Patch编辑过的按钮背景图片





推荐阅读
  • 本文将详细介绍如何使用ViewPager实现多页面滑动切换,并探讨如何去掉其默认的左右切换动画效果。ViewPager是Android开发中常用的组件之一,用于实现屏幕间的内容切换。 ... [详细]
  • Android 手机安全应用首屏布局设计
    本文详细介绍了如何构建一个功能丰富的手机安全应用的首个导航界面布局。通过实例代码和效果展示,帮助开发者快速理解和实现相关功能。 ... [详细]
  • 本文介绍了Android中常见的动画类型及其应用场景,通过具体的代码示例展示了如何在Activity跳转时添加平滑过渡效果,提升用户体验。 ... [详细]
  • 一、数据更新操作DML语法中主要包括两个内容:查询与更新,更新主要包括:增加数据、修改数据、删除数据。其中这些操作是离不开查询的。1、增加数据语法:INSERTINTO表名称[(字 ... [详细]
  • 本文探讨了在安卓设备上的微信H5环境中,如何解决长按图片时无法保存或分享Base64编码图片及Blob形式图片的问题,并提供了有效的解决方案。 ... [详细]
  • 深入理解FastDFS
    FastDFS是一款高效、简洁的分布式文件系统,广泛应用于互联网应用中,用于处理大量用户上传的文件,如图片、视频等。本文探讨了FastDFS的设计理念及其如何通过独特的架构设计提高性能和可靠性。 ... [详细]
  • Flutter 高德地图插件使用指南
    本文档详细介绍了如何在Flutter项目中集成和使用高德地图插件,包括安装、配置及基本使用方法。 ... [详细]
  • Smali代码动态调试指南
    本文介绍了如何通过一系列具体步骤实现Smali代码的动态调试,包括环境搭建、工具安装及调试过程中的关键操作。 ... [详细]
  • 本文详细介绍如何在Android模拟器上安装TaintDroid的过程,包括解决源代码链接失效及服务器文件变动等问题,旨在帮助后续用户避免不必要的麻烦。 ... [详细]
  • 本文介绍了通过Gradle文件查询Android SDK Build-Tools版本的方法,并提供了相关截图以供参考。 ... [详细]
  • 本文介绍如何创建一个简单的Android桌面小部件,通过显示两个文本框来展示基本功能。提供代码下载链接及详细步骤。 ... [详细]
  • 框图|中将_DA14531 学习笔记经验总结
    框图|中将_DA14531 学习笔记经验总结 ... [详细]
  • 本文介绍如何利用Python中的Epoll机制构建一个高效的Web服务器,该服务器能够处理多个并发连接,并向每个连接的客户端返回预定义的响应文本。通过使用Epoll,服务器可以实现高性能的I/O多路复用。 ... [详细]
  • HTML中用于创建表单的标签是什么
    本文将详细介绍HTML中用于创建表单的标签及其基本用法,包括表单的主要特性和常用的属性设置。如果您正在学习HTML或需要了解如何在网页中添加表单,这将是一个很好的起点。 ... [详细]
  • 在日常的开发与学习中,经常会遇到想要深入了解或复制的优秀网站。手动逐个文件保存不仅耗时费力,还可能遗漏重要资源。本文将介绍两款强大的工具——Teleport Ultra和wget命令行工具,帮助开发者轻松抓取目标网站的全部内容。 ... [详细]
author-avatar
男人好好疼h爱你的女人吧
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有