Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android官方文檔之App Resources(下)

Android官方文檔之App Resources(下)

編輯:關於Android編程

本文將介紹Android中Resource Types的drawable、menu、layout。如需訪問官方原文,您可以點擊這些鏈接:

《Drawable Resources》  《Layout Resource》  《Menu Resource》


布局資源(Layout Resource)


布局資源用於定義組件的布局UI。


文件目錄:

res/layout/filename.xml

引用方式:

In Java: R.layout.filename
In XML: @[package:]layout/filename

語法:



    
        
    
    
        
    
    

根標簽可以是 ViewGroupView、或 之一。


標簽及其屬性:

:承載其他View的容器。如LinearLayout, RelativeLayout, FrameLayout等。並不是所有的都能在布局中直接包含View,比如說AdapterView,它的子View來自於Adapter。

android:id :資源ID。

android:layout_height:dp或關鍵字(wrap_contentmatch_parent)。不可缺省。

android:layout_width:dp或關鍵字(wrap_contentmatch_parent)。不可缺省。

:任何View都可以包含這個標簽,它表示程序第一次加載時,該View獲得焦點,該標簽只能在一個布局文件中使用一次。

:引用一個布局。

layout :不可缺省。引用一個布局資源。

android:id:資源ID。可覆蓋引用布局的根View的ID。

android:layout_height:可覆蓋引用布局的根View的android:layout_height

android:layout_width:可覆蓋引用布局的根View的android:layout_width

:是一個根標簽。但並未占用布局樹中的節點。使用該標簽包含的元素將被直接替換至引用該標簽的布局中。


示例:





    
    

引用方式:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_activity);
}

菜單資源(Menu Resource)


菜單資源為程序提供菜單項。如Options Menu、Context Menu、submenu 等。在Java中通過MenuInflater類中的方法引入菜單資源。


文件目錄:

res/menu/filename.xml

引用方式:

In Java: R.menu.filename
In XML: @[package:]menu.filename

語法:



標簽及其屬性:

 

:不可缺省,必須作為菜單資源的根標簽。應包含和/或 標簽。

 

xmlns:android :不可缺省,XML文件的命名空間。必須是:"http://schemas.android.com/apk/res/android"

:一個菜單項。若包含了

標簽,那麼該 標簽是一個子菜單。 標簽必須被包含於 中。

 

android:id:資源ID。

android:title:String類型。菜單項的顯示內容。

android:titleCondensed: String類型。縮短的菜單項的顯示內容。當android:title中指定的的內容顯示不下時,顯示該屬性的內容。

android:icon:drawable資源。菜單項的圖標。

android:onClick:方法名。當菜單項被點擊時,調用該方法。必須在activity中定義該方法,且必須使用public修飾符,需要傳入一個MenuItem作為唯一參數。

android:showAsAction:下表中的Value值之一。用於確定如何在標題欄中顯示該item項。

Value Description ifRoom 僅當標題欄有空間時顯示該item,否則該item項將被隱藏至overflow中 withText 僅當標題欄有空間時會顯示menu的title never 永不在標題欄中顯示該item,而是將該item項隱藏至overflow中 collapseActionView 這個操作視窗應該被折疊到一個按鈕中,當用戶選擇這個按鈕時,這個操作視窗展開。否則,這個操作視窗在默認的情況下是可見的,並且即便在用於不適用的時候,也要占據操作欄的有效空間。
 -- `android:actionLayout`:layout資源。定制的標題欄布局。


 -- `android:actionViewClass`:類名。用於聲明在標題欄展示的控件的全限定類名,如`"android.widget.SearchView"`表示將控件`SearchView`展示在標題欄上。

 -- `android:actionProviderClass`:類名。用於聲明在標題欄展示的菜單項的全限定類名,如`"android.widget.ShareActionProvider"`表示使用控件`ShareActionProvider`作為一個菜單項。

 -- `android:alphabeticShortcut`:Char類型。為該item指定字符快捷鍵。

 -- `android:numericShortcut`:Integer類型。為該item指定數字快捷鍵。

 -- `android:checkable`:Boolean類型。`true`表示該item是可勾選的。

 -- `android:checked`:Boolean類型。`true`表示item默認是勾選狀態。
 -- `android:visible`:Boolean類型。`true`表示item默認是可見狀態。

 -- `android:enabled`:Boolean類型。`true`表示item默認是使能狀態。

 -- `android:menuCategory`:值為下表中的Value值之一。這些值對應著Menu類中的` CATEGORY_* `字段。表示item的優先級。
