1. 程式人生 > >(Android UI)shape、selector以及layer-list

(Android UI)shape、selector以及layer-list

hape和selector是Android UI設計中經常用到的,比如我們要自定義一個圓角Button,點選Button有些效果的變化,就要用到shape和selector。可以這樣說,shape和selector在美化控制元件中的作用是至關重要的。

1.Shape

簡介

作用:XML中定義的幾何形狀

位置:res/drawable/檔案的名稱.xml

使用的方法:

Java程式碼中:R.drawable.檔案的名稱

XML中:Android:background="@drawable/檔案的名稱"

屬性:

<shape>  Android:shape=["rectangle" | "oval" | "line" | "ring"]

其中rectagle矩形,oval橢圓,line水平直線,ring環形

<shape>中子節點的常用屬性:

<gradient>  漸變

Android:startColor  起始顏色

Android:endColor  結束顏色             

Android:angle  漸變角度,0從上到下,90表示從左到右,數值為45的整數倍預設為0;

Android:type  漸變的樣式 liner線性漸變 radial環形漸變 sweep

<solid >  填充

Android:color  填充的顏色

<stroke > 描邊

Android:width 描邊的寬度

Android:color 描邊的顏色

Android:dashWidth 表示'-'橫線的寬度

Android:dashGap 表示'-'橫線之間的距離

<corners > 圓角

Android:radius  圓角的半徑 值越大角越圓

Android:topRightRadius  右上圓角半徑

Android:bottomLeftRadius 右下圓角角半徑

Android:topLeftRadius 左上圓角半徑

Android:bottomRightRadius 左下圓角半徑

<padding >填充

android:bottom="1.0dip" 底部填充

android:left="1.0dip" 左邊填充

android:right="1.0dip" 右邊填充

android:top="0.0dip" 上面填充

2.Selector
簡介

根據不同的選定狀態來定義不同的現實效果

分為四大屬性:

android:state_selected是選中

android:state_focused是獲得焦點

android:state_pressed是點選

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

android:state_window_focused預設時的背景圖片

引用位置:res/drawable/檔案的名稱.xml

使用的方法:
Java程式碼中:R.drawable.檔案的名稱
XML中:Android:background="@drawable/檔案的名稱"
<?xml version="1.0" encoding="utf-8" ?>     
<selector xmlns:Android="http://schemas.android.com/apk/res/android">   
<!-- 預設時的背景圖片-->    
<item Android:drawable="@drawable/pic1" />      
<!-- 沒有焦點時的背景圖片 -->    
<item 
   Android:state_window_focused="false"      
   android:drawable="@drawable/pic_blue" 
   />     
<!-- 非觸控模式下獲得焦點並單擊時的背景圖片 -->    
<item 
   Android:state_focused="true" 
   android:state_pressed="true"   
   android:drawable= "@drawable/pic_red" 
   />   
<!-- 觸控模式下單擊時的背景圖片-->    
<item 
   Android:state_focused="false" 
   Android:state_pressed="true"   
   Android:drawable="@drawable/pic_pink" 
   />    
<!--選中時的圖片背景-->    
<item 
   Android:state_selected="true" 
   android:drawable="@drawable/pic_orange" 
   />     
<!--獲得焦點時的圖片背景-->    
<item 
   Android:state_focused="true" 
   Android:drawable="@drawable/pic_green" 
   />     
</selector> 

3.layer-list   

簡介:
將多個圖片或上面兩種效果按照順序層疊起來

例子:

<?xml version="1.0" encoding="UTF-8"?>  
 <layer-list  
   xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!--圖片1-->
     <item android:id="@+id/user_faceback_drawable"
           android:drawable="@drawable/faceback" />  
    <!--圖片2-->
     <item android:id="@+id/user_face_drawable" 
           android:drawable="@drawable/h001"   
           android:left="10.0dip" 
           android:top="18.0dip" 
           android:right="25.0dip" 
           android:bottom="35.0dip" />  
 </layer-list> 
<!--2個圖片的疊加-->

效果圖:

+=

