<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                #### 6.2.2 ShapeDrawable ShapeDrawable是一種很常見的Drawable,可以理解為通過顏色來構造的圖形,它既可以是純色的圖形,也可以是具有漸變效果的圖形。ShapeDrawable的語法稍顯復雜,如下所示。 <? xml version="1.0" encoding="utf-8"? > <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape=["rectangle" | "oval" | "line" | "ring"] > <corners android:radius="integer" android:topLeftRadius="integer" android:topRightRadius="integer" android:bottomLeftRadius="integer" android:bottomRightRadius="integer" /> <gradient android:angle="integer" android:centerX="integer" android:centerY="integer" android:centerColor="integer" android:endColor="color" android:gradientRadius="integer" android:startColor="color" android:type=["linear" | "radial" | "sweep"] android:useLevel=["true" | "false"] /> <padding android:left="integer" android:top="integer" android:right="integer" android:bottom="integer" /> <size android:width="integer" android:height="integer" /> <solid android:color="color" /> <stroke android:width="integer" android:color="color" android:dashWidth="integer" android:dashGap="integer" /> </shape> 需要注意的是<shape>標簽創建的Drawable,其實體類實際上是GradientDrawable,下面分別介紹各個屬性的含義。 android:shape 表示圖形的形狀,有四個選項:rectangle(矩形)、oval(橢圓)、line(橫線)和ring(圓環)。它的默認值是矩形,另外line和ring這兩個選項必須要通過<stroke>標簽來指定線的寬度和顏色等信息,否則將無法達到預期的顯示效果。 針對ring這個形狀,有5個特殊的屬性:android:innerRadius、android:thickness、android:innerRadiusRatio、android:thicknessRatio和android:useLevel,它們的含義如表6-2所示。 :-: 表6-2 ring的屬性值 ![](https://img.kancloud.cn/6e/31/6e31a7bb1960cd5ddac241c40ff4b0df_1347x369.png) `<corners> ` 表示shape的四個角的角度。它只適用于矩形shape,這里的角度是指圓角的程度,用px來表示,它有如下5個屬性: * · android:radius——為四個角同時設定相同的角度,優先級較低,會被其他四個屬性覆蓋; * · android:topLeftRadius——設定最上角的角度; * · android:topRightRadius——設定右上角的角度; * · android:bottomLeftRadius——設定最下角的角度; * · android:bottomRightRadius——設定右下角的角度。 `<gradient> ` 它與<solid>標簽是互相排斥的,其中solid表示純色填充,而gradient則表示漸變效果,gradient有如下幾個屬性: * android:angle——漸變的角度,默認為0,其值必須為45的倍數,0表示從左到右,90表示從下到上,具體的效果需要自行體驗,總之角度會影響漸變的方向; * · android:centerX——漸變的中心點的橫坐標; * · android:centerY——漸變的中心點的縱坐標,漸變的中心點會影響漸變的具體效果; * · android:startColor——漸變的起始色; * · android:centerColor——漸變的中間色; * · android:endColo——漸變的結束色; * · android:gradientRadius——漸變半徑,僅當android:type= "radial"時有效; * · android:useLevel——一般為false,當Drawable作為StateListDrawable使用時為true; * · android:type——漸變的類別,有linear(線性漸變)、radial(徑向漸變)、sweep(掃描線漸變)三種,其中默認值為線性漸變,它們三者的區別如圖6-3所示。 :-: ![](https://img.kancloud.cn/e3/f6/e3f67f413919c6dece45815f078f6b8a_1354x439.png) 圖6-3 漸變的類別,從左到右依次為linear、radial、sweep `<solid> ` 這個標簽表示純色填充,通過android:color即可指定shape中填充的顏色。 `<stroke> ` Shape的描邊,有如下幾個屬性: * · android:width——描邊的寬度,越大則shape的邊緣線就會看起來越粗; * · android:color——描邊的顏色; * · android:dashWidth——組成虛線的線段的寬度; * android:dashGap——組成虛線的線段之間的間隔,間隔越大則虛線看起來空隙就越大。 注意如果android:dashWidth和android:dashGap有任何一個為0,那么虛線效果將不能生效。下面是一個具體的例子,效果圖如圖6-4所示。 :-: ![](https://img.kancloud.cn/e4/5f/e45f6204f7f3e4902103a5eb40b3d442_594x592.png) 圖6-4 shape的描邊效果 <? xml version="1.0" encoding="utf-8"? > <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <solid android:color="#ff0000" /> <stroke android:dashGap="2dp" android:dashWidth="10dp" android:width="2dp" android:color="#00ff00" /> </shape> `<padding> ` 這個表示空白,但是它表示的不是shape的空白,而是包含它的View的空白,有四個屬性:android:left、android:top、android:right和android:bottom。 `<size> ` shape的大小,有兩個屬性:android:width和android:height,分別表示shape的寬/高。這個表示的是shape的固有大小,但是一般來說它并不是shape最終顯示的大小,這個有點抽象,但是我們要明白,對于shape來說它并沒有寬/高的概念,作為View的背景它會自適應View的寬/高。我們知道Drawable的兩個方法getIntrinsicWidth和getIntrinsicHeight表示的是Drawable的固有寬/高,對于有些Drawable比如圖片來說,它的固有寬/高就是圖片的尺寸。而對于shape來說,默認情況下它是沒有固有寬/高這個概念的,這個時候getIntrinsicWidth和getIntrinsicHeight會返回-1,但是如果通過`<size>`標簽來指定寬/高信息,那么這個時候shape就有了所謂的固有寬/高。因此,總結來說,`<size>`標簽設置的寬/高就是ShapeDrawable的固有寬/高,但是作為View的背景時,shape還會被拉伸或者縮小為View的大小。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看