2012-01-04 124 views
9

我想創建這樣的背景下底欄:兩種顏色的帶狀背景?

enter image description here

我目前使用下面的代碼:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 


    <item> 
     <shape> 
      <gradient android:endColor="#000000" android:startColor="#696969" 
       android:centerColor="#696969" android:angle="270" /> 
      <stroke android:color="#696969" /> 
      <padding android:left="2dp" android:top="3dp" android:right="2dp" 
       android:bottom="3dp" /> 
     </shape> 
    </item> 
</selector> 

但輸出看起來像這樣...:

enter image description here

如何獲取,雙色backgro和? 請建議.. 謝謝

+0

檢查此.. http://stackoverflow.com/a/9393867/1188978 – SkyWalker 2013-12-03 12:11:55

回答

12

正如其他人指出的那樣,在這種情況下九塊卡片將是理想的(並且不會佔用太多內存)。解決XML並不是最佳選擇。下面是一些你可以嘗試:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:bottom="20dp"> 
     <shape android:shape="rectangle" > 
      <size android:height="20dp" /> 
      <solid android:color="#ff0000" /> 
     </shape> 
    </item> 

    <item android:top="20dp"> 
     <shape android:shape="rectangle" > 
      <size android:height="20dp" /> 
      <solid android:color="#0000ff" /> 
     </shape> 
    </item> 
</layer-list> 

在這種情況下,你的觀點被認爲是beeing 40dp高

這是一個圖層列表,在不同顏色的兩個街區。 XML方法的問題在於,無法將塊的高度調整爲百分比(= 50%)。您必須在dp中使用實際視圖大小的一半。這意味着每次更改視圖高度/佈局時都必須調整此可繪製對象。一個ninepatch會自動調整到這個。

0

您可以創建一個圖像並沿x座標重複。

4

創建gradient.xml在/ RES /繪製:

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <gradient 
     android:startColor="#FFFFFF" 
     android:endColor="#00000000"/>  
</shape> 

,並在/ RES您的main.xml佈局文件/ layout:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/gradient"> 
</LinearLayout> 

您可以指定th通過替換android:startColorandroid:endColor來代替android:角度值和開始/結束顏色來改變角度。

+0

45角?這不會產生nibha所要求的。 – TryTryAgain 2012-01-04 13:05:00

+0

但我們需要使用開始顏色和結束顏色.. \ – 2012-01-04 13:12:00

+0

http://www.dibbus.com/2011/02/gradient-buttons-for-android/通過這個代碼,它可能會幫助你.... – 2012-01-04 13:21:54

1

我找到了一個解決方案給你,如果你願意放棄使用XML來繪製...

從圖形:Gradients and shadows on buttons

這就是你想要的!但不同的顏色,大小,並作爲一個按鈕...

Bitmap bmResult = Bitmap.createBitmap(buttonWidth, buttonHeight, Bitmap.Config.ARGB_8888); 
    Canvas canvas = new Canvas(bmResult); 
    Paint paint = new Paint(); 
    paint.setShader(new LinearGradient (0, 0, 0, bmResult.getHeight()/2, 0xFF284560, 0xFF284060, TileMode.MIRROR)); 
    canvas.drawPaint(paint); 
    paint.setShader(new LinearGradient (0, 0, 0, bmResult.getHeight()/2, 0x55FFFFFF, 0x22FFFFFF, TileMode.CLAMP)); 
    paint.setMaskFilter(new BlurMaskFilter(3, BlurMaskFilter.Blur.NORMAL)); 
    canvas.drawRect(0, 0, bmResult.getWidth(), bmResult.getHeight()/2, paint) 

...改變顏色,當然。

我不確定您是否可以使用XML佈局並單獨引用此Java Button,或者您將不得不最終使用Java完成整個佈局而不是XML ......這將是另一個問題所以。

希望有所幫助。雖然,這可能是我的無知,但我也建議去9patch路線。

P.S.我是一個全新的Java和使用位圖,所以我會發佈一個更全面的解決方案爲您的情況,如果我把它全部搞清楚。