Android 图片自动拉伸不变形,点九

news2025/5/18 6:54:43

要让 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 内边距)。

尽量导出为 不带透明边的纯图(除非故意为透明效果设计)。

代码使用:

     <LinearLayout
                android:layout_width="331dp"
                android:layout_height="wrap_content"
                android:background="@mipmap/ic_9_group_1912062586_1"
                android:orientation="vertical"
                android:layout_marginTop="19dp">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="恋爱建议"
                    android:layout_marginTop="10dp"
                    android:layout_marginBottom="10dp"/>

                <TextView
                    android: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也会被拉伸。四个角不变,中间是可拉伸区域

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2378320.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python绘制南丁格尔玫瑰图:从入门到实战

Python绘制南丁格尔玫瑰图&#xff1a;从入门到实战 引言 南丁格尔玫瑰图&#xff08;Nightingale Rose Chart&#xff09;&#xff0c;也被称为极区图&#xff08;Polar Area Chart&#xff09;&#xff0c;是一种独特的数据可视化方式。这种图表由弗洛伦斯南丁格尔&#xff…

炼丹学习笔记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全连接限制的两种方案

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

QT设置MySQL驱动

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

String的一些固定程序函数

append reverse length toString

3.2/Q2,Charls最新文章解读

文章题目&#xff1a;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&#xff1a;10.1186/s13690-025-01577-5 中文标题&#xff1a;中老年人…

大麦(Hordeum vulgare)中 BAHD 超家族酰基转移酶-文献精读129

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

docker迅雷自定义端口号、登录用户名密码

在NAS上部署迅雷&#xff0c;确实会带来很大的方便。但是目前很多教程都是讲怎么部署docker迅雷&#xff0c;鲜有将自定义配置的方法。这里讲一下怎么部署&#xff0c;并重点讲一下支持的自定义参数。 一、部署docker 在其他教程中&#xff0c;都是介绍的如下命令&#xff0c…

中国30米年度土地覆盖数据集及其动态变化(1985-2022年)

中文名称 中国30米年度土地覆盖数据集及其动态变化(1985-2022年) 英文名称&#xff1a;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 数据共享方式&#xff1a…

3D个人简历网站 5.天空、鸟、飞机

1.显示天空 models下新建文件Sky.jsx Sky.jsx // 从 React 库中导入 useRef 钩子&#xff0c;用于创建可变的 ref 对象 import { useRef } from "react"; // 从 react-three/drei 库中导入 useGLTF 钩子&#xff0c;用于加载 GLTF 格式的 3D 模型 import { useGLT…

STM32IIC实战-OLED模板

STM32IIC实战-OLED模板 一&#xff0c;SSD1306 控制芯片1&#xff0c; 主要特性2&#xff0c;I2C 通信协议3&#xff0c; 显示原理4&#xff0c; 控制流程5&#xff0c; 开发思路 二&#xff0c;HAL I2C API 解析I2C 相关 API1&#xff0c;2&#xff0c;3&#xff0c;4&#xf…

c#车检车构客户管理系统软件车辆年审短信提醒软件

# CMS_VehicleInspection 车检车构客户管理系统软件车辆年审短信提醒软件 # 开发背景 软件是给泸州某公司开发的车检车构客户管理系统软件。用于在车检年审到期前一个月给客户发送车检短信提醒 # 功能描述 主要功能&#xff1a;车辆年审前一个月给客户发年审短信提醒&#xf…

通俗版解释CPU、核心、进程、线程、协程的定义及关系

通俗版解释&#xff08;比喻法&#xff09; 1. CPU 和核心 CPU 一个工厂&#xff08;负责干活的总部&#xff09;。核心 工厂里的车间&#xff08;比如工厂有4个车间&#xff0c;就能同时处理4个任务&#xff09;。 2. 进程 进程 一家独立运营的公司&#xff08;比如一家…

大语言模型 11 - 从0开始训练GPT 0.25B参数量 MiniMind2 准备数据与训练模型 DPO直接偏好优化

写在前面 GPT&#xff08;Generative Pre-trained Transformer&#xff09;是目前最广泛应用的大语言模型架构之一&#xff0c;其强大的自然语言理解与生成能力背后&#xff0c;是一个庞大而精细的训练流程。本文将从宏观到微观&#xff0c;系统讲解GPT的训练过程&#xff0c;…

USRP 射频信号 采集 回放 系统

USRP 射频信号采集回放系统 也可以叫做&#xff1a; 利用宽带RF录制和回放系统实现6G技术研究超宽带射频信号采集回放系统使用NI USRP平台实现射频信号录制和回放操作演示USRP也能实现多通道宽带信号流盘回放了&#xff01; 对于最简单的实现方法就是使用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…

【C++详解】string各种接口如何使用保姆级攻略

文章目录 一、string介绍二、string使用构造函数析构函数赋值运算符重载string的遍历修改方法1、下标[]2、迭代器3、范围for 迭代器使用详解const迭代器反向迭代器&#xff08;reverse) Capacity(容量相关)size/lengthmax_sizecapacityclear/emptyshrink_to_fit(缩容)reserve(扩…

2025深圳杯D题法医物证多人身份鉴定问题四万字思路

Word版论文思路和千行Python代码下载&#xff1a;https://www.jdmm.cc/file/2712074/ 引言 法医遗传学中的混合生物样本分析&#xff0c;特别是短串联重复序列&#xff08;Short Tandem Repeat, STR&#xff09;分型结果的解读&#xff0c;是现代刑事侦查和身份鉴定领域的核心…

【时时三省】(C语言基础)字符数组应用举例2

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 例题&#xff1a; 有3个字符串&#xff0c;要求找出其中“最大”者。 解题思路&#xff1a; 可以设一个二维的字符数组str&#xff0c;大小为320&#xff0c;即有3行20列&#xff08;每一…

Mysql触发器(附案例)

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