[Android UI] Shape詳解 (GradientDrawable)

轉載自:http://blog.csdn.net/feng88724/article/details/6398193
android

 

在Android開發過程當中,常常須要改變控件的默認樣式, 那麼一般會使用多個圖片來解決。不過這種方式可能須要多個圖片,好比一個按鈕,須要點擊時的式樣圖片,默認的式樣圖片。 這樣就容易使apk變大。學習

 

   那麼除了使用drawable這樣的圖片外,還有其餘方法嗎?spa

 

   本次就談一下自定義圖形shape,Android上支持如下幾種屬性shape、gradient、stroke、corners、padding、solid等。.net

 

先來看兩個例子:code

<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient android:startColor="#FFFF0000"
        android:endColor="#80FF00FF"
        android:angle="270" />
    <padding android:left="50dp"
        android:top="20dp" android:right="7dp"
        android:bottom="7dp" />
    <corners android:radius="8dp" />
</shape>

效果:xml

<?xml version="1.0" encoding="UTF-8"?>
<shape android:shape="rectangle"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#b4000000" />
    <stroke android:width="2.0dip"
        android:color="#b4ffffff"
        android:dashWidth="3.0dip"
        android:dashGap="0.0dip" />
    <padding android:left="7.0dip"
        android:top="7.0dip" android:right="7.0dip"
        android:bottom="7.0dip" />
    <corners android:radius="8.0dip" />
</shape>

效果:對象

 

總結一下Shape的全部子屬性,如圖:blog

 

單說明一下:圖片

 

gradient   -- 對應顏色漸變。 startcolor、endcolor就很少說了。 android:angle 是指從哪一個角度開始變。ip

solid      --  填充。

stroke   --  描邊。

corners  --  圓角。

padding   -- 定義內容離邊界的距離。 與android:padding_left、android:padding_right這些是一個道理。

 ------------------------------------------------------------------

上面這些不是本講重點。 本講的重點是這些xml中屬性,與Java類的對應關係, 以及如何使用Java類寫出上面同樣的效果!

 首先來看對應關係:

 在官方API介紹中:

ShapeDrawable :This object can be defined in an XML file with the <shape> element(這個對象能夠用<shape>元素在xml文件中定義)

GradientDrawable :This object can be defined in an XML file with the <shape> element(這個對象能夠用<shape>元素在xml文件中定義)

 

 [父節點] shape   --   ShapeDrawable

 [子節點] gradient   --  

 [子節點] padding   --   

 [子節點] corners   --   setCornerRadius 、setCornerRadii 

 [子節點] solid       --    

 [子節點]  stroke   --   setStroke 

 [子節點]  size --   setSize

 


 附件對android.graphics.drawable.Drawable包下的類進行了一下總結。 包括類與XML屬性的對應關係。 感受很不錯! 須要的各位能夠學習一下。

 

下載地址:  http://download.csdn.net/source/3251635

相關文章
相關標籤/搜索