Android 關於shape和selector和layer-list(UI 設計)

簡介

至關於 xml 實現的drawableandroid

Shape

做用:XML中定義的幾何形狀 位置:res/drawable/文件的名稱.xmlcode

使用的方法:

Java代碼中:R.drawable.文件的名稱 XML中:Android:background="@drawable/文件的名稱"xml

屬性:

<shape> Android:shape=["rectangle" | "oval" | "line" | "ring"] 其中rectagle矩形,oval橢圓,line水平直線,ring環形 <shape>中子節點的經常使用屬性:事件

  1. <gradient> 漸變
  • Android:startColor 起始顏色
  • Android:endColor 結束顏色
  • Android:angle 漸變角度,0從左到右,90表示從下到上,數值爲45的整數倍,默認爲0;
  • Android:type 漸變的樣式 liner線性漸變 radial環形漸變 sweep <solid > 填充
  • Android:color 填充的顏色
  1. <stroke >描邊
  • Android:width 描邊的寬度
  • Android:color 描邊的顏色
  • Android:dashWidth 表示'-'橫線的寬度
  • Android:dashGap 表示'-'橫線之間的距離
  1. <corners >圓角
  • Android:radius 圓角的半徑 值越大角越圓
  • Android:topRightRadius 右上圓角半徑
  • Android:bottomLeftRadius 右下圓角角半徑
  • Android:topLeftRadius 左上圓角半徑
  • Android:bottomRightRadius 左下圓角半徑
  1. <padding >填充
  • android:bottom="1.0dip" 底部填充
  • android:left="1.0dip" 左邊填充
  • android:right="1.0dip" 右邊填充
  • android:top="0.0dip" 上面填充

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/文件的名稱"ip

示例:
<?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>

layer-list(多個shape)

將多個圖片或上面兩種效果按照順序層疊起來utf-8

示例:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
      <bitmap android:src="@drawable/android_red"
        android:gravity="center" />
    </item>
    <item android:top="10dp" android:left="10dp">
      <bitmap android:src="@drawable/android_green"
        android:gravity="center" />
    </item>
    <item android:top="20dp" android:left="20dp">
      <bitmap android:src="@drawable/android_blue"
        android:gravity="center" />
    </item>
</layer-list>

:fa-pencil: 感受很像多個drawableci

三者能夠結合使用

<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>
相關文章
相關標籤/搜索