Value Description container 該項是容器的一部分(For items that are part of a container.) system 該項由系統提供 secondary 該項是由用戶提供的二級選項(不常用) alternative 該項正在顯示

android:orderInCategory:Integer類型。該項的重要級別。


:定義一組item項。

android:id:資源ID。

android:checkableBehavior:值為下表中的Value值之一。指定該組item的可勾選行為。

Value Description   none group中不包含可勾選的item。   all 所有item都是可勾選的。(checkbox)   single 只能單選item。(radiobutton)  
-- `android:visible`:Boolean類型,true表示group可見。

-- `android:enabled`:Boolean類型,true表示group使能。

-- `android:menuCategory`:與``標簽中的 `android:menuCategory`屬性相同。

-- `android:orderInCategory`:Integer類型。該項的重要級別。

示例:




在Java代碼中引入該menu資源:

public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.example_menu, menu);
    return true;
}

public void onGroupItemClick(MenuItem item) {
    // One of the group items (using the onClick attribute) was clicked
    // The item parameter passed here indicates which item it is
    // All other menu item clicks are handled by onOptionsItemSelected()
}

Drawable資源(Drawable Resources)


Drawable是一種能夠在屏幕上展示的資源,根據不同的展示形式,Drawable可分為如下類型:

Bitmap File:一個位圖文件資源,.png、.jpg 、或 .gif格式。對應BitmapDrawable對象。

Nine-Patch File:一種可以在指定方向上拉伸而不會失真的.9.png格式的圖片資源。對應NinePatchDrawable對象。

Layer List:一個引用了一組Drawable圖片的資源,具有層次順序,最大標號的drawable在最頂層。對應LayerDrawable對象。

State List:不同狀態下可飲用不同drawable資源的drawable。對應StateListDrawable對象。

Level List:管理大量的drawable,並會指定一個最大值。對應LevelListDrawable對象。

Transition Drawable:可以在兩個drawable之間淡入淡出切換的drawable。對應TransitionDrawable對象。

Inset Drawable:在一個drawable中插入一個drawable並指定距離。當View的背景小於該View時,使用該類型的drawable。

Clip Drawable:根據當前drawable尺寸剪切另一個drawable。對應ClipDrawable對象。

Scale Drawable:根據當前drawable尺寸縮放另一個drawable。對應ScaleDrawable對象。

Shape Drawable:設定顏色和漸變的drawable。對應ShapeDrawable對象。


位圖(Bitmap)


Android支持三種位圖文件。.png (推薦), .jpg (可接受), .gif (不推薦)。

位圖文件(Bitmap File)

文件目錄:

res/drawable/filename.png (.png, .jpg, or .gif)





引用方式:

In Java: R.drawable.filename
In XML: @[package:]drawable/filename

示例:




在Java代碼中引入:

Resources res = getResources();
Drawable drawable = res.getDrawable(R.drawable.myimage);

XML位圖(XML Bitmap)


一個XML位圖文件定義在XML中,可以使用標簽將一個drawable包含在中。


文件目錄:

res/drawable/filename.xml

引用方式:

In Java: R.drawable.filename
In XML: @[package:]drawable/filename

語法:



標簽及其屬性:

xmlns:android:命名空間;

android:src :資源drawable。不可缺省。

