Android 图片自动拉伸不变形,点九
要让 UI 设计师 制作 Android 用的点九图(.9.png),可以按照以下流程和要求进行:
🧩 一、什么是点九图?
点九图(NinePatch)是一种特殊的 PNG 图像,用于在 Android 中根据内容大小自动拉伸背景或边框。它能定义哪些区域可以拉伸、内容如何填充。
🎨 二、UI 制作流程(推荐使用 Photoshop + Android Studio 或专用工具)
✅ 方法 1:用 Android Studio 自带工具制作 .9.png
准备好一张普通的 PNG 图片(无圆角/拉伸定义)。
在 Android Studio 中:
右键点击 res/drawable → New → Drawable Resource File。
将 PNG 命名为 xxx.9.png,注意一定是 .9.png 后缀。
Android Studio 会自动打开 Draw 9-patch 工具界面。
用画笔工具在左、上边缘画黑线来定义“可拉伸区域”。
在右、下边缘画黑线来定义“内容显示区域”。
可以实时预览不同大小下的拉伸效果。
编辑完成后,直接保存。
🧠 拉伸规则说明:
左边黑线:定义水平方向可拉伸区域。
上边黑线:定义垂直方向可拉伸区域。
右边黑线:定义内容显示的水平区域。
下边黑线:定义内容显示的垂直区域。
✅ 方法 2:使用专用工具(推荐给 UI 设计师)
Draw9Patch在线工具(适合设计师)
上传你的 PNG。
用工具画出拉伸区域与内容区域。
下载 .9.png 文件。
交给开发者放入 res/drawable/ 目录即可使用。
📁 三、保存要求
文件名必须以 .9.png 结尾。
图片四边需留出 1 像素的边框画黑线。
内容不能贴边(至少留出 1px 内边距)。
尽量导出为 不带透明边的纯图(除非故意为透明效果设计)。
代码使用:
<LinearLayoutandroid:layout_width="331dp"android:layout_height="wrap_content"android:background="@mipmap/ic_9_group_1912062586_1"android:orientation="vertical"android:layout_marginTop="19dp"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="恋爱建议"android:layout_marginTop="10dp"android:layout_marginBottom="10dp"/><TextViewandroid:id="@+id/tv_love_sug"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方发撒啊啥地方是安分点爱上对方"android:textColor="#FFF"android:textSize="16sp" /></LinearLayout>
原理:
🧩 NinePatch 的“九宫格”原理(看图能更理解)
一张 NinePatch 图片(.9.png)会被系统划分为一个 3x3 的九宫格:
-----------------------------
| TL | T | TR |
|----|-----|----|
| L | C | R |
|----|-----|----|
| BL | B | BR |
区域 | 说明 |
---|---|
TL / TR / BL / BR(四角) | 不会被拉伸,保持原样,通常用来保留圆角、边框角等 |
T / B(上下边) | 只能水平拉伸 |
L / R(左右边) | 只能垂直拉伸 |
C(中心) | 可以随意拉伸(水平+垂直),最常用来拉伸背景或填充区域 |
🖋 如何标记拉伸区域(左/上边框)
你在工具里点左边或上边时,其实就是告诉系统:
左边的黑线:哪一段高度可垂直拉伸
上边的黑线:哪一段宽度可水平拉伸
这些黑线定义了“中心 C 区域”——也就是那个被允许拉伸的核心区域。
🧰 示例说明
假设你上传了一个带圆角的气泡图:
你需要这样标记:
上边中间画一段黑线 → 代表水平方向可拉伸(避开左上/右上角)
左边中间画一段黑线 → 代表垂直方向可拉伸(避开左上/左下角)
右边画一段黑线 → 定义文本区域右边界
下边画一段黑线 → 定义文本区域下边界
这样图片就只会在中间拉伸,圆角不会被破坏,文字也不会靠得太边。
🎯 总结一句话:
“你看到的九宫格,是系统理解图片如何拉伸的视觉辅助框,我们需要通过在图片边上画黑线,告诉系统‘哪里可以伸缩、哪里不能动’。”
如果一个图片,被拉很长很长,那L和B就会被垂直拉伸了。如果原图宽度50,屏幕宽度200,那宽度被拉的很长的话,T和B也会被拉伸。四个角不变,中间是可拉伸区域
相关文章:
Android 图片自动拉伸不变形,点九
要让 UI 设计师 制作 Android 用的点九图(.9.png),可以按照以下流程和要求进行: 🧩 一、什么是点九图? 点九图(NinePatch)是一种特殊的 PNG 图像,用于在 Android 中根据…...
电子电路:什么是色环电阻器,怎么识别和计算阻值?
识别和计算色环电阻的阻值需要掌握颜色编码规则和基本步骤。以下是具体方法及窍门: 一、色环电阻的基本规则 色环数量: 4环电阻:前2环为有效数字,第3环为倍乘(10ⁿ),第4环为误差。5环电阻:前3环为有效数字,第4环为倍乘,第5环为误差。6环电阻(较少见):前3环为有效数…...
LeetCode Hot100刷题——轮转数组
56. 轮转数组 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步: …...

