android studio樣式檔案彙總

發表於2017-05-17

android studio樣式檔案彙總:shape、Theme|stylesselector 

1:shape

shape用於設定形狀,有6個子標籤,各屬性如下:

res/drawable/styles.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    
    <!-- 圓角 -->
    <corners
        android:radius="9dp"
        android:topLeftRadius="2dp"
        android:topRightRadius="2dp"
        android:bottomLeftRadius="2dp"
        android:bottomRightRadius="2dp"/><!-- 設定圓角半徑 -->
    
    <!-- 漸變 -->
    <gradient
        android:startColor="@android:color/white"
        android:centerColor="@android:color/black"
        android:endColor="@android:color/black"
        android:useLevel="true"
        android:angle="45"
        android:type="radial"
        android:centerX="0"
        android:centerY="0"
        android:gradientRadius="90"/>
    
    <!-- 間隔 -->
    <padding
        android:left="2dp"
        android:top="2dp"
        android:right="2dp"
        android:bottom="2dp"/><!-- 各方向的間隔 -->
    
    <!-- 大小 -->
    <size
        android:width="50dp"
        android:height="50dp"/><!-- 寬度和高度 -->
    
    <!-- 填充 -->
    <solid
        android:color="@android:color/white"/><!-- 填充的顏色 -->
    
    <!-- 描邊 -->
    <stroke
        android:width="2dp"
        android:color="@android:color/black"
        android:dashWidth="1dp"
        android:dashGap="2dp"/>
    
</shape>

填充:設定填充的顏色

間隔:設定四個方向上的間隔

大小:設定大小

圓角:同時設定五個屬性,則Radius屬性無效

android:Radius="20dp"                           設定四個角的半徑

android:topLeftRadius="20dp"              設定左上角的半徑
android:topRightRadius="20dp"           設定右上角的半徑
android:bottomLeftRadius="20dp"      設定右下角的半徑
android:bottomRightRadius="20dp"    設定左下角的半徑

描邊:dashWidth和dashGap屬性,只要其中一個設定為0dp,則邊框為實現邊框

android:width="20dp"                               設定邊邊的寬度
android:color="@android:color/black"  設定邊邊的顏色
android:dashWidth="2dp"                         設定虛線的寬度
android:dashGap="20dp"                          設定虛線的間隔寬度

漸變:當設定填充顏色後,無漸變效果。angle的值必須是45的倍數(包括0),僅在type="linear"有效,不然會報錯。android:useLevel 這個屬性不知道有什麼用。

angle對應值的起點如圖:

2:selector

