Intereting Posts
Особенности дизайна Android: AsyncTask vs Service (IntentService?) Шифрование шифрования RSA в Android Есть ли наблюдатели, написанные в RecyclerView.Adapter, чтобы узнать, был ли изменен набор данных? Canvas: попытка использования переработанного растрового изображения android.graphics.Bitmap в android Установить выравнивание текста в центре в spinner в android Как установить конфигурацию USB по умолчанию для Android M на MTP, а не на «только зарядку»? Получение UnknownLengthHttpInputStream при получении InputStream из HttpURLConnection в android Единичное тестирование вещательного приемника? Уведомление GCM push работает после приложения Force Stop? Драйверы «мягкого режима» для Android-хоста Android USB для стандартных USB-устройств, совместимых со стандартами Как изменить идентификатор группы файла на корневом устройстве Android? Как предоставить пространство между текстом в текстовом виде? BitmapFactory OOM заставляет меня гайки Можно ли отображать многоцветный текст с помощью одного вызова Canvas.drawText ()? Кнопка входа в Google Android и кнопка Facebook sdk 4+

Использование gradientDrawable с более чем тремя цветами

Согласно тому, что я читал, вы можете использовать gradientDrawable и установить для него три цвета, например:

<gradient startColor="#00FF00" centerColor="#FFFF00" endColor="#FFFFFF"/> 

Но что, если я хочу больше трех цветов, и не только это, я хочу иметь возможность установить, куда поместить каждый (по массе / проценту)?

Возможно ли использование API или я должен сделать свой собственный настраиваемый? Если мне нужно сделать свой собственный индивидуальный чертеж, как мне это сделать?

Solutions Collecting From Web of "Использование gradientDrawable с более чем тремя цветами"

Поместите этот код в свой метод onCreate ():

 ShapeDrawable.ShaderFactory shaderFactory = new ShapeDrawable.ShaderFactory() { @Override public Shader resize(int width, int height) { LinearGradient linearGradient = new LinearGradient(0, 0, width, height, new int[] { 0xFF1e5799, 0xFF207cca, 0xFF2989d8, 0xFF207cca }, //substitute the correct colors for these new float[] { 0, 0.40f, 0.60f, 1 }, Shader.TileMode.REPEAT); return linearGradient; } }; PaintDrawable paint = new PaintDrawable(); paint.setShape(new RectShape()); paint.setShaderFactory(shaderFactory); 

И использовать его в качестве фона.

Вы можете добавить более трех цветов в xml, создав слои. Но в XML это довольно сложно.

Я думаю, что ниже это возможные решения.

  • Вы можете создавать несколько фигур с градиентами и формировать большую фигуру.
  • Вы можете создать свой собственный GradientDrawable, расширив GradientDrawable Class относящийся к приведенному ниже документу.

  • Градиентная чертежная документация