2013-07-23 1 views
0

Я работаю над своим андроидным приложением, но есть небольшая проблема, с которой я сталкиваюсь, что ограничивает ее функциональность. Я использую андроид-холст для рисования анимации на экране (для живых обоев), но всякий раз, когда я пытаюсь рисовать, используя Canvas.drawColor() с цветом, например #01ffffff (последние две цифры являются альфа-уровнем), холст становится темнее! Как это может быть? Я белую над холстом, хотя и очень прозрачный белый, но все же белый. Как это может стать темнее?Рисование белым на холсте андроида делает холст темнее

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

Мой код:

public class MyWallpaperService extends WallpaperService { 

    ... 

    private void draw() { 

     handler.removeCallbacks(drawRunner); 


     SurfaceHolder holder = getSurfaceHolder(); 
     Canvas canvas = null; 
     if (holder.getSurface().isValid()) { 
      if (visible) { 
       handler.postDelayed(drawRunner, refreshRate); 
      } 
      try { 
       canvas = holder.lockCanvas(); 
       if (canvas != null) { 

        canvas.drawColor(backgroundColor); 
       } 

      } finally { 
       if (canvas != null) 
        try{ 
        holder.unlockCanvasAndPost(canvas); 
        } catch (Exception e) { 
         e.printStackTrace(); 
        } 

      } 

     } 
       ... 
    } 

Метод draw() используется для рисования моих обоев на экран и в нем содержится призыв к canvas.drawColor(). Переменная с именем backgroundColor инициализируется цветом #01ffffff. Так кто-нибудь знает, почему это происходит, и что я могу сделать, чтобы исправить это? Благодаря! (И любые синтаксические ошибки в коде, такие как отсутствующие скобки, вероятно, связаны с моими плохими навыками копирования и вставки.)

+1

Не первые * две цифры для альфа-цвета? По крайней мере, так работает 'Color.FromArgb()' в C# ..., что даст вам сине-белый белый цвет? Извините, не знакомы с javascript. Это правильно javascript? –

+0

Извините, это не проблема. Когда я это написал, я думал: #rrggbbaa. В коде, который фактически определяет цвет, он правильно определяет его с альфой. Спасибо хоть. И это Java. – CoderOfHonor

ответ

0

Ресурсы цвета Android определены как первые две цифры в качестве значений прозрачности. Это может быть вашей проблемой (как подозревал розничный кодер).

+0

Извините, мой плохой. Объявления в моем коде правильны и определяют цвет с альфой в качестве первого значения. Я написал цвета в моем примере с головы. Я привык к стилю #rrggbbaa. В любом случае, это не проблема. – CoderOfHonor

Смежные вопросы