Python绘制南丁格尔玫瑰图:从入门到实战
Python绘制南丁格尔玫瑰图:从入门到实战 引言 南丁格尔玫瑰图(Nightingale Rose Chart),也被称为极区图(Polar Area Chart),是一种独特的数据可视化方式。这种图表由弗洛伦斯南丁格尔ÿ…...
概率与期望总结
一、概率 概念:无需多言;几个公式( Ω \Omega Ω 表示整个样本空间): 以下公式均有 A , B ⊆ Ω , 且 P ( A ) , P ( B ) > 0. P ( A ∪ B ) P ( A ) P ( B ) − P ( A ∩ B ) , P ( A ∣ B ) P ( A B ) P ( B…...

炼丹学习笔记3---ubuntu2004部署运行openpcdet记录
前言 环境 cuda 11.3 python 3.8 ubuntu2004 一、cuda环境检测 ylhy:~/code_ws/OpenPCDet/tools$ nvcc -V nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2021 NVIDIA Corporation Built on Sun_Mar_21_19:15:46_PDT_2021 Cuda compilation tools, release 11.3…...

深入解析BGP路由反射器与联邦:突破IBGP全连接限制的两种方案
一、引言:大型BGP网络的挑战 在大型BGP网络架构中,传统的IBGP全连接架构会带来严重的扩展性问题。当网络中存在N台路由器时,需要维护N*(N-1)/2个IBGP连接,这对设备资源和运维管理都是巨大挑战。本文将深入解析两种主流解决方案&a…...

QT设置MySQL驱动
QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7 第一步:下载MySQL https://dev.mysql.com/downloads/mysql/ 解压缩下载的安装包,其目录结构如下所示: 第二…...

String的一些固定程序函数
append reverse length toString...

3.2/Q2,Charls最新文章解读
文章题目:Transition of nighttime sleep duration and sleep quality with incident cardiovascular disease among middle-aged and older adults: results from a national cohort study DOI:10.1186/s13690-025-01577-5 中文标题:中老年人…...

大麦(Hordeum vulgare)中 BAHD 超家族酰基转移酶-文献精读129
Systematic identification and expression profiles of the BAHD superfamily acyltransferases in barley (Hordeum vulgare) 系统鉴定与大麦(Hordeum vulgare)中 BAHD 超家族酰基转移酶的表达谱分析 摘要 BAHD 超家族酰基转移酶在植物中催化和调控次…...

docker迅雷自定义端口号、登录用户名密码
在NAS上部署迅雷,确实会带来很大的方便。但是目前很多教程都是讲怎么部署docker迅雷,鲜有将自定义配置的方法。这里讲一下怎么部署,并重点讲一下支持的自定义参数。 一、部署docker 在其他教程中,都是介绍的如下命令,…...

中国30米年度土地覆盖数据集及其动态变化(1985-2022年)
中文名称 中国30米年度土地覆盖数据集及其动态变化(1985-2022年) 英文名称:The 30 m annual land cover datasets and its dynamics in China from 1985 to 2022 CSTR:11738.11.NCDC.ZENODO.DB3943.2023 DOI 10.5281/zenodo.8176941 数据共享方式:…...

3D个人简历网站 5.天空、鸟、飞机
1.显示天空 models下新建文件Sky.jsx Sky.jsx // 从 React 库中导入 useRef 钩子,用于创建可变的 ref 对象 import { useRef } from "react"; // 从 react-three/drei 库中导入 useGLTF 钩子,用于加载 GLTF 格式的 3D 模型 import { useGLT…...

STM32IIC实战-OLED模板
STM32IIC实战-OLED模板 一,SSD1306 控制芯片1, 主要特性2,I2C 通信协议3, 显示原理4, 控制流程5, 开发思路 二,HAL I2C API 解析I2C 相关 API1,2,3,4…...
Sparse4D运行笔记
Sparse4D有三个版本,其中V1和V2版本的官方文档中环境依赖写得比较模糊且依赖库有版本冲突。 1. Sparse4D V1 创建环境 conda create sparse4dv1 python3.8 激活环境 conda activate sparse4dv1 安装torch, torchvision, torchaudio pip install torch1.13.0c…...
Redis设计与实现——分布式Redis
Redis Sentinel(哨兵) Sentinel 的工作机制 故障检测(Failure Detection) 主观下线(Subjective Down):单个 Sentinel 实例检测到主节点在30 秒内无响应,标记其为 SDOWN。 客观下线…...
多指标组合策略
该策略(MultiConditionStrategy)是一种基于多种技术指标和市场条件的交易策略。它通过综合考虑多个条件来生成交易信号,从而决定买入或卖出的时机。 以下是对该策略的详细分析: 交易逻辑思路 1. 条件1:星期几和价格变化判断 - 该条件根据当前日期是星期几以及价格的变化…...

c#车检车构客户管理系统软件车辆年审短信提醒软件
# CMS_VehicleInspection 车检车构客户管理系统软件车辆年审短信提醒软件 # 开发背景 软件是给泸州某公司开发的车检车构客户管理系统软件。用于在车检年审到期前一个月给客户发送车检短信提醒 # 功能描述 主要功能:车辆年审前一个月给客户发年审短信提醒…...
Java爬虫能处理京东商品数据吗?
Java爬虫完全可以处理京东商品数据。通过Java爬虫技术,可以高效地获取京东商品的详细信息,包括商品名称、价格、图片、描述等。这些信息对于市场分析、选品上架、库存管理和价格策略制定等方面具有重要价值。以下是一个完整的Java爬虫示例,展…...

通俗版解释CPU、核心、进程、线程、协程的定义及关系
通俗版解释(比喻法) 1. CPU 和核心 CPU 一个工厂(负责干活的总部)。核心 工厂里的车间(比如工厂有4个车间,就能同时处理4个任务)。 2. 进程 进程 一家独立运营的公司(比如一家…...

大语言模型 11 - 从0开始训练GPT 0.25B参数量 MiniMind2 准备数据与训练模型 DPO直接偏好优化
写在前面 GPT(Generative Pre-trained Transformer)是目前最广泛应用的大语言模型架构之一,其强大的自然语言理解与生成能力背后,是一个庞大而精细的训练流程。本文将从宏观到微观,系统讲解GPT的训练过程,…...

USRP 射频信号 采集 回放 系统
USRP 射频信号采集回放系统 也可以叫做: 利用宽带RF录制和回放系统实现6G技术研究超宽带射频信号采集回放系统使用NI USRP平台实现射频信号录制和回放操作演示USRP也能实现多通道宽带信号流盘回放了! 对于最简单的实现方法就是使用LabVIEW进行实现 采…...

【skywalking】index“:“skywalking_metrics-all“},“status“:404}
skywalking 启动报错 java.lang.RuntimeException: {"error":{"root_cause":[{"type":"index_not_found_exception","reason":"no such index [skywalking_metrics-all]","resource.t ype":"inde…...
handsome主题美化及优化:10.1.0最新版 - 1
文章目录 前言右侧导航栏主题标题居中页面两侧框架留白间距handsome 原生入站提示评论一键赞、踩、打卡时光机头像圆形logo 扫光赞赏按钮跳动鼠标点击特效复制版权提示彩色标签云及右栏数字自定义右键响应时间和访客总数全站字数统计版权提示时间流逝添加心知天气总结 前言 ha…...
(9)python开发经验
文章目录 1 os.path.join()拼接路径2 条件变量3 添加临时环境变量 更多精彩内容👉内容导航 👈👉Qt开发 👈👉python开发 👈 1 os.path.join()拼接路径 os.path.join() 是 Python 中处理文件路径拼接的核心函…...

【C++详解】string各种接口如何使用保姆级攻略
文章目录 一、string介绍二、string使用构造函数析构函数赋值运算符重载string的遍历修改方法1、下标[]2、迭代器3、范围for 迭代器使用详解const迭代器反向迭代器(reverse) Capacity(容量相关)size/lengthmax_sizecapacityclear/emptyshrink_to_fit(缩容)reserve(扩…...

2025深圳杯D题法医物证多人身份鉴定问题四万字思路
Word版论文思路和千行Python代码下载:https://www.jdmm.cc/file/2712074/ 引言 法医遗传学中的混合生物样本分析,特别是短串联重复序列(Short Tandem Repeat, STR)分型结果的解读,是现代刑事侦查和身份鉴定领域的核心…...

【时时三省】(C语言基础)字符数组应用举例2
山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 例题: 有3个字符串,要求找出其中“最大”者。 解题思路: 可以设一个二维的字符数组str,大小为320,即有3行20列(每一…...

Mysql触发器(附案例)
文章目录 触发器简介1、insert类型2、update类型3、delete类型总结 触发器简介 触发器是与表有关的数据库对象,指定在 insert/update/delete 之前或之后,触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性…...