android:antialias:Boolean類型。是否抗鋸齒。

android:dither:Boolean類型。設置圖像的像素是否與屏幕的像素相匹配。

android:filter:Boolean類型。是否開啟圖像過濾。

android:gravity:圖像顯示的位置。

android:mipMap:Boolean類型。用於開啟圖片的提示。

android:tileMode:拼裝模式。可使用的值:disabled(默認值,不拼裝)、clamp(若drawable有陰影,則重復其邊緣顏色)、repeat(在豎直和水平方向上重復陰影圖片)、mirror(以鏡像的方式重復陰影)


示例:



Nine-Patch圖片(Nine-Patch File)


Nine-Patch是一個可拉伸的圖片類型。其格式為.9.png。在普通圖片的四周多出了1dp的寬度,其中,可以在左邊和上邊的1dp寬度中指定該圖片可拉伸的范圍,而右邊和下邊的1dp寬度用於指定圖片中顯示文字的位置。


文件目錄:

res/drawable/filename.9.png

引用方式:

In Java: R.drawable.filename
In XML: @[package:]drawable/filename

示例:



Layer List

使用標簽包含若干個標簽。每一個item表示一個層級的drawable。


文件目錄:

res/drawable/filename.xml

引用方式:

In Java: R.drawable.filename
In XML: @[package:]drawable/filename

語法:



    

標簽及其屬性:

:不可缺省,用於包含若干標簽。

xmlns:android:命名空間,不可缺省。

:用於設置每一個層級drawable。

android:drawable:drawable資源,不可缺省。

android:id:資源ID。

android:top:Integer類型。距離容器頂端的偏移量。

android:right:Integer類型。距離容器右端的偏移量。

android:bottom:Integer類型。距離容器底端的偏移量。

android:left:Integer類型。距離容器左端的偏移量。


示例:





    
      
    
    
      
    
    
      
    

代碼中引用:


效果如下:
這裡寫圖片描述


State List

State List drawable可以為控件設置不同狀態下的drawable。如button有正在點擊、未點擊、獲得焦點 等狀態。


文件目錄:

res/drawable/filename.xml

引用方式:

In Java: R.drawable.filename
In XML: @[package:]drawable/filename

語法:



    

標簽及其屬性:

:不可缺省。必須是根標簽,包含若干個

xmlns:android:命名空間

android:constantSizeBoolean類型。若為true,表示當狀態改變時,drawable的尺寸不變。默認為false。

android:dither:Boolean類型。默認為true。若為true,表示如果圖片的像素類型與屏幕不符,則適配該屏幕類型。(如位圖類型是ARGB 8888,而屏幕是RGB 565)。

android:variablePadding:Boolean類型。默認為false。若為true,表示當狀態改變時,控件的padding值會改變。

:定義某個狀態下的drawable資源。必須是標簽的子標簽。

android:drawable:drawable資源。不可缺省。

android:state_pressed:Boolean類型。默認為false。為true時,表示該控件正在被點擊。

android:state_focused:Boolean類型。默認為false。為true時表示該控件獲得了焦點,即為可輸入狀態。

android:state_hovered: Boolean類型。光標是否懸停,通常與focused state相同。默認為false。

android:state_selected:Boolean類型。控件是否處於選中狀態。

android:state_checkable:Boolean類型。true表示控件設為可選的。僅用於某個控件可以在可選的和非可選的之間切換。

android:state_checked:Boolean類型。true表示控件被勾選狀態。

android:state_enabled:Boolean類型。控件是否可接受點擊事件。

android:state_activated:Boolean類型。是否將該控件設為被點擊標記狀態。即點擊後會永久變色,表示該控件被點擊過。

android:state_window_focused:Boolean類型。true表示當該應用程序窗口處於前台時。


示例:





     
     
     
     

在代碼中引用:


Level List

管理著若干個drawable的資源。


文件目錄:

res/drawable/filename.xml

