Android自适应拉伸图片

article/2025/9/14 19:10:11
这篇文章是android开发人员的必备知识,内容摘选自网络,友我为大家整理和总结,不求完美,但是有用。

视频教程地址:http://player.youku.com/player.php/sid/XMTMwODc3Njc2/v.swf

1.背景自适应且不失真问题的存在
      制作自适应背景图片是UI开发的一个广泛问题,也是界面设计师渴望解决的问题,我相信我们彼此都深有体会。
      比如,列表的背景图一定,但是列表的高度随着列表数据项会发生变化;标题栏的背景,无论横屏还是竖屏,高分辨率还是低分辨率,都能自动填充满,而且不失真等等背景问题。
      根据以往的经验,我们一般采用先切图后拼凑的做法,这种做法本来我想在这里和大家介绍一下,其实有的时候还是很有用的,但是说起来会比较麻烦,就不说这个非重点了。
     Android针对这种情况,专门制作了一种.9.PNG格式来解决这个问题。

2.9.PNG格式。
      *.9.PNG就标准的PNG格式,只是在最外面一圈额外增加1px的边框,这个1px的边框就是用来定义图片中可扩展的和静态不变的区域。特别说明,left(左)和top(上)边框中交叉部分是可拉伸部分,未选中部分是静态区域部分。right和bottom(下和右)边框中交叉部分则是内容部分。

如上图《也就是说,在手机里。无论上面那张图怎么放大,四周的圆角都是不会被放大的!只有left(左)和top(上)边框内才会伸缩!



在Android中以9.PNG格式的图片未背景,则能够自定义拉伸而不失真,比如系统的Button就是一个典型的例子。
     其实呢,无论是left和top,还是right和bottom都是把图片分成9块 (边角四块是不能缩放的,其他的四块则是允许缩放的),所以叫做9.PNG。


3. 使用Draw9Patch.jar制作9.PNG图片之定义拉伸区域。

      前面已经了解到9.PNG格式的工作方式,下面我们使用工具Draw9Patch(ADK自带)来制作.9.PNG图片。
      
第一步:准备要拉伸的图片。






默认的拉伸是整体拉伸,其实边框部分我们并不想拉伸,好,我们自己来定义拉伸区域,如下图








然后点击File,导出为content.9.png。



看看效果!可以看出,边框非常的清晰。下右边是未使用.9.PNG的对比图,而且也不是我们要的效果:






到这里为止,我们已经基本会制作.9.PNG图片了。为了知识体系的全面性和深入性,我们继续。


4. 使用Draw9Patch.jar制作9.PNG图片之定义内容区域。
      是不是觉得上面那张图文字和边距挨的太近,好,我们使用right和bottom边的线来定义内容区域,来达到增大内边距的目的。





我们定义了一个很小的内容区域,其他的地方则自动充当边框,从而使内边距显的很大,如下图,



呵呵!ok了!

5.制作.9.PNG的高级技巧。
       对于初学Draw9Patch的人来说,这可以算是高级技巧,那就是: 拉伸区域,可以不是连续的,可以不止一块,而且是和自定义的边框线的长度成正比。
       直接上图说明:



附件2011-8-29 14:14
  3.png  (46.78 KB) 
  

http://chatgpt.dhexx.cn/article/5iTIwDQd.shtml

相关文章

android 图片自动拉伸,解决关于ImageView自适应的问题(拉伸变形,图片模糊)

今天接手一个项目发现有个地方的图片显示非常小,而且还不够清晰,也没办法自适应屏幕的显示,非常的影响美观,于是 就像这优化一下。 先看看优化前的效果和优化后的效果。 修复后 修复前 布局文件修复前: 修复前 布局文件…

html背景图片纵向拉伸,html网页背景图片拉伸 关于html背景图片往下拉伸问题

html 如何让背景图片充满全图,就是拉伸 html语言背景图片拉伸代码:background-size:cover,可以使图片拉伸铺满背景。 拓展资料 背景 (background) 属性定义元素的背景效果 元素的背景区包括前景之下直到边框边界的所有空间。因此,…

android 拉伸图片

Android拉伸图片用的是9.png格式的图片,这种图片可以指定图片的那一部分拉伸,那一部分显示内容,美工给的小图片也能有很好的显示效果。 原背景图片 可以看到原背景图片很小,即使在再长的文字,背景图片的圆角也不会拉伸…

html js 修改img 图片不拉伸,防止图片拉伸的自适应处理

在web开发中,作为前端经常会遇到处理图片拉伸问题的情况。 例如banner、图文列表、头像等所有和用户或客户自主操作图片上传的地方, 而一旦牵扯图片,就会涉及到图片拉伸的问题, 当然,在图片上传时做手动裁切,让用户或客户清晰的感知到图片的有效内容才是最优的解决方案,…

html平铺 拉伸 图片,[CSS]背景图片中平铺与拉伸

在某业务场景下,需要支持背景图的平铺和拉伸,那么在CSS中的这俩属性表现有何区分关系到是否符合业务表现,因此有必要清晰知道其差别。 原本以为只有自己会遇到,没想到群里有小伙伴也问到了。 0x00 background-size 在CSS中有background-size属性,平铺与拉伸可以通过下面两…

html 如何完美的显示图片,不拉伸图片,完整显示等等。

