полосатый фон с двумя цветами? - PullRequest
12 голосов
/ 04 января 2012

Я пытаюсь создать нижнюю панель с таким фоном:

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

Как получить это, двухцветный фон? Пожалуйста, предложите .. Спасибо

Ответы [ 5 ]

21 голосов
/ 04 января 2012

Как отмечали другие, в этой ситуации идеально подойдет девятипатч (и не займет много памяти) .Работа с 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>

в этом случае ваш вид считается имеющим высоту 40dp

Это список слоев с двумя блоками разных цветов.Проблема с подходом XML заключается в том, что вы не можете отрегулировать высоту блоков в процентах (= 50%).Вы должны использовать половину фактического размера представления в dp.Это означает, что вы должны настраивать этот чертеж каждый раз, когда вы меняете высоту / макет вашего вида.Ninepatch приспособится к этому автоматически.

6 голосов
/ 04 января 2012

Создать файл Gradient.xml в / res / drawable:

<?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>

и в файле макета main.xml в / res / 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>

Вы можете указать уголзаменив андроид: значение угла и начальный / конечный цвет заменив android:startColor и android:endColor.

1 голос
/ 04 января 2012

Я нашел решение для вас, если вы готовы отказаться от использования XML для его рисования ...

Рисование от: Градиенты и тени на кнопках

Это то, что ты хочешь!Но разные цвета, размер и как кнопка ...

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 в одиночку, или вам придется в конечном итоге создать весь макет в Java, а не XML ... это был бы другой вопрос для SO.

Надеюсь, что это поможет.Хотя это может быть моим невежеством, но я бы также порекомендовал пойти по маршруту 9 патчей.

PS Я абсолютно новичок в Java и использую растровые изображения, поэтому я опубликую более полное решение для вашего случая, если я все выясню.

1 голос
/ 04 января 2012

Вы можете использовать изображение 9png в качестве фона.
см http://developer.android.com/guide/developing/tools/draw9patch.html

изменить:
Вы можете следовать этому уроку http://android10.org/index.php/articlesother/279-draw-9-patch-tutorial

0 голосов
/ 04 января 2012

Вы можете просто создать его изображение и повторить его по координате х.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...