免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
OPhone NinePatch使用教程--創(chuàng)建優(yōu)美的背景圖片 - 技術(shù)文章 - OPhone SDN [OPhone 開發(fā)者網(wǎng)絡(luò)]

在本教程中,將詳細(xì)介紹OPhone中引入的NinePatch圖片格式,以及如何使用NinePatch圖片來創(chuàng)建和OPhone系統(tǒng)風(fēng)格統(tǒng)一的應(yīng)用程序。在下面的教程中使用OPhone系統(tǒng)中的控件Button來作為演示。
 

OPhone系統(tǒng)背景圖片
 

       首先來看看OPhone系統(tǒng)Button的背景樣式。 創(chuàng)建一個示例項目,添加幾個Button, layout代碼如下:
 

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"   
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent">  
  6.     <TextView   
  7.         android:layout_width="fill_parent"  
  8.         android:layout_height="wrap_content"   
  9.         android:text="@string/hello" />  
  10.     <Button   
  11.         android:layout_width="wrap_content"  
  12.         android:layout_height="wrap_content"   
  13.         android:id="@+id/smallButton"  
  14.         android:text="@string/smalltext"/>  
  15.     <Button   
  16.         android:layout_width="wrap_content"  
  17.         android:layout_height="wrap_content"   
  18.         android:id="@+id/mediumButton"  
  19.         android:text="@string/mediumtext"/>  
  20.     <Button   
  21.         android:layout_width="wrap_content"  
  22.         android:layout_height="wrap_content"   
  23.         android:id="@+id/longButton"  
  24.         android:text="@string/longtext"/>  
  25. </LinearLayout>  

     (為了節(jié)約篇幅,下面的布局代碼只提供Button代碼,其他代碼省略。)
 

      程序截圖如下:

 

圖一:OPhone系統(tǒng)默認(rèn)按鈕背景,第二個按鈕是取得焦點時候的背景

       從上圖可以看到不管按鈕有多長,背景都可以很好的展示。在有些情況下,可能系統(tǒng)提供的背景圖片不適合你的應(yīng)用程序主題,這個時候就要使用自定義背景來實現(xiàn)特殊的主題風(fēng)格了。
使用顏色做背景

       通過指定View中的background值為顏色值來設(shè)置顏色背景,代碼如下:

  1. <Button   
  2.     android:layout_width="wrap_content"   
  3.     android:layout_height="wrap_content"   
  4.     android:text="@string/smalltext"   
  5.     android:id="@+id/smallButton"   
  6.     android:background="@color/red"   
  7.     android:layout_margin="4px"/>  

     在Button中指定了背景android:background="@color/red",red是在colors.xml文件中定義的顏色值,定義方式查看項目代碼中的res/values/colors.xml文件。現(xiàn)在程序截圖如下:

圖二:使用顏色值作為Button背景

       由上圖可見,使用顏色背景得到的是一個矩形填充的背景,這和系統(tǒng)提供的圓角背景是不一樣的。因此要使應(yīng)用程序和OPhone系統(tǒng)風(fēng)格統(tǒng)一,不要使用顏色值來做組件的背景。當(dāng)然,這不是絕對的,如果使用自定義組件可以自己來繪制組件的背景,這個時候就可以自由的來控制背景如何繪制了,關(guān)于自定義組件的內(nèi)容已經(jīng)超出本教程范圍了,這里不做討論。既然使用顏色值做背景看起來不統(tǒng)一,那么使用自定義的圖片又如何呢?
 

自定義圖片背景
        使用如下的圖片來做Button的背景,layout 代碼如下:

圖三:自定義背景圖片

  1. <Button   
  2.     android:layout_width="wrap_content"   
  3.     android:layout_height="wrap_content"   
  4.     android:text="@string/smalltext"   
  5.     android:id="@+id/smallButton"   
  6.     android:background="@drawable/btn_bg"   
  7.     android:layout_margin="4px"/>  

    程序截圖如下:

圖四:使用自定義背景圖片的Button

      由上圖可見,在Button長度剛好和組件長度差不多的時候,看起來還不錯,隨著Button內(nèi)容的增加,背景圖片被拉伸變形。這時可能你會想到,對于不同長度的Button使用不同的背景圖片,這樣不就沒問題咯!是的,這樣的可以的,但是如果長度是動態(tài)變化的呢?
 

