Самый простой для развертывания - это, вероятно, драйвер типа 4 или тонкий драйвер. Я говорю, что это самый простой из-за того, что он не полагается на какие-либо собственные библиотеки Oracle или клиентскую установку. Он легко доступен из Oracle .
Я обнаружил что все это можно довольно легко сделать в одном файле. Поместите что-то вроде следующего кода в файл с именем custom_button.xml
, а затем установите background = "@ drawable / custom_button"
в представлении кнопок:
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape>
<gradient
android:startColor="@color/yellow1"
android:endColor="@color/yellow2"
android:angle="270" />
<stroke
android:width="3dp"
android:color="@color/grey05" />
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<item android:state_focused="true" >
<shape>
<gradient
android:endColor="@color/orange4"
android:startColor="@color/orange5"
android:angle="270" />
<stroke
android:width="3dp"
android:color="@color/grey05" />
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<item>
<shape>
<gradient
android:endColor="@color/blue2"
android:startColor="@color/blue25"
android:angle="270" />
<stroke
android:width="3dp"
android:color="@color/grey05" />
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
</selector>
Майк, возможно, тебя заинтересуют цветные фильтры.
Пример:
button.getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0xFFAA0000));
попробуйте это, чтобы получить желаемый цвет.
Следуя ответу Томаша, вы также можете программно установить оттенок всей кнопки, используя режим умножения PorterDuff. Это изменит цвет кнопки, а не только оттенок.
Если вы начнете со стандартной кнопки с серым оттенком:
button.getBackground().setColorFilter(0xFFFF0000, PorterDuff.Mode.MULTIPLY);
даст вам кнопку с красным затенением,
button.getBackground().setColorFilter(0xFF00FF00, PorterDuff.Mode.MULTIPLY);
даст вам кнопку с зеленым затенением и т. Д., Где первое значение - цвет в шестнадцатеричном формате.
Он работает путем умножения текущего значения цвета кнопки на значение вашего цвета. Я уверен, что с этими режимами можно сделать гораздо больше.