0

Я хочу знать, есть ли способ получить эффект расширения изображения сплошным цветом только с одной стороны.Как создать чертеж, который расширяется только по вертикали/горизонтали с помощью XML в Android

Предположит, вы начинаете с растровым изображением, как это: drawable-xxxhdpi/my_bitmap

и вы хотите настроить в XML рисует так, чтобы она расширяться и сжиматься по горизонтали сохраняя свои особенности, но по вертикали я хочу, чтобы добавить твердый «синий» цвет на сверху, не касаясь изображения таким образом, что если поместить в качестве фона виджета, который менее широко и выше я получаю это:

drawable/my_expandable_bitmap

Если 9patches предоставляется возможность просто сделать одну сторону расширения, это будет идеально. Но 9 патчей заставляют вас определять расширяемую область в обоих направлениях: это разрушит форму, которая у меня есть внизу.

Это то, что я могу достичь с 9patch: 9patch horizontal expansion

Это то, что я хочу (имейте в виду, я хочу, чтобы расширить столько, сколько нужно вертикально без масштабирования стрелки (стрелка всегда должна иметь такой же высота): wanted result

я могу получить это играть с макетом, но это не очень хорошо для выполнения

Наконец-то я могу написать свою собственную вытяжку, и я знаю, как это сделать, но это не так. работать с RemoteView и, когда не работая с Remote View, уродливо нужно установить его по коду.

Кто-нибудь знает способ создания этого эффекта только с XML-чертежом?

ответ

0

Вы можете сделать это с помощью 9patch, если я не ошибаюсь. Просто выберите небольшую часть изображения с левой стороны, чтобы развернуть по вертикали. Тогда нижняя часть вашего изображения не должна быть растянута, и это похоже на добавление сплошного цвета сверху.

EDIT

Это то, что я могу получить с 9patch, он получает выровнялась, но это не добавляет прямую линию, как ваш пример.

Оригинал

enter image description here

шире (на самом деле не показывают хорошо здесь, но не шире)

enter image description here

+0

нет вы не можете, 9patch сила вы должны определить прямоугольную область для расширения. Я имею в виду, что вы также должны дать ему минимум 1 пиксель для расширения по горизонтали, что приведет к разрушению функций изображения. –

+0

Так что вы не хотите, чтобы он изменялся горизонтально вообще? Потому что в вашем ответе вы говорите, что хотите, чтобы он сокращался и расширялся по горизонтали. Не следует ли использовать этот эффект, если вы выберете полную ширину в качестве зоны растяжения в 9patch? Если ваше изображение растягивается, не будучи определено как 9patch, ваша арка становится «сплющенной», а? – SnyersK

+0

Я хочу, чтобы он растягивался горизонтально, масштабируя.Это другое, чем растяжение, расширяющееся. если вы загружаете мою фотографию и пытаетесь сделать из нее 9patch, вы сразу поймете, о чем я говорю. Труднее объяснить словами, чем фактически визуализировать его (или это просто, что английский не является моим основным языком, и я не знаю, как лучше его объяснить) –