效果图&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document<…

html插入背景图片如何拉伸,css怎样拉伸背景图片?

在css中可以使用background-size属性来拉伸背景图片。background-size属性规定背景图像的尺寸&#xff0c;此属性可以使用数值、百分比、cover等设置图片拉伸。 background-size属性规定背景图像的尺寸。 语法&#xff1a;background-size: length|percentage|cover|contain; 属…

html如何拉伸一个图片,css怎么拉伸图片?

css可以使用background-size属性设置图片拉伸&#xff0c;background-size属性规定背景图像的尺寸。此属性可以使用数值、百分比、cover等设置图片拉伸。 background-size属性规定背景图像的尺寸。 background-size属性介绍&#xff1a; 语法&#xff1a;background-size: leng…

html 图片纵向拉伸,css如何让图片拉伸?

css设置图片拉伸的方法&#xff1a;1、使用width与height属性强制设置图片大小使图片拉伸。2、使用background-size属性拉伸背景图片。 1、强行设定大小值会导致拉伸 示例&#xff1a;//html .... //css img{ width: 80px; height: 80px; margin-right: 10px; } 效果图&#xf…

Android中Webview显示全屏拉伸图片

需要在一个视频view上叠加一个webview显示一些第三方的内容&#xff0c;例如视频、图片、h5页面等。显示图片时出现了边框和滚动条等不在预期的内容。由于对web相关的技术不甚了解&#xff0c;查询一番后完美解决。图片自适应webview大小显示。 xml布局文件如下&#xff1a; &…

PS调节图片:拉伸、变形

一、对图片进行变形处理 打开PS软件&#xff0c;选中需要处理的图片。 ctrlJ复制一层图层 点击编辑选项&#xff0c;在下拉菜单里找到变换→变形选项 即可对图片进行变形操作 注意变形的图片下边还有一层图形&#xff0c;那即是我们复制图层的效果。&#xff08;复制图层相当…

数组作为函数参数进行传递

今天编程序时发生了个这样的错误&#xff1a; 在头文件里 定义了一个数组&#xff1a; View Code 1 char s[]"1234567890"; 又定义了一个现显示组的函数&#xff1a; View Code 1 void Display(char* c); 通过下面这两条语句分别在现实函数和主函数中现实数组的大小&…

C++关于数组作为函数参数的值传递和指针传递

明确&#xff1a; 数组作为函数参数和普通的参数是有区别的&#xff1b; 函数中普通的参数 如同void insert(int a,int b)之类的传递分为3种方式传递 值传递指针传递&#xff0c;指针值的传递&#xff0c;引用传递&#xff0c;它们的参数的传递是将实参的值赋给形参。 而数…

详谈C++中数组作为函数参数

一、一个例子引发的思考 运行以下代码&#xff0c;请问输出是什么&#xff1f;例子来源于《剑指Offer》&#xff0c;我对书上例子做了修改&#xff0c;让其可以运行。 #include<iostream> using namespace std;int GetSize(int data[]) {return sizeof(data); } int mai…

易懂的数组作为函数参数(C语言)

易懂的数组作为函数参数&#xff08;C语言&#xff09; 目录 易懂的数组作为函数参数&#xff08;C语言&#xff09;1、数组做函数参数2、通过形参数组修改数组元素3、数组排序 1、数组做函数参数 &#xff08;1&#xff09;、若将一个数组作为实际参数传递给函数&#xff0c;…

以数组作为函数参数的函数调用

调用有参函数时需要提供实参&#xff0c;实参可以是常量&#xff0c;变量或者表达式&#xff0c;数组元素就相当于变量&#xff0c;因此数组元素可以用作函数实参&#xff0c;但是不能用作函数形参&#xff08;因为在函数被调用时临时分配存储单元&#xff0c;不可能为一个数组…

数组作为函数参数传递

数组作为函数参数传递 数组作为函数参数传递时&#xff0c;传入的是数组首地址&#xff0c;并非数组本身。今天总算理解了这一点。写了一个打印数组元素的函数&#xff0c;代码如下&#xff1a; void print1(int arr[]) {int len sizeof(arr) / sizeof(arr[0]);cout <<…

C++之数组作为函数参数

好消息&#xff0c;好消息&#xff0c;数组也可当参数啦&#xff01;&#xff01;&#xff01; 长这样&#xff0c; void arr(int a[])还挺好看&#xff08;生平第一次夸代码/狗头/&#xff09; 众所周知&#xff0c;变量可以当参数&#xff0c;但是数组当参数的话只能被认为…

C语言 数组作为函数参数

1、数组元素作为函数实参 int a[10]; //相当于定义了10个变量&#xff0c;a[0]~a[9]&#xff0c;那么数组元素就是&#xff1a;a[0]~a[9]&#xff0c;数组元素就可以当成变量使用。 #include<stdio.h> //函数声明 int whichmax(int x,int y); int main() {int a[10];a[1…

数组元素作为函数参数

数组元素作为函数参数 数组元素作为函数参数数组元素作函数实参数组名作为函数参数 数组元素作为函数参数 数组可以作为函数的参数使用&#xff0c;进行数据传送。数组用作函数参数有两种形式&#xff0c;一种是把数组元素(下标变量)作为实参使用&#xff1b;另一种是把数组名…