NinePatch背景圖片
      現(xiàn)在該看看OPhone是如何實現(xiàn)組件背景的了,在OPhone中Button的默認(rèn)背景圖片為btn_default_small_normal.9.png 如下圖:

圖五:OPhone默認(rèn)Button背景圖片
 

       Button取得焦點時候的背景圖片如下:

 

圖六:OPhone中Button取得焦點的背景圖片

        OPhone的系統(tǒng)資源圖片可以到如下目錄下查看:
<OPhone SDK>\tools\lib\res\default\drawable

        由圖片名稱就可以看出有點與眾不同,是以9.png結(jié)尾的,這是OPhone系統(tǒng)特定的圖片格式,被稱為NinePatch圖片。NinePatch圖片和普通的圖片的區(qū)別只是比普通圖片四周多了一個邊框(注意觀察上面圖片周圍的黑線)。

       在NinePatch圖片中,左邊那條黑色線代表圖片垂直拉伸的區(qū)域,上邊的那條黑色線代表水平拉伸區(qū)域,右邊的黑色線代表內(nèi)容繪制的垂直區(qū)域,下邊的黑色線代表內(nèi)容繪制的水平區(qū)域,右邊和下邊的線是可選的。
 

NinePatch圖片編輯器
        在OPhone SDK中也提供了一個編輯NinePatch圖片的工具, 在<OPhone SDK>\tools目錄下面執(zhí)行 draw9patch.bat 就可以打開該工具,下面就使用該工具來編輯自定義的Button背景圖片。

       啟動編輯器,把btn_bg.png圖片拖到NinePatch編輯器窗口中(或則通過菜單:File > Open9-patch...來選擇圖片)來編輯,在編輯器的左邊是編輯區(qū)域,右邊是預(yù)覽區(qū)域,在預(yù)覽區(qū)域中顯示了水平拉伸,垂直拉伸和水平垂直都拉伸情況下的預(yù)覽圖形。
 

        NinePatch編輯器還提供了一些操作選項:

  •  Zoom: 用來縮放左邊編輯區(qū)域的大小
  •  Patch scale: 用來縮放右邊預(yù)覽區(qū)域的大小
  •  Show lock: 當(dāng)鼠標(biāo)在圖片區(qū)域的時候顯示不可編輯區(qū)域
  •  Show patches: 在編輯區(qū)域顯示圖片拉伸的區(qū)域 (使用粉紅色來標(biāo)示)
  •  Show content: 在預(yù)覽區(qū)域顯示圖片的內(nèi)容區(qū)域(使用淺紫色來標(biāo)示)
  •  Show bad patches: 在拉伸區(qū)域周圍用紅色邊框顯示可能會對拉伸后的圖片產(chǎn)生變形的區(qū)域,如果完全消除該內(nèi)容則圖片拉伸后是沒有變形的,也就是說,不管如何縮放圖片顯示都是良 好的。 (實際試 發(fā)現(xiàn)NinePatch編輯器是根據(jù)圖片的顏色值來區(qū)分是否為bad patch的,一邊來說只要色差不是太大不用考慮這個設(shè)置。)


圖七: NinePatch圖片編輯器

          然后設(shè)置水平和垂直拉伸區(qū)域,在需要拉伸的位置繪制像素,如下圖(使用鼠標(biāo)左鍵點擊繪制點,右鍵刪除繪制的點):
 

圖8:編輯后的自定義圖片

        可以在右邊預(yù)覽區(qū)域看到現(xiàn)在圖片拉伸后的效果,同時還可以看到現(xiàn)在的內(nèi)容區(qū)域在沒有設(shè)置的時候是整個圖片(注意:在這里顯示的內(nèi)容區(qū)域為整個圖片,其實當(dāng)不設(shè)置內(nèi)容區(qū)域的時候,在OPhone中使用的內(nèi)容區(qū)域就是設(shè)置的拉伸區(qū)域,也就是上圖中的粉紅色區(qū)域,這個在教程后面會有示例說明)。
 

      把這個圖片保存為NinePatch圖片(btn_bg.9.png),替換前面使用的btn_bg.png圖片后,程序截圖如下:

