手把手教你做蓝牙聊天应用(六)-界面优化

2023-11-24 05:40

本文主要是介绍手把手教你做蓝牙聊天应用(六)-界面优化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第6节 应用的美化与完善

现在,我们还可以为聊天应用加上多国语言的支持和关于界面,把使用到的颜色和尺寸定义到资源文件当中,这样一来,安豆的蓝牙聊天应用就算是比较完整的完成了。

这两部分在以前“计算器”章节中,已经介绍过了,大家就自己动手吧。

这一节,我们将重点介绍聊天文字的背景图片是如何制作的。

6.1 9Patch图片的原理

观察一下安卓系统中需要经常用到的图片,可以发现:

  1. 很多要使用透明效果的地方在转角处;
  2. 很多图片不同的地方只在靠近边缘的地方,内部区域几乎都是一样的;

为此安卓系统在png格式图片的基础上,发展出了9patch图片,让图片占用更少的空间。它的格式是xxx.9.png。聊天文字的背景我们就要使用9patch图片,它放在res\drawable目录当中。9patch图片和普通png图片相比,只是在四周多了条1个像素宽的黑色线条,这四条黑线相互交叉,正好把图片分成了9宫格的样子,所以叫做9patch。

6.1.1 左线条和上线条

左线条覆盖的区域(深黄色、蓝色、桃红色)可以被上下拉伸,上线条覆盖的区域(绿色、蓝色、黑色)可以被左右拉伸;左线条和上线的交叉区表示可以被上下左右方向拉伸(下图中蓝色的区域);

当9patch图片需要根据控件的大小缩放时,四个角上的区域(褐色、青色、黄色、紫色)不会被缩放,只有可以被拉伸的区域发生缩放,填满整个控件。

6.1.2 右线条和下线条,

右线条和下线条交叉的区域表示内容区域。例如按钮的文字区域。
显示区域就是:在被拉伸后、可以用来显示文字内容的区域。

需要注意的是左线条和上线条必须有,右线条和下线条可以没有。当右线条和下线条都没有的时候,左线条和上线条的交叉区不仅仅表示该区域可扩展,也表示该区域是文字显示区域。

6.2 9Patch图片的制作

Android SDK提供了9Patch图片的制作工具,它放在sdk目录\tools\这个位置,名字叫做draw9patch。通过这个工具可以在png图片等四条边添加上黑色线,将它变成真正的9.png图片。

不过这里,我们将使用Android Asset Studio提供的在线生成工具。因为它能一次生成对应多种像素密度的图片。

  1. 打开Android Asset Studio选择Simple nine-patch generator

  2. 选择要处理的图片,

  3. 设置允许缩放的区域,

  4. 设置可以用来显示文字的区域

  5. 预览效果,下载图片,

6.3 9Patch图片的使用

图片下载后,将压缩包解压,可以看到自动生成了对应不同像素密度的图片。将这些图片放到项目工程的res目录下即可,


/*******************************************************************/
* 版权声明
* 本教程只在CSDN和安豆网发布,其他网站出现本教程均属侵权。
/*******************************************************************/

第7节 后记

现在,我们还可以为聊天应用加上多国语言的支持和关于界面,把使用到的颜色和尺寸定义到资源文件当中,这样一来,安豆的蓝牙聊天应用就算是比较完整的完成了。

这两部分在以前“计算器”章节中,已经介绍过了,大家就自己动手吧。

经过这一章的实践,我们就接触到了初步的网络编程、多线程的配合。因为使用了蓝牙技术,也为将来进行与蓝牙相关的智能硬件开发打下了基础。

不过,也正如在开篇中我们提到的那样,这个应用留下了不少的遗憾,

  1. 没有让蓝牙连接作为Service在后台运行,收到消息后能用通知提醒用户;
  2. 不能记录下上次启动应用时聊天的内容;
  3. 没有查看彼此个人信息的功能;

在应用的使用过程中,还会发现很多诸如上面那样觉得值得添加的功能和改进的地方。所以这个版本的蓝牙聊天应用还只是一个粗糙的版本,我们应该在后面,添加上那些实用的功能。


/*******************************************************************/
* 版权声明
* 本教程只在CSDN和安豆网发布,其他网站出现本教程均属侵权。

*另外,我们还推出了Arduino智能硬件相关的教程,您可以在我们的网店跟我学Arduino编程中购买相关硬件。同时也感谢大家对我们这些码农的支持。

*最后再次感谢各位读者对安豆的支持,谢谢:)
/*******************************************************************/

这篇关于手把手教你做蓝牙聊天应用(六)-界面优化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/421332

相关文章

在Ubuntu上部署SpringBoot应用的操作步骤

《在Ubuntu上部署SpringBoot应用的操作步骤》随着云计算和容器化技术的普及,Linux服务器已成为部署Web应用程序的主流平台之一,Java作为一种跨平台的编程语言,具有广泛的应用场景,本... 目录一、部署准备二、安装 Java 环境1. 安装 JDK2. 验证 Java 安装三、安装 mys

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

手把手教你idea中创建一个javaweb(webapp)项目详细图文教程

《手把手教你idea中创建一个javaweb(webapp)项目详细图文教程》:本文主要介绍如何使用IntelliJIDEA创建一个Maven项目,并配置Tomcat服务器进行运行,过程包括创建... 1.启动idea2.创建项目模板点击项目-新建项目-选择maven,显示如下页面输入项目名称,选择

java中VO PO DTO POJO BO DO对象的应用场景及使用方式

《java中VOPODTOPOJOBODO对象的应用场景及使用方式》文章介绍了Java开发中常用的几种对象类型及其应用场景,包括VO、PO、DTO、POJO、BO和DO等,并通过示例说明了它... 目录Java中VO PO DTO POJO BO DO对象的应用VO (View Object) - 视图对象

Go信号处理如何优雅地关闭你的应用

《Go信号处理如何优雅地关闭你的应用》Go中的优雅关闭机制使得在应用程序接收到终止信号时,能够进行平滑的资源清理,通过使用context来管理goroutine的生命周期,结合signal... 目录1. 什么是信号处理?2. 如何优雅地关闭 Go 应用?3. 代码实现3.1 基本的信号捕获和优雅关闭3.2

正则表达式高级应用与性能优化记录

《正则表达式高级应用与性能优化记录》本文介绍了正则表达式的高级应用和性能优化技巧,包括文本拆分、合并、XML/HTML解析、数据分析、以及性能优化方法,通过这些技巧,可以更高效地利用正则表达式进行复杂... 目录第6章:正则表达式的高级应用6.1 模式匹配与文本处理6.1.1 文本拆分6.1.2 文本合并6

python中的与时间相关的模块应用场景分析

《python中的与时间相关的模块应用场景分析》本文介绍了Python中与时间相关的几个重要模块:`time`、`datetime`、`calendar`、`timeit`、`pytz`和`dateu... 目录1. time 模块2. datetime 模块3. calendar 模块4. timeit

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取