以上三個標籤可以揉合到一塊兒來使用,所要實現的效果就是上面三種簡介的說明,比如下面這個例子:

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true"><layer-list>
            <item android:bottom="8.0dip"><shape>
                    <solid android:color="#ffaaaaaa" />
                </shape></item>
            <item><shape>
                    <corners android:bottomLeftRadius="4.0dip" android:bottomRightRadius="4.0dip" android:topLeftRadius="1.0dip" android:topRightRadius="1.0dip" />

                    <solid android:color="#ffaaaaaa" />

                    <padding android:bottom="1.0dip" android:left="1.0dip" android:right="1.0dip" android:top="0.0dip" />
                </shape></item>
            <item><shape>
                    <corners android:bottomLeftRadius="3.0dip" android:bottomRightRadius="3.0dip" android:topLeftRadius="1.0dip" android:topRightRadius="1.0dip" />

                    <solid android:color="@color/setting_item_bgcolor_press" />
                </shape></item>
        </layer-list></item>
    <item><layer-list>
            <item android:bottom="8.0dip"><shape>
                    <solid android:color="#ffaaaaaa" />
                </shape></item>
            <item><shape>
                    <corners android:bottomLeftRadius="4.0dip" android:bottomRightRadius="4.0dip" android:topLeftRadius="1.0dip" android:topRightRadius="1.0dip" />

                    <solid android:color="#ffaaaaaa" />

                    <padding android:bottom="1.0dip" android:left="1.0dip" android:right="1.0dip" android:top="0.0dip" />
                </shape></item>
            <item><shape>
                    <corners android:bottomLeftRadius="3.0dip" android:bottomRightRadius="3.0dip" android:topLeftRadius="1.0dip" android:topRightRadius="1.0dip" />

                    <solid android:color="@color/setting_item_bgcolor" />
                </shape></item>
        </layer-list></item>

</selector>


相關推薦

Android UIshapeselector以及layer-list

hape和selector是Android UI設計中經常用到的,比如我們要自定義一個圓角Button,點選Button有些效果的變化,就要用到shape和selector。可以這樣說,shape和selector在美化控制元件中的作用是至關重要的。 1.Shape

Android開發:shapeselectorlayer-list詳細說明

 <shape>和<selector>在Android UI設計中經常用到。比如我們要自定義一個圓角Button,點選Button有些效果的變化,就要用到<shape>和<selector>。可以這樣說,<shap

ElasticSearch最佳入門實踐六十建立修改以及刪除索引

1、建立索引 建立索引的語法 PUT /my_index { "settings": { ... any settings ... }, "mappings": { "type_one": { ... any mappings ...

shapeselectorlayer-list詳細說明

原文地址:http://blog.csdn.net/brokge/article/details/9713041 shape和selector是Android UI設計中經常用到的,比如我們要自定義一個圓角Button,點選Button有些效果的變化,就要用到shap

Android Style --圓角填充複用shapeselector

一門技術的基礎知識是掌握一門技術的起點和支撐。許多基礎知識需要我們不斷的回顧。 我們經常需要對TextView、Button的控制元件的樣式做一些修改,比如圓角、填充色、邊框色等 在對控制元件的形狀以

JAVA 畫圖板實現基本畫圖功能+界面UI界面實現

tor 做了 功能 分享圖片 重復 ble erase 選擇 width /*文章中用到的代碼只是一部分,需要源碼的可通過郵箱聯系我 [email protected]*/ 這段時間在學JAVA的swing界面開發,試著做了個畫圖板。實現了直線、曲線、噴槍、矩形、圓形、文字

JAVA 畫圖板實現基本畫圖功能+界面UI功能實現及重繪實現

cos 博客 tint ext min click 代碼 hints 按鈕 上篇博客中介紹了界面的實現方法,在這篇博客中將對每個按鈕的功能的實現進行講解並介紹重繪 首先肯定要添加事件監聽機制了,那麽問題來了,事件源對象是誰?需要添加什麽方法?事件接口是什麽? 1、我們需要點

【完全分散式Hadoop】HDFSYARN以及HA高可用概念介紹

一、HDFS-Hadoop分散式檔案系統 HDFS 採用Master/Slave的架構來儲存資料,這種架構主要由四個部分組成,分別為HDFS Client、NameNode、DataNode和Secondary NameNode。下面我們分別介紹這四個組成部分 1、Client:就

重溫CLR生成部署以及程式集

  將型別生成到模組中 class Program { static void Main(string[] args) { Console.WriteLine("Hi"); } }     &

資料結構與演算法Java描述-15稀疏矩陣以及稀疏矩陣的三元組實現

一、稀疏矩陣 對一個m×n的矩陣,設s為矩陣元素個數的總和,有s=m*n,設t為矩陣中非零元素個數的總和,滿足t<<s的矩陣稱作稀疏矩陣。符號“<<”讀作小於小於。簡單說,稀疏矩陣就是非零元素個數遠遠小於元素個數的矩陣。相對於稀疏矩陣來說,一個不稀疏的矩陣也稱作稠密矩陣。

Android學習之旅第一篇 SurfaceView的原理以及使用場景

為什麼要使用SurfaceView來實現動畫? 因為View的繪圖存在以下缺陷: View缺乏雙緩衝機制 當程式需要更新View上的影象時,程式必須重繪View上顯示的整張圖片 新執行緒無法直接更新View元件 SurfaceView的繪圖機制

c#基礎PublicPrivate以及Protected的區別

    被public修飾的成員可以被類的內部或者是外部直接訪問,而private成員只能被類的內部訪問,如果類內部的成員不希望被外界訪問,那麼可以將其宣告為private,這樣的話就可以對不希望被訪問的成員進行保護。正常情況下,在某一個類中,欄位(field)或者是成員變數

Android Studio在drawable資料夾建立xml的shapeselector等檔案

平時我們建立xml的shape型別檔案:選擇drawable——右擊選擇New——Drawable resource file; 隨後彈出了New Resource File頁面,但是卻沒有我們想要

Redis系列--安裝helloworld以及讀懂配置檔案

再開個redis系列,本系列打算不詳細講一系列的命名的了(會推薦別人寫的,人家寫的夠詳細了),我直接就是做redis方案提供,當然一開始還是講下helloworld和配置檔案好了。會逐步更新,歡迎關注。 文章結構:(1)安裝;(2)helloworld;(

Android模擬器Android Emulator 使用的快捷鍵引數注意事項

Android Emulator是一款功能非常齊全的模擬器,電話本、通話等功能都可進行模擬。甚至其內建的瀏覽器和Google Maps都可以聯網。使用者可以使用鍵盤輸入,單擊模擬器按鍵輸入,甚至還可以使用滑鼠單擊、拖動螢幕進行操作。 1.模擬器和真機的不同之處     * 不支援呼叫和接聽實際來電,但可以通過

判斷 Android rom是不是 EMUIEmotion UI

1、定義一個可以獲取系統屬性的方法 public static String getProperty(String key, String defaultValue) { String value = defaultValue;

函數式語言functional language定義函數式語言的種類以及為什麽函數式語言會流行起來的學習筆記

快捷 方式 語言 升級 clean 死鎖 並發執行 nbsp lis 一、什麽是函數式語言? 函數式語言一類程序設計語言,是一種非馮·諾伊曼式的程序設計語言。函數式語言主要成分是原始函數、定義函數和函數型。這種語言具有較強的組織數據結構的能力,可以

淺談獨立特徵independent features潛在特徵underlying features提取以及它們在網路安全中的應用

1. 關於特徵提取 0x1:什麼是特徵提取 特徵提取研究的主要問題是,如何在資料集未明確表示結果的前提下,從中提取出重要的潛在特徵來。和無監督聚類一樣,特徵提取演算法的目的不是為了預測,而是要嘗試對資料進行特徵識別,以此得到隱藏在資料背後的深層次意義。 回想一下聚類演算法的基本概念,聚類演算法將資料集中

教你高速高效接入SDK——Unity統一接入渠道SDKAndroid

方法名 nco 簡單 sdk ui主線程 unit onpause 提示 schema U8SDK的設計之初,就是為了可以支持各種遊戲引擎開發的遊戲,而不不過Android的原生平臺。眼下一大半的手遊,都是採用Unity3D和Cocos2dx開發,那麽這裏,我們就先來一

Gradle Build速度加快終極方法android studio

all ref bsp .net rms perm lan ase fcm Android Studio用起來越來越順手,但是卻發現Build的速度實在不敢恭維,在google和度娘了幾把(....)之後,大體就是分配更高的內存,步驟:Setting-->搜索grad