приложете градиент и сянка едновременно с различни цветове на 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, не можете да промените цвета на сянката. Необходимо е първо да зададете шейдър на нула и след това да приложите слой сянка и цвят на текста с различни цветове

person Nauman Ali Shah    schedule 30.12.2015
comment
можете ли да ми дадете един пример за тази стъпка? - person axita.savani; 25.03.2020

Проблемът е решен: можете да приложите промяна на сянката на приложен текст с текстура или градиент, който е

  1. Първо запазете шейдъра, ако вече сте го приложили върху текст.
  2. Второ, направете шейдъра нулев, така че ефектът на шейдъра да изчезне за малко време
  3. След това приложете слой със сянка върху текст
  4. Запазете слоя сянка
  5. Изчистване на слоя Shadow
  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