Android shape 的詳解及使用

a15838319826發表於2017-09-04

一,概述

我們在android開發中經常要用到圖片,而一些簡單的圖片我們完全可以用shape形狀drawable資源代替,使用shape有一個好處就是可以減小我們apk的大小,因為同樣的效果,shape比圖片更節省空間,好了,我們廢話不多說,下面進入正題。

二,shape初識

shape是android drawable資源中的一個重要的角色,drawable資源覆蓋面廣,它不僅代表圖片,它可以是一個顏色,一個形狀,因為shape其簡單實用,下面我們來看一下shape形狀的分類:

rectangle:

rectangle代表者矩形,它是shape預設的形狀型別,即如果我們不在shape的android:shape屬性指定其型別時,預設是矩形,用它我們可以畫一個矩形,圓角矩形,具體在下面會說道

oval:

ovel,橢圓,用它可以畫橢圓,圓

line:

水平線,在使用該形狀的時候,我們得給它指定stroke元素指定其寬度,不然在使用該形狀的時候會報空指標異常

ring:

環形

下面我們來用上面說道的各種形狀畫圖形,打造各種簡單的形狀

三,shape的使用

下面看看用shape畫的一些簡單的圖形,之後我會按照圖形說一下shape的各種屬性以及一些要注意的問題:



上面的一些圖形都是用shape畫出來的,第一二行的是矩形(rectangle)的一些簡單的形狀

我們來看一下第一二行的圖形實現的xml程式碼,其他圖形的就不貼了,不然文章篇幅太大了:

  • 第一個
  • <shape xmlns:android="http://schemas.android.com/apk/res/android" >
        <!-- 設定固定填充色 -->
        <solid android:color="#f00" />

        <size android:width="60dp" android:height="30dp"/>

    </shape>
  • 第二個
  • <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
        <size android:width="60dp" android:height="30dp"/>
        <!-- 設定漸變填充色 -->
        <gradient android:startColor="#00f" android:centerColor="#0f0" android:endColor="#f00"></gradient>
    </shape>
  • 第三個
  • <shape xmlns:android="http://schemas.android.com/apk/res/android" >

        <size android:width="60dp" android:height="30dp"/>
        <!-- 設定描邊 -->
        <stroke android:width="2dp" android:color="#f00" ></stroke>

    </shape>
  • 第四個
  • <shape xmlns:android="http://schemas.android.com/apk/res/android" >
        <size android:width="60dp" android:height="30dp"/>
        <!-- 設定描邊 -->
        <stroke android:width="2dp" android:color="#f00" android:dashWidth="5dp" android:dashGap="5dp"></stroke>
    </shape>
  • 第五個
    <shape xmlns:android="http://schemas.android.com/apk/res/android" 
        >
    
        <size android:width="60dp" android:height="30dp"/>
        <!-- 設定描邊 -->
        <stroke android:width="2dp" android:color="#f00" android:dashWidth="5dp" android:dashGap="5dp"></stroke>
    
        <corners android:radius="15dp"/>
    </shape>

相關文章