圖九:使用自定義NinePatch圖片的Button

       由上圖可以看到NinePatch圖片在背景圖中應(yīng)用的優(yōu)勢,指定顏色值變化范圍比較小的區(qū)域為伸縮區(qū)域來防止圖片伸縮變形。由于沒有設(shè)置內(nèi)容區(qū)域(NinePatch圖片的右邊和下邊的指示線條),Button在顯示的時候默認(rèn)是使用拉伸區(qū)域的,所以這里看不出有什么不妥當(dāng)?shù)牡胤?,下面來測試的右邊和下邊指示線的作用。

      現(xiàn)在編輯圖片如下:
 

圖十:設(shè)置了內(nèi)容區(qū)域的NinePatch圖片

          為了使測試明顯,這里使用中間和上部區(qū)域作為內(nèi)容區(qū)域,保存該圖片為btn_bg.9.png,使用該圖片后的程序截圖如下:

圖十一:使用不恰當(dāng)設(shè)置的內(nèi)容區(qū)域的圖片

      和前面程序截圖對比就可以發(fā)現(xiàn)內(nèi)容區(qū)域的作用了。所以現(xiàn)在再看看OPhone的默認(rèn)背景圖片btn_default_small_normal.9.png 就可以發(fā)現(xiàn)其中四周線條設(shè)置的奧妙了,同樣自定義背景設(shè)置為下圖所示就更為合理了:

圖十二:更加合理的NinePatch設(shè)置

圖十三:使用合理的NinePatch圖片的截圖

       到此,你就應(yīng)該知道NinePatch圖片在OPhone系統(tǒng)中的奧妙了,在系統(tǒng)資源文件目錄中(<OPhoneSDK>\tools\lib\res\default\drawable)可以發(fā)現(xiàn)大量的NinePatch圖片,現(xiàn)在你可以使用自定義的NinePatch圖片來設(shè)置自己的應(yīng)用程序了。

       最后再來驗證下前面提到過的OPhone系統(tǒng)使用不設(shè)置內(nèi)容區(qū)域NinePatch圖片的實際顯示情況,這里使用下面的圖片作為Button背景圖片:

       這里設(shè)置水平拉伸比較長,垂直拉伸比較靠近上部,程序截圖如下:


 

      由上圖可見,當(dāng)不設(shè)置內(nèi)容區(qū)域的時候,NinePatch圖片使用的就是拉伸區(qū)域作為內(nèi)容區(qū)域,而不是NinePatch編輯器中指示的圖片全部區(qū)域。

總結(jié)

      要使OPhone應(yīng)用程序和系統(tǒng)具有統(tǒng)一的主題風(fēng)格,背景不要使用顏色值而盡量的使用NinePatch圖片。

      NinePatchTutorial.rar中包含本教程使用的項目文件和其他自定義NinePatch圖片資源。

注:本文中的內(nèi)容完全適用于Android已經(jīng)發(fā)布的各個版本。

作者簡介

       程云峰,網(wǎng)名icess,目前就職于杭州恒生電子研發(fā)中心,喜歡Java開源技術(shù)。
個人網(wǎng)站:http://www.chengyunfeng.com/

(聲明:本網(wǎng)的新聞及文章版權(quán)均屬OPhoneSDN網(wǎng)站所有,如需轉(zhuǎn)載請與我們編輯團隊聯(lián)系。任何媒體、網(wǎng)站或個人未經(jīng)本網(wǎng)書面協(xié)議授權(quán),不得進行任何形式的轉(zhuǎn)載。已經(jīng)取得本網(wǎng)協(xié)議授權(quán)的媒體、網(wǎng)站,在轉(zhuǎn)載使用時請注明稿件來源。)

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
點9切圖1
Android設(shè)計中的.9.png圖片
AutoCompleteTextView 改變提示框的背景和文字顏色
Android progressBar 自定義圓形旋轉(zhuǎn)圖片
Android應(yīng)用開發(fā)筆記(10):制作自定義背景Button按鈕、自定義形狀Button的全攻略
android界面設(shè)計——自定義邊框背景的Toast
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服