日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Android?LayerDrawable超詳細講解_Android

作者:broadview_java ? 更新時間: 2022-12-06 編程語言

1. 前言

Android LayerDrawble 包含一個Drawable數組,系統將會按照這些Drawable對象的數組順序來繪制他們,索引最大的 Drawable 對象將會被繪制在最上面。

LayerDrawable對象的xml文件的根元素是<layer-list>, 該元素內部包含多個<item>。item標簽內部可以指定drawable、id和位置相關屬性。

layer-list可以進一步擴展對shape和selector的使用,對layer-list可以這樣簡單的來理解,使用它可以將多個圖片疊加起來,可以將用shape和selector實現的效果疊加起來

2. 實例

該控件比較使用比較簡單,我們直接通過例子來演示

activity_main.xml ,有三個ImageView 對象:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical">
    <ImageView
        android:layout_marginTop="10dp"
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:background="@drawable/layer_test"
        />
    <ImageView
        android:layout_marginTop="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/layer_icon"
        />
    <ImageView
        android:layout_marginTop="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/layer_icon2"
        />
</LinearLayout>

1. 第一個 ImageView 我們定義好 寬度和高度 150dp, 看看里面的內容:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="#0000ff"/>
        </shape>
    </item>
    <item android:left="15dp" android:end="15dp" android:top="15dp" android:bottom="15dp">
        <shape android:shape="oval">
            <size android:height="10dp" android:width="10dp"/>
            <solid android:color="#00ff00"/>
        </shape>
    </item>
    <item android:left="45dp" android:end="45dp" android:top="45dp" android:bottom="45dp">
        <shape android:shape="rectangle">
            <solid android:color="#ff0000"/>
        </shape>
    </item>
</layer-list>

說說 item的4個屬性,作用同控件中的margin屬性

  • android:top 頂部的偏移量
  • android:bottom 底部的偏移量
  • android:left 左邊的偏移量
  • android:right 右邊的偏移量

我們定義的ImageView的寬高150dp ,

第一個item 矩形框 在最底層,鋪滿整個寬高

第二個item為圓形,距離ImageView容器的top bottom left right 邊距離為 15dp

注意:圓形定義的<size android:height="10dp" android:width="10dp"/>這里是不生效的,是以容器寬高150dp為基準, 上下左右偏移15dp后繪制出來

第三個item為矩形,距離ImageView容器的top bottom left right 邊距離為 45dp

效果圖:

2. 第2個ImageView,不定義寬高,讓里面圖片去填充顯示:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <size android:width="50dp" android:height="50dp"/>
            <solid android:color="#0000ff"/>
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle">
            <size android:width="80dp" android:height="80dp"/>
            <solid android:color="#ff0000"/>
        </shape>
    </item>
    <item android:left="15dp" android:end="15dp" android:top="15dp" android:bottom="15dp">
        <shape android:shape="oval">
            <solid android:color="#00ff00"/>
        </shape>
    </item>
</layer-list>

第一個item為矩形,寬高為 50dp

第二個item也為矩形, 寬高為80dp 那么根據顯示規則,后面的item顯示在上面,所以整個ImageView的寬高變為 80dp了

第三個item為圓形,通過第一和第二個顯示規則,此時的ImageView的寬高為80dp, 然后距離ImageView容器的top bottom left right 邊距離15dp 繪制出來

效果圖:

3. 第三種,通過層視圖顯示陰影效果

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <size
                android:width="100dp"
                android:height="20dp"></size>
            <solid android:color="#000"></solid>
            <corners android:radius="10dp"></corners>
        </shape>
    </item>
    <item android:left="3dp" android:bottom="3dp">
        <shape android:shape="rectangle">
            <solid android:color="#f7f6f6"></solid>
            <corners android:radius="10dp"></corners>
        </shape>
    </item>
</layer-list>

效果圖:

原文鏈接:https://blog.csdn.net/u012514113/article/details/127613027

欄目分類
最近更新