.9.png

When designing a User Interface you may want to change the default View backgrounds to give an App its own look. In most cases the backgrounds must be able to scale correctly for different size screens on a variety of devices. Android uses Nine Patch files to provide support for scaling of backgrounds as View sizes change.

In this picture the wordTexthas a background that is a rounded rectangle (a black border with a grey background). The rectangle has then been uniformly scaled to fit inLonger Text. As a result of scaling the corners and vertical edges have distorted to give the rounded rectangle an unbalanced look. Compare that to the secondLonger Textwhere the background has maintained its balance.

To correctly scale the background selected parts of the image are scaled in a particular direction or not scaled at all. Which parts are scaled and in which direction are shown in this diagram. TheXindicates that corners are not scaled, the vertical edges are scaled vertically, the horizontal edges are scaled horizontally and the central area is scaled in both directions. This is probably why it is called a Nine Patch file, a.k.a9patch.

4 Corners +

2 Vertical Edges +

2 Horizontal Edges +

1 Central Area

= 9 Areas (Patches) in Total

In the example project that follows the default black border and grey gradient background of anEditTextis replaced with a solid turquoise background with black border. The required rounded rectangle is drawn in a graphics program (such as Gimp,http://www.gimp.org, or Paint.net,http://www.getpaint.net/). The rectangle is drawn as small as possible (here almost resembling a circle) to support small Views. There is a one pixel border and transparent background. An orange version of the rectangle is drawn to support focus indication used with keypad navigation. Android needs to know which proportion of the vertical and horizontal edges need to be scaled, and where the View content sits in relation to the background. These factors are determined from indicators drawn within the image. To apply these indicators thedraw9patchprogram supplied in the Android SDK tools folder is used. Start the program and open the background image (drag and drop onto thedraw9patchdialog). The program will expand the image by one pixel all around. It is on this extra one pixel edging that indicator lines are drawn. Enlarge the image using theZoomslider. In the left hand and top edges draw the indicator lines to mark which of the vertical and horizontal pixels can be duplicated for scaling. In the right hand and bottom edges draw the indicator lines to show where content can be positioned.

The following diagram shows the right and bottom markers for content placement. If content does not fit in the indicated rectangle then the background image is stretched using the area shown by the left and top markers. Save the marked file in theres/drawablefolder for a project. Android determines if an image is scaled using Nine Patch scaling instead of uniform scaling via the file name, it must have.9before the.pngfile extension. For example a image file namedturquoise.pngwould be namedturquoise.9.png. To use the background image reference it using thebackgroundattribute of aViewin a layout file, for exampleandroid:background="@drawable/turquoise". If using another image to indicate that aViewhas focus use a selector file, for example save this XML file in thedrawablefolder asselector.xml(seeCopying Code from the Articlesfor tips):

[code lang=”xml”]

android:drawable="@drawable/turqfocus" />

[/code]

Reference it asandroid:background="@drawable/selector"(see the tutorialAdding State Graphics to an ImageButtonwith Inkscape for another selector file example). In this screen EditTexts with default backgrounds and the nine patch background create above are shown. Notice that the new View background is using a little less space than the default (useful to know if a project needs a little bit more screen area).

Nine Patch files are not restricted to simple View backgrounds. This Nine Patch file is used to frame a photograph. Notice how the left and top scaling indicators are broken where detail that must not be scaled (because it would distort) is located.

Download somecodethat covers this article ready for importing into an Android project. The code can also be accessed via theAndroid Example Projectspage. See the articleMove Android Code Between PCs Running Eclipseon how to import example code into an Eclipse project. A version of this article was produced for theAndroid Cookbook.

The pink heart frame used in this article came from the Open Clip Art Library athttp://openclipart.org/detail/91075/pink-2-frame-by-inky2010.

From :http://tekeye.biz/2012/android-9patch-files

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容

  • 完成目前最重要的东西。
    小米99阅读 165评论 0 1
  • 王先生最近很忙,经常加班,以至于我都不期望他六点半能回到家,虽然他应该是五点半下班,虽然他从公司骑车回家只需要十五...
    薇承宇阅读 332评论 0 4