【问题标题】:Change background drawable android wear更改背景可绘制的 android 磨损
【发布时间】:2015-03-29 06:30:03
【问题描述】:

我想问一下,当android wear 处于环境模式时,你会如何改变背景drawable?

这是我的代码

 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();
    }

它总是绘制交互模式drawable。我不知道为什么它没有改变。

【问题讨论】:

    标签: android wear-os ambient


    【解决方案1】:

    我知道我们在谈论这些台词:

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

    您使用shouldShowAmbient 字段,但它似乎没有在任何地方设置。 WatchFaceService.Engine 已经 isInAmbientMode()。对于这种情况,您应该使用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-18
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-20
      相关资源
      最近更新 更多