日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android Nine-patch

發(fā)布時間:2023/12/9 Android 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android Nine-patch 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.


做了好多客戶端軟件了,突然發(fā)現(xiàn)里面有好多圖片都是重復(fù)的,個別只是大小不一樣,每次都使用大量圖片,導(dǎo)致軟件過大,項目總結(jié)的時候才發(fā)現(xiàn)Android已經(jīng)提供了一種解決方案了,這就是NinePatchDrawable下面部分主要是翻譯的官網(wǎng)api,后邊有我總結(jié)的適用地方

NinePatchDrawable

NinePatchDrawable是一種可以調(diào)整大小的圖片,用戶自定義的拉伸區(qū)域,這種類型的圖片被定義成一種特殊格式化的png文件

Nine-patch

? ? ? ? NinePatchDrawable是一種可以拉伸的圖片,Android可以自動調(diào)整大小去適應(yīng)視圖的內(nèi)容區(qū)域,你已經(jīng)把它作為背景。一個運用Nine-patch圖片作為背景用在標準的android按鈕上,按鈕必須拉伸去適應(yīng)各種字符的長度。一個Nine-patch是一種標準的png圖片,它包含額外的一個像素的寬度。它必須保存為已.9.png為擴展名,并且放在項目的/res/drawable文件夾下。如果你是從APK解壓后得到的*.9.png文件,注意它是已將周圍的空白像素去掉了的,在使用時必須再加上。


邊界是用來定義圖片的可拉伸和靜態(tài)區(qū)域。你指定一個(或多個)一像素寬度的黑線在左邊或上邊的邊界(其他的邊界像素應(yīng)該完全透明或白色)指出一個可拉伸的區(qū)域。你可以有多個可以拉伸的區(qū)域:他們相對大小保持不變,所以最大的部分總是最大的。


你也可以在圖片的左邊和上部定義一個可選的drawable區(qū)域(實際上,內(nèi)邊距線)。如果一個視圖對象設(shè)置NinePatch作為它的背景,然后指定視圖的文本,它會伸展自己讓所有的文本符合規(guī)定區(qū)域內(nèi),指定在右邊和底部的線(如果包含)。當(dāng)然內(nèi)邊距線不包括其中,Android使用左邊和頂部的線去定義這個繪圖區(qū)。


清楚的闡明不同線路之間的差別,左側(cè)和頂部定義的那些像素的圖像可以被復(fù)制以拉伸圖像。底部和右線定義一個相對位置的圖像,視圖內(nèi)容的放入其中。

下面是一個定義buttonNinePatch文件:

NinePatch定義了一個可伸縮的面積與左側(cè)和頂部的線和底部和右側(cè)線的繪制區(qū)域。在上面的圖像中,虛線灰色線識別區(qū)域的圖像將被復(fù)制以拉伸。粉紅色的矩形區(qū)域在下面的底部圖像識別的地區(qū)為視圖的內(nèi)容是允許的。如果內(nèi)容不適應(yīng)這個區(qū)域,圖像將被拉伸。

? ? ? ? Draw-9-patch工具提供了一中非常便利的方法去創(chuàng)建你自己的Nine-Patch圖像,用一個WYSIWYG圖片編輯器。它甚至提出警告,如果該地區(qū)已經(jīng)定義為可伸縮的地區(qū)都處于危險的生產(chǎn)圖紙工件由于像素復(fù)制。

XML例子

這兒有意向布局xml的例子示范怎么添加一個Nine-Patch圖像在兩個按鈕上(NinePatch圖像被保存為res/drawable/my_button_background.9.png)


Draw 9-patch工具:

下面是快速指導(dǎo)創(chuàng)建一個Nine-patch圖片用Draw9-patch工具,你需要準備你想創(chuàng)建NinePatch的圖片。

1.從終端上啟動draw9patch程序從你的SDK /tools目錄下

2.拖拽你的圖片到draw9patch窗口(或者 File> Open 9-patch… 選擇圖片)你的工作空間會自動打開。

左邊是你的繪畫區(qū)域,也就是你可以編輯線為了拉伸區(qū)域和內(nèi)容區(qū)域。右邊是預(yù)覽區(qū)域,你可以預(yù)覽你被拉伸(上邊是垂直拉伸,中間是水平拉伸,下面是同時拉伸)的圖片。

3.點擊1像素的周長來畫線定義可拉伸區(qū)域和內(nèi)容區(qū)域(可選)。右鍵點擊(或者摁住shift鍵點擊)去擦除已經(jīng)畫好的線。

4.完成后,選擇File > Save 9-patch,你的圖片會被保存為.9.png

注意:一個正常的png文件(*.png)會被加載一個空的1像素邊界在圖片的周圍,以便于你可以畫可拉伸區(qū)域和內(nèi)容區(qū)域。一個已經(jīng)被保存成9-patch的文件(*.g.png)加載時沒有繪畫的區(qū)域添加,因為它已經(jīng)存在。


lZoom: 用來縮放左邊編輯區(qū)域的大小

lPatch scale: 用來縮放右邊預(yù)覽區(qū)域的大小

lShow lock: 當(dāng)鼠標在圖片區(qū)域的時候顯示不可編輯區(qū)域

lShow patches: 在編輯區(qū)域顯示圖片拉伸的區(qū)域(使用粉紅色來標示)

lShow content: 在預(yù)覽區(qū)域顯示圖片的內(nèi)容區(qū)域(使用淺紫色來標示)

lShow bad patches: 在拉伸區(qū)域周圍用紅色邊框顯示可能會對拉伸后的圖片產(chǎn)生變形的區(qū)域,如果完全消除該內(nèi)容則圖片拉伸后是沒有變形的,也就是說,不管如何縮放圖片顯示都是良好的。(實際試發(fā)現(xiàn)NinePatch編輯器是根據(jù)圖片的顏色值來區(qū)分是否為bad patch的,一邊來說只要色差不是太大不用考慮這個設(shè)置。)

使用&范圍
1、例子

原圖:

畫線之后的圖片:


說明:勾選上Show patchs之后可以看到左邊有一個粉紅色的區(qū)域這個區(qū)域就是可以自動拉伸的區(qū)域,主要取決于左邊(縱向拉伸)和上面(橫向拉伸)黑線。

勾選上Show Content之后可以再右邊的預(yù)覽視圖中看到三種方式的可拉伸內(nèi)容填充區(qū)域。


? ?

2、其它使用

官網(wǎng)主要介紹了button按鈕的使用,實際上項目中有很多地方都可以使用如下:


? ? 主要是拉伸左邊區(qū)域,右邊不需要拉伸


? ?


? ?下圖上邊有一部分顏色值相同,可以適當(dāng)拉伸

? ?


? ?v這個左邊的小箭頭是不能拉伸的


? ?下圖主要是鋸齒部分不能拉伸

? ?


? ?


? ?下圖主要是左上邊小箭頭部分不能拉伸

? ?


附錄:

參考:

http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch

http://developer.android.com/reference/android/graphics/drawable/NinePatchDrawable.html

http://developer.android.com/tools/help/draw9patch.html

http://www.cnblogs.com/feisky/archive/2010/01/16/1649502.html


轉(zhuǎn)載于:https://blog.51cto.com/zhaoyongpan/1206809

總結(jié)

以上是生活随笔為你收集整理的Android Nine-patch的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。