引用方式:

In Java: R.drawable.filename
In XML: @[package:]drawable/filename

語法:



    

標簽及其屬性:

:必須作為根標簽。其中可包含若干個標簽。

xmlns:android:命名空間

:該標簽作為一個層級包含一個drawable。

android:drawable :drawable資源。不可缺省。

android:maxLevel:Integer類型。該item項的最大級別。

android:minLevel:Integer類型。該item項的最小級別。


示例:



    
    

Transition Drawable


Transition Drawable 用於在兩個drawable之間的切換產生淡入淡出效果。


文件目錄:

res/drawable/filename.xml

引用位置:

In Java: R.drawable.filename
In XML: @[package:]drawable/filename



    

示例:





    
    

引入控件:


Java中引入:在500毫秒內將第一個drawable切換至第二個drawable

ImageButton button = (ImageButton) findViewById(R.id.button);
TransitionDrawable drawable = (TransitionDrawable) button.getDrawable();
drawable.startTransition(500);

Inset Drawable


語法:



標簽及其屬性:

:必須作為根標簽。

xmlns:android :命名空間。

android:drawable:插入的drawable資源。不可缺省。

android:insetRight:Dimension類型。右部插入。

android:insetTop:Dimension類型。頂部插入。

android:insetBottom:Dimension類型。底部插入。

android:insetLeft:Dimension類型。右部插入。


示例:



Shape Drawable


可以在XML中自定義一個普通性狀的drawable。


文件目錄:

res/drawable/filename.xml

引用方式:

In Java: R.drawable.filename
In XML: @[package:]drawable/filename

語法:



    
    
    
    
    
    

標簽及其屬性:

:指定drawable形狀。必須是根標簽。

xmlns:android:命名空間。不可缺省。

android:shape:指定drawable形狀。可選值為:"rectangle"(缺省值,矩形)、"oval"(橢圓)、"line"(直線) 、"ring"(圓環)

:為drawable添加圓形邊角。只有android:shape屬性設為"rectangle"時,該標簽及標簽中的屬性才有效。

android:radius :指定圓角半徑。單位Dimension。

android:topLeftRadius:左上角半徑

android:topRightRadius:右上角半徑

android:bottomLeftRadius:左下角半徑

android:bottomRightRadius:右下角半徑

:漸變顏色

android:angle :Integer類型。漸變角度。0表示從左至右。90表示從下至上。45表示從左下至右上。默認為0。

android:centerX:Float類型。0.0-1.0。漸變中心的x的坐標。

android:centerY:Float類型。0.0-1.0。漸變中心的y的坐標。

android:centerColorColor類型。是一個16進制數。表示起始顏色與最終顏色的中間色。

android:endColorColor類型。最終色。

android:startColorColor類型。起始色。

android:type:漸變模式。可選值:"linear"(線性漸變。缺省值)、"radial"(放射式漸變)、"sweep"(掃描漸變)

ndroid:useLevel:Boolean類型。若作用在LevelListDrawable上則為true。

:與父容器View的邊距。

android:left:Dimension類型。左邊距。

android:right:Dimension類型。右邊距。

android:top:Dimension類型。上邊距。

android:bottom:Dimension類型。下邊距。

:drawable的尺寸。

android:height :Dimension類型。形狀的高度。

android:width:Dimension類型。形狀的寬度。

:填充顏色。

android:color:Color類型。

:邊框線。

android:width:Dimension類型。邊框線寬度。

android:color:Color類型。邊框線顏色。

android:dashGap:Dimension類型。邊框線為虛線時兩虛線的間隔。

android:dashWidth:Dimension類型。虛線的長度。


示例:



    
    
    

引入控件:


Java代碼中引入:

Resources res = getResources();
Drawable shape = res. getDrawable(R.drawable.gradient_box);

TextView tv = (TextView)findViewByID(R.id.textview);
tv.setBackground(shape);
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved