Подтвердить что ты не робот

Вертикально-полосатый фон в XML?

Я хочу установить фон "Просмотр", который является обычной сеткой вертикальных полос. Полосы чередуются между двумя цветами. (Например, в одной строке может быть 6 пикселей светло-серого цвета, а затем 2 пикселя темно-серого цвета, повторяющихся для заполнения ширины.)

Это достаточно просто сделать, используя Bitmap (либо как ресурс, либо сгенерированный в коде). Например:

ShapeDrawable bg = new ShapeDrawable(new RectShape());
int[] pixels = new int[] { 0xFFCCCCCC, 0xFFCCCCCC, 0xFFCCCCCC,
    0xFFCCCCCC, 0xFFCCCCCC, 0xFFCCCCCC, 0xFF999999, 0xFF999999};
Bitmap bm = Bitmap.createBitmap(pixels, 8, 1, Bitmap.Config.ARGB_8888);
Shader shader = new BitmapShader(bm,
    Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
bg.getPaint().setShader(shader);
view.setBackgroundDrawable(bg);

Есть ли способ сделать это строго как XML-чертежи, не используя ресурсы растровых изображений?

4b9b3361

Ответ 1

Несчастливо, но я уверен, что ответ отрицательный.

Из трех требуемых задач, только два могут быть выполнены без какого-либо кода. Вы можете создать основу шаблона полос как <layer-list> двух или более элементов <shape>. Вы также можете создать шаблон повторяющейся плитки с помощью <bitmap> XML drawable. Трюк - это требуемый средний шаг: <bitmap> не будет принимать другое значение в качестве исходного значения (только изображение), поэтому нет возможности связать эти два без вмешательства небольшого кода для создания растрового изображения (например, то, что у вас есть написано).

Мне бы очень хотелось, чтобы режимы черепицы применялись и к другим чертежам, и +1 для того, чтобы дать мне образец создания шаблона полностью в коде:)