2011-02-10 6 views
1

Я пытаюсь добиться от кода следующим образом: (не публиковать изображения Unfortunatelly)Android градиента рельефного эффект

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

Проблема заключается в том, что я могу использовать только EmbossMaskFilter от Android, чтобы поднять поверхность, чтобы приблизить ее к глазу пользователя, но я не знаю, как реализовать обратное. Кто-нибудь может мне помочь?

спасибо.

ответ

1

Используйте композитные вытягиваемые или растягивающиеся слои.

Чтобы создать вытяжку с закругленными углами и градиент внутри, использовать что-то вроде этого:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 
    <corners android:radius="10dp"/> 
    <gradient android:startColor="@color/gradientstart" android:endColor="@color/gradientend" android:angle="315"/> 
</shape> 

Создать два таких и поставить вводимый коэффициент их друг на друг, чтобы создать нужный эффект.

+0

Спасибо за подсказку, но это не помогает мне получить эффект выталкивания подушки (гравировка) для внутреннего круга, который я ищу. – Miha

0

Если вы не используете довольно много элементов списка слоев в качестве выпадающего, вы, вероятно, не получите эффект, который вы ищете легко с помощью XML-чертежей. Лучшим решением было бы создать изображение с 9 патчами. Посмотрите, как он работает с draw9patch.com, который является инструментом для создания 9 патч-изображений со стандартных изображений.

Документация NinePatch: here.

В случае, если вы все еще действительно хотите использовать XML вы все еще вводимый коэффициент можно добиться эффекта (хотя производительность может принять удар), используя layer-list с несколькими градиентов сложенных наверх друг от друга.