2015-03-29 2 views
0

Я хотел бы спросить, как бы вы изменили фоновый рисунок, когда износ андроида находится в режиме окружающей среды?Измените фона, который можно вытащить на износ андроида

Вот мой код

public void draw(Canvas canvas, Rect bounds,Context context) { 
    time.setToNow(); 
    // canvas.drawColor(Color.parseColor("#e91e63")); 

    int width = bounds.width(); 
    int height = bounds.height(); 
    Resources resources = context.getResources(); 

    if (shouldShowAmbient) { 
     backgroundDrawable = resources.getDrawable(R.drawable.ambient_domo); 
    } else { 
     backgroundDrawable = resources.getDrawable(R.drawable.domo); 
    } 

    mBackgroundBitmap = ((BitmapDrawable) backgroundDrawable).getBitmap(); 
    // Draw the background, scaled to fit. 
    if (mBackgroundScaledBitmap == null 
      || mBackgroundScaledBitmap.getWidth() != width 
      || mBackgroundScaledBitmap.getHeight() != height) { 
     mBackgroundScaledBitmap = Bitmap.createScaledBitmap(mBackgroundBitmap, 
       width, height, true /* filter */); 
    } 
    canvas.drawBitmap(mBackgroundScaledBitmap, 0, 0, null); 
    String timeText = String.format(shouldShowSeconds ? TIME_FORMAT_WITH_SECONDS : TIME_FORMAT_WITHOUT_SECONDS, time.hour, time.minute, time.second); 
    float timeXOffset = computeXOffset(timeText, timePaint, bounds); 
    float timeYOffset = computeTimeYOffset(timeText, timePaint, bounds); 
    canvas.drawText(timeText, timeXOffset, timeYOffset, timePaint); 

    String dateText = String.format(DATE_FORMAT, time.monthDay, (time.month + 1), time.year); 
    float dateXOffset = computeXOffset(dateText, datePaint, bounds); 
    float dateYOffset = computeDateYOffset(dateText, datePaint); 
    canvas.drawText(dateText, dateXOffset, timeYOffset + dateYOffset, datePaint); 




} 

и вот как метод называется

@Override 
    public void onAmbientModeChanged(boolean inAmbientMode) { 
     super.onAmbientModeChanged(inAmbientMode); 
     watchFace.setAntiAlias(!inAmbientMode); 
     watchFace.setColor(Color.WHITE); 
     watchFace.showAmbient(inAmbientMode); 
     watchFace.setShowSeconds(false); 
     invalidate(); 

     startTimerIfNecessary(); 
    } 

Он всегда рисовать интерактивный режим вытяжке. Я понятия не имею, почему это не меняется.

ответ

0

Я понимаю, что мы говорим об этих строках:

if (shouldShowAmbient) { 
    backgroundDrawable = resources.getDrawable(R.drawable.ambient_domo); 
} else { 
    backgroundDrawable = resources.getDrawable(R.drawable.domo); 
} 

используется shouldShowAmbient поля, но это не кажется, он установлен в любом месте. WatchFaceService.Engine уже isInAmbientMode(). Вы должны использовать это вместо этого условия.

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