目錄結構為:res/drawable/**.xml

 在ListView中新增如下屬性程式碼

    1. android:listSelector="@drawable/mylist_view" 

 

ListView的item介面中新增如下屬性程式碼

 

    1. android:background="@drawable/mylist_view" 

利用JAVA程式碼直接編寫

  1. Drawable drawable = getResources().getDrawable(R.drawable.mylist_view);   
  2. listView.setSelector(drawable); 

為了防止列表拉黑的情況發生,需要在ListView中新增以下的屬性程式碼

android:cacheColorHint="@android:color/transparent"

屬性介紹:

 

android:state_selected選中

android:state_focused獲得焦點

android:state_pressed點選

android:state_enabled設定是否響應事件,指所有事件

程式碼參考:

    1. <?xml version="1.0" encoding="utf-8" ?>     
    2. <selector xmlns:android="http://schemas.android.com/apk/res/android">   
    3. <!-- 預設時的背景圖片-->    
    4.   <item android:drawable="@drawable/pic1" />      
    5. <!-- 沒有焦點時的背景圖片 -->    
    6.   <item android:state_window_focused="false"     
    7.         android:drawable="@drawable/pic1" />     
    8. <!-- 非觸控模式下獲得焦點並單擊時的背景圖片 -->    
    9.   <item android:state_focused="true" android:state_pressed="true"   android:drawable= "@drawable/pic2" />   
    10. <!-- 觸控模式下單擊時的背景圖片-->    
    11. <item android:state_focused="false" android:state_pressed="true"   android:drawable="@drawable/pic3" />    
    12. <!--選中時的圖片背景-->    
    13.   <item android:state_selected="true"   android:drawable="@drawable/pic4" />     
    14. <!--獲得焦點時的圖片背景-->    
    15.   <item android:state_focused="true"   android:drawable="@drawable/pic5" />     
    16. </selector>

 3:style|Theme

res/values/styles.xml

style 作用於view,theme作用於application或者Activity。

Style:是一個包含一種或者多種格式化屬性的集合,我們可以將其用為一個單位用在佈局XML單個元素當中。比如,我們可以定義一種風格來定義文字的字號大小和顏色,然後將其用在View元素的一個特定的例項。

      Theme:是一個包含一種或者多種格式化屬性的集合,我們可以將其為一個單位用在應用中所有的Activity當中或者應用中的某個Activity當 中。比如,我們可以定義一個Theme,它為window frame和panel 的前景和背景定義了一組顏色,併為選單定義可文字的大小和顏色屬性,可以將這個Theme應用在你程式當中所有的Activity裡。
 
定義Styles和Themes資源的XML文件的結構
      對每一個Styles和Themes,給<style>元素增加一個全域性唯一的名字,也可以選擇增加一個父類屬性。在後邊我們可以用這個名字來應用風格,而父類屬性標識了當前風格是繼承於哪個風格。在<style>元素內部,申明一個或者多個<item>,每一個<item>定義了一個名字屬性,並且在元素內部定義了這個風格的值。
  1. <?xml version="1.0" encoding="utf-8"?>   
  2. <resources>   
  3.     <!-- 定義style -->   
  4.     <style name="myTextStyle" mce_bogus="1">        <item name="android:textSize">20px</item>   
  5.         <item name="android:textColor">#EC9237</item>   
  6.     </style>   
  7.     <style name="myTextStyle2" mce_bogus="1">       <item name="android:textSize">14px</item>   
  8.         <item name="android:textColor">#FF7F7C</item>   
  9.     </style>   
  10.  
  11.     <!-- 定義theme -->   
  12.     <style name="myTheme" mce_bogus="1">        <item name="android:windowNoTitle">true</item>   
  13.         <item name="android:textSize">14px</item>   
  14.         <item name="android:textColor">#FFFF7F7C</item>   
  15.     </style>   
  16.  
  17. </resources>  

引用方式:

  • <TextView   
  •     style="@style/myTextStyle2"     
  •     android:layout_width="fill_parent"    
  •     android:layout_height="wrap_content"    
  •     android:gravity="center_vertical|center_horizontal"   
  •     android:text="www.google.cn"   
  •     android:autoLink="all"   
  •     />
  1. @Override 
  2. public void onCreate(Bundle savedInstanceState) { 
  3.     super.onCreate(savedInstanceState); 
  4.     setTheme(R.style.myTheme); 
  5.     setContentView(R.layout.main);        
  6. }
在AndroidManifest.xml中應用Theme:
        為了在當前所有的Activity當中使用Theme,可以開啟AndroidManifest.xml 檔案,編輯<application>標籤,讓其包含android:theme屬性,值是一個主題的名字,例如:<application android:theme=”@style/NewTheme”>。
 
如果只是想讓程式當中的某個Activity擁有這個Theme,那麼可以修改<activity>標籤。Android中提供了幾種內建的資源,有好幾種Theme你可以切換而不用自己寫。比如可以用對話方塊Theme來讓你的Activity看起來像一個對話方塊。在manifest中定義,例如:<activity android:theme=”@android:style/Theme.Dialog”>
如果喜歡一個Theme,但是想做一些輕微的改變,只需要將這個Theme新增為parent。Android SDK為我們提供了很多現成的Theme,比如:我們修改Theme.Dialog Theme,繼承Theme.Dialog來生成一個新的Theme。<style parent=”@android:style/Theme.Dialog”

相關文章