применять градиент и тень одновременно с разными цветами в TextView Android

Я пытаюсь применить градиент и тень одновременно с разными цветами в TextView. Всякий раз, когда я применяю градиент (шейдер), он также перерисовывает тень того же цвета, что и градиент, но мне нужны и тень, и градиент с разными цветами. Вот часть моего кода для градиента и тени:

txtHello.setShadowLayer(shadowRadius, tempShadowX,tempShadowY, getShadowColorCode());
radialGradient = new RadialGradient(txtHello.getWidth()/2,txtHello.getHeight()/2,10,color,position,tile_mode);
txtHello.getPaint().setShader(radialGradient)

person Nauman Ali Shah    schedule 28.12.2015    source источник


Ответы (2)


Всякий раз, когда шейдер применяется к textView, вы не можете изменить цвет тени. Необходимо сначала установить для шейдера значение null, а затем применить теневой слой и цвет текста с разными цветами.

person Nauman Ali Shah    schedule 30.12.2015
comment
не могли бы вы привести мне один пример этого шага? - person axita.savani; 25.03.2020

Проблема решена: вы можете применить изменение тени текстурированного или градиентного текста, который

  1. Сначала сохраните шейдер, если вы уже применили его к тексту.
  2. Во-вторых, сделайте шейдер нулевым, чтобы эффект шейдера исчез, так что немного времени
  3. Затем примените теневой слой к тексту.
  4. Сохраните слой с тенью
  5. Очистить слой тени
  6. Применить шейдер
  7. затем сохраните шейдер

Теперь у вас есть текст с шейдером (градиентным/текстурированным), примененным к пользовательскому цвету.

    Shader shader = getPaint().getShader();
    getPaint().setShader(null);
    getPaint().setShadowLayer(20,  10, 10, Color.BLACK);
    super.onDraw(canvas);
    getPaint().clearShadowLayer();
    getPaint().setShader(shader);
    super.onDraw(canvas);
person Muhammad Sulaiman    schedule 28.09.2016