国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android樣式的開發:layer-list實例詳解

2019-12-12 05:17:33
字體:
來源:轉載
供稿:網友

上圖Tab的背景效果,和帶陰影的圓角矩形,是怎么實現的呢?大部分的人會讓美工切圖,用點九圖做背景。但是,如果只提供一張圖,會怎么樣呢?比如,中間的Tab背景紅色底線的像素高度為4px,那么,在mdpi設備上顯示會符合預期,在hdpi設備上顯示時會細了一點點,在xhdpi設備上顯示時會再細一點,在xxhdpi上顯示時又細了,在xxxhdpi上顯示時則更細了。因為在xxxhdpi上,1dp=4px,所以,4px的圖,在xxxhdpi設備上顯示時,就只剩下1dp了。所以,為了適配好各種分辨率,必須提供相應的多套圖片。如果去查看android的res源碼資源,也會發現,像這種Tab的背景點九圖,也根據不同分辨率尺寸提供了不同尺寸的點九圖片。

但是,在這個demo里,都沒有用到任何實際的圖片資源,都是用shape、selector,以及本篇要講解的layer-list完成的。

使用layer-list可以將多個drawable按照順序層疊在一起顯示,像上圖中的Tab,是由一個紅色的層加一個白色的層疊在一起顯示的結果,陰影的圓角矩形則是由一個灰色的圓角矩形疊加上一個白色的圓角矩形。先看下代碼吧,以下是Tab背景的代碼:

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">  <!-- 第一種加載方式 -->  <!--<item android:drawable="@drawable/bg_tab_selected" android:state_checked="true" />-->  <!-- 第二種加載方式 -->  <item android:state_checked="true">    <layer-list>      <!-- 紅色背景 -->      <item>        <color android:color="#E4007F" />      </item>      <!-- 白色背景 -->      <item android:bottom="4dp" android:drawable="@android:color/white" />    </layer-list>  </item>  <item>    <layer-list>      <!-- 紅色背景 -->      <item>        <color android:color="#E4007F" />      </item>      <!-- 白色背景 -->      <item android:bottom="1dp" android:drawable="@android:color/white" />    </layer-list>  </item></selector>

以下是帶陰影的圓角矩形:

<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android">  <!-- 灰色陰影 -->  <item    android:left="2dp"    android:top="4dp">    <shape>      <solid android:color="@android:color/darker_gray" />      <corners android:radius="10dp" />    </shape>  </item>  <!-- 白色前景 -->  <item    android:bottom="4dp"    android:right="2dp">    <shape>      <solid android:color="#FFFFFF" />      <corners android:radius="10dp" />    </shape>  </item></layer-list>

從上面的示例代碼可以看到,layer-list可以作為根節點,也可以作為selector中item的子節點。layer-list可以添加多個item子節點,每個item子節點對應一個drawable資源,按照item從上到下的順序疊加在一起,再通過設置每個item的偏移量就可以看到陰影等效果了。layer-list的item可以通過下面四個屬性設置偏移量:

  1. android:top 頂部的偏移量
  2. android:bottom 底部的偏移量
  3. android:left 左邊的偏移量
  4. android:right 右邊的偏移量

這四個偏移量和控件的margin設置差不多,都是外間距的效果。如何不設置偏移量,前面的圖層就完全擋住了后面的圖層,從而也看不到后面的圖層效果了。比如上面的例子,Tab背景中的白色背景設置了android:bottom之后才能看到一點紅色背景。那么如果偏移量設為負值會怎么樣呢?經過驗證,偏移超出的部分會被截掉而看不到,不信可以自己試一下。有時候這很有用,比如當我想顯示一個半圓的時候。

另外,關于item的用法,也做下總結:

1.根節點不同時,可設置的屬性是會不同的,比如selector下,可以設置一些狀態屬性,而在layer-list下,可以設置偏移量;

2.就算父節點同樣是selector,放在drawable目錄和放在color目錄下可用的屬性也會不同,比如drawable目錄下可用的屬性為android:drawable,在color目錄下可用的屬性為android:color;

3.item的子節點可以為任何類型的drawable類標簽,除了上面例子中的shape、color、layer-list,也可以是selector,還有其他沒講過的bitmap、clip、scale、inset、transition、rotate、animated-rotate、lever-list等等。

結尾

layer-list篇就講到這里了,示例代碼也已經更新放上github,地址:

https://github.com/keeganlee/kstyle.git

以上就是對Android Layer-list 樣式的示例整理,后續繼續補充相關資料,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新兴县| 虹口区| 漳平市| 宜昌市| 大名县| 罗山县| 新郑市| 玉林市| 桐城市| 柏乡县| 遂平县| 平阳县| 深圳市| 沁水县| 延津县| 定安县| 中卫市| 无为县| 霍山县| 双城市| 铜山县| 安溪县| 新乡市| 闻喜县| 嵊州市| 邢台市| 乐陵市| 巴林右旗| 富蕴县| 安顺市| 仁化县| 中西区| 湾仔区| 抚宁县| 遵化市| 富顺县| 安庆市| 志丹县| 昆明市| 巴彦淖尔市| 建瓯市|