Intereting Posts
ListView с первым видимым элементом, имеющим разный макет Как создать интерактивную карту на Android Добавление expandableListView в NavigationView MonoDroid: восстановление необработанного исключения Как получить температуру процессора в Android Почему OnClickListener в ViewHolder не работает? Android.mk относительные или абсолютные пути? Приложение Android имеет красный восклицательный знак в Eclipse после импорта библиотеки Facebook Android, приостанавливая и возобновляя обратные вызовы обработчиков Удаление фонового рисунка в андроиде Синхронизация данных Android создает «Исходные папки, созданные в неправильном месте» В EditText существует ли способ отключить автокоррект на пролете? Android получает программно созданную ширину представления Студия Android, использующая> 100% процессор во все времена – фоновые процессы не работают Android: Как заполнить RelativeLayout до полной ширины экрана?

Использование 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 относящийся к приведенному ниже документу.

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