1. 程式人生 > >shape和selector和layer-list的(詳細說明)

shape和selector和layer-list的(詳細說明)

原文地址:http://blog.csdn.net/brokge/article/details/9713041

shape和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/檔案的名稱"
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <selectorxmlns:Android="http://schemas.android.com/apk/res/android">
  3. <!-- 預設時的背景圖片-->
  4. <itemAndroid:drawable="@drawable/pic1"/>
  5. <!-- 沒有焦點時的背景圖片 -->
  6. <item
  7.    Android:state_window_focused="false"
  8.    android:drawable="@drawable/pic_blue"
  9.    />
  10. <!-- 非觸控模式下獲得焦點並單擊時的背景圖片 -->
  11. <item
  12.    Android:state_focused="true"
  13.    android:state_pressed="true"
  14.    android:drawable"@drawable/pic_red"
  15.    />
  16. <!-- 觸控模式下單擊時的背景圖片-->
  17. <item
  18.    Android:state_focused="false"
  19.    Android:state_pressed="true"
  20.    Android:drawable="@drawable/pic_pink"
  21.    />
  22. <!--選中時的圖片背景-->
  23. <item
  24.    Android:state_selected="true"
  25.    android:drawable="@drawable/pic_orange"
  26.    />
  27. <!--獲得焦點時的圖片背景-->
  28. <item
  29.    Android:state_focused="true"
  30.    Android:drawable="@drawable/pic_green"
  31.    />
  32. </selector>


3.layer-list   

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

例子:

  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2.  <layer-list
  3.    xmlns:android="http://schemas.android.com/apk/res/android">
  4.     <!--圖片1-->
  5.      <itemandroid:id="@+id/user_faceback_drawable"
  6.            android:drawable="@drawable/faceback"/>
  7.     <!--圖片2-->
  8.      <itemandroid:id="@+id/user_face_drawable"
  9.            android:drawable="@drawable/h001"
  10.            android:left="10.0dip"
  11.            android:top="18.0dip"
  12.            android:right="25.0dip"
  13.            android:bottom="35.0dip"/>
  14.  </layer-list>
  15. <!--2個圖片的疊加-->

效果圖:

+=

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

  1. <selectorxmlns:android="http://schemas.android.com/apk/res/android">
  2.     <itemandroid:state_pressed="true"><layer-list>
  3.             <itemandroid:bottom="8.0dip"><shape>
  4.                     <solidandroid:color="#ffaaaaaa"/>
  5.                 </shape></item>
  6.             <item><shape>
  7.                     <cornersandroid:bottomLeftRadius="4.0dip"android:bottomRightRadius="4.0dip"android:topLeftRadius="1.0dip"android:topRightRadius="1.0dip"/>
  8.                     <solidandroid:color="#ffaaaaaa"/>
  9.                     <paddingandroid:bottom="1.0dip"android:left="1.0dip"android:right="1.0dip"android:top="0.0dip"/>
  10.                 </shape></item>
  11.             <item><shape>
  12.                     <cornersandroid:bottomLeftRadius="3.0dip"android:bottomRightRadius="3.0dip"android:topLeftRadius="1.0dip"android:topRightRadius="1.0dip"/>
  13.                     <solidandroid:color="@color/setting_item_bgcolor_press"/>
  14.                 </shape></item>
  15.         </layer-list></item>
  16.     <item><layer-list>
  17.             <itemandroid:bottom="8.0dip"><shape>
  18.                     <solidandroid:color="#ffaaaaaa"/>
  19.                 </shape></item>
  20.             <item><shape>
  21.                     <cornersandroid:bottomLeftRadius="4.0dip"android:bottomRightRadius="4.0dip"android:topLeftRadius="1.0dip"android:topRightRadius="1.0dip"/>
  22.                     <solidandroid:color="#ffaaaaaa"/>
  23.                     <padding

    相關推薦

    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

    shapeselectorlayer-list詳細說明

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

    Android Drawable資源中selectorlayer-listshape標籤詳解

    在實際開發中,我們經常會對控制元件的樣式進行一些修改已滿足我們的要求,這時候就會引用 Drawable 資源的樣式檔案。 1、StateListDrawable 資源         StateListDrawable 用於組織多個 Drawable 物件。當使用 Stat

    mysql5.7:mysql安裝基於SSL加密的主從復制詳細剖析

    mysql ssl db 數據 加密傳輸 小生博客:http://xsboke.blog.51cto.com 小生 Q Q:1770058260 -------謝謝您的參考,如有疑問,歡迎交流目錄:--------my

    線程進程的區別詳細

    最有 cpu調度 權限 sig 結束 們的 時間 自己 大於 1、線程的基本概念 概念:線程是進程中執行運算的最小單位,是進程中的一個實體,是被系統獨立調度和分派的基本單位,線程自己不擁有系統資源,只擁有一點在運行中必不可少的資源,但它可與同屬一個進程的其它線程共享

    總結下ListMap遍歷方式日常總結

    一.Map   public static void main(String[] args) { Map<Integer, Integer> map = new HashMap<>(); map.put(1, 2);

    centos 7 linux系統預設ftp安裝配置部署詳細講解

    轉載自:https://www.cnblogs.com/mujingyu/p/7677273.html 小生接觸 Linux 系統時間不長,想解決linux系統ftp安裝及部署問題,折騰了大半天,終於弄出來了,將各路 高手的配置方法綜合了一下,如有不對之處,歡迎各位看客指正,感謝! 一、

    linux下單節點叢集安裝zookeeper詳細步驟

    單節點安裝zookeeper  1、解壓zookeeper檔案 將下載到的zookeeper-3.4.6.tar.gz安裝檔案上傳到伺服器的/home目錄,解壓後進入根目錄建立data資料夾和logs資料夾 cd /usr/local

    關於map巢狀mapmap巢狀list轉載https://blog.csdn.net/mustbehard/article/details/17310043

    import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set;

    【Linux】centos 7 linux系統預設ftp安裝配置部署詳細講解

    小生接觸 Linux 系統時間不長,想解決linux系統ftp安裝及部署問題,折騰了大半天,終於弄出來了,將各路 高手的配置方法綜合了一下,如有不對之處,歡迎各位看客指正,感謝! 一、宣告:   本文采用作業系統版本: Centos 7 Linux系統     版本源:C

    power designer16.5 連線資料庫以及 Could not Initialize JavaVM! SQLSTATE = IM014錯誤的解決詳細圖文

    最近使用 power designer 時遇見了好多問題,下面分兩個方面說明。。。 首先使用power designer 怎麼連線資料庫的表等資料: 這裡面我MySQL資料庫來說: 新建一個物理模型:File —— New Model,選擇如下: 新建完成後工作空間已經有了

    pandas21 讀csv檔案read_csv12.迭代詳細 tcy

    例項-迭代2018/12/26  # 希望遍歷大檔案而不將整個檔案讀入記憶體指定chunksize逐塊讀取文字檔案 # read_csv或read_table返回值型別是可迭代物件TextFileReader # 指定iterator=True也將返回TextFileReader物件

    pandas21 讀csv檔案read_csv10.註釋空行詳細 tcy

    註釋和空行 2017/12/27 目錄: 第1部分:csv文字檔案讀寫 pandas 讀csv檔案read_csv(1.文字讀寫概要)https://mp.csdn.net/postedit/85289371 pandas 讀csv檔案read_csv(2.read_csv引數

    pandas21 讀csv檔案read_csv9.浮點轉換NA值詳細 tcy

    浮點轉換和NA值 2018/12/26 目錄: 第1部分:csv文字檔案讀寫 pandas 讀csv檔案read_csv(1.文字讀寫概要)https://mp.csdn.net/postedit/85289371 pandas 讀csv檔案read_csv(2.read

    pandas21 讀csv檔案read_csv8.方言分隔符詳細 tcy

    方言和分隔符 2018/12/26 目錄: 第1部分:csv文字檔案讀寫 pandas 讀csv檔案read_csv(1.文字讀寫概要)https://mp.csdn.net/postedit/85289371 pandas 讀csv檔案read_csv(2.read_csv引

    pandas21 讀csv檔案read_csv6.命名使用列詳細 tcy

    命名和使用列 2015/12/27 目錄: 第1部分:csv文字檔案讀寫 pandas 讀csv檔案read_csv(1.文字讀寫概要)https://mp.csdn.net/postedit/85289371 pandas 讀csv檔案read_csv(2.read_csv

    詳細圖示IDEA 配置Tomcat伺服器釋出web專案

    目錄 IDEA 配置Tomcat伺服器 IDEA 配置Tomcat伺服器 1.建立好web專案之後,現在需要配置伺服器,以Tomcat為例 2.選擇Run-Edit Configurations 3.點選右上角 + 號,選擇2處展開剩下選項

    Linux核心移植根檔案系統製作詳細步驟精講

    start_kernel是所有 Linux 平臺進入系統核心初始化後的入口函式,它主要完成剩餘的與硬體平臺相關的初始化工作,在進行一系列與核心相關的初始化後,呼叫第一個使用者程序-init 程序並等待使用者程序的執行,這樣整個 Linux 核心便啟動完畢。該函式所做的具體工作有:呼叫 setup_arch

    Hadoop偽分散式、完全分散式搭建測試詳細

    安裝 Hadoop 入門學習,快速搭建偽分散式環境。 注:需要下載的安裝包在文章底部,請自行獲取。 1. 修改主機名 vim /etc/hostname vim /etc/hosts reboot reboot 重啟主機使修改配置檔案生效,這裡我