Android - как да нарисувате двупосочен градиент?

Започнах да си играя с градиенти и открих, че е доста лесно да начертая еднопосочен градиент (например отгоре надолу, отляво надясно или по диагонал...), но как да начертая двупосочен градиент? Имам предвид нещо подобно:

въведете описание на изображението тук

Голям син правоъгълник, това е двупосочен градиент - в горния десен ъгъл има синьо и вляво се трансформира в бяло, а в долната част се трансформира в черно. Как да нарисувам това?


person qkx    schedule 08.04.2013    source източник


Отговори (2)


Отговорът е: трябва да комбинирате 2 различни LinearGradients, например:

LinearGradient val = new LinearGradient(0, 0, 0, height, Color.WHITE, Color.BLACK, TileMode.CLAMP);
                LinearGradient sat = new LinearGradient(0, 0, width, 0, Color.WHITE, Color.HSVToColor(hsvCopy), TileMode.CLAMP);
                ComposeShader merged = new ComposeShader(val, sat, PorterDuff.Mode.MULTIPLY)

;

И разбира се важно:

[view with this background].setLayerType(View.LAYER_TYPE_SOFTWARE, null);

на телефони с 3.0 android и по-нова версия

person qkx    schedule 29.04.2013

Можете да направите нещо подобно, когато създавате своя gradient цвят:

 <gradient
    android:centerColor="@color/my_white"
    android:startColor="@color/my_darker_gray"
    android:endColor="@color/my_darker_gray"
    android:angle="45"/>

Посочете цвета, който желаете за start/end/center местоположението на gradient, и посочете ъгъла на превключване на цветовете.

person Emil Adz    schedule 08.04.2013
comment
това е нещо различно. Нямам нужда от градиент под ъгъл от 45 градуса, знам как да го направя. Имам нужда от това, което казах: двупосочен градиент, което означава в моя пример, че горният десен ъгъл ще бъде син и вляво ще се трансформира в бяло, а в долната част ще се трансформира в черно - person qkx; 08.04.2013
comment
добре, нямах опит с този вид градиентен цвят. но вие се обаждате да погледнете изходния код на този проект, за да видите как са го направили: code.google.com/p/color-picker-view/source/browse/trunk/src/ - person Emil Adz; 08.04.2013