在背景图像上绘画文本是昏暗的

时间:2013-09-08 18:25:53

标签: android text canvas drawtext

我在画布上的背景图像上绘制文字。我以交互方式移动图像(就像一个Ouija板指针)。我已将画布设置为黑色,指针为红色,我想在其上面写入白色文本,以便指针上有一个玩家的名字。

在Android 2.3.4中,它在红色指针顶部显示为纯白色文字,非常清晰,但我想使用任何颜色。在Android 4.1.2中,我几乎看不到白色文本。这是我的代码:

    public Pointer(Context context) {
    super(context);

    paintBg = new Paint();
    paintBg.setColor(Color.BLACK);
    paintName = new Paint();
    paintName.setColor(Color.WHITE);
    paintName.setTextSize(50); // set text size
    paintName.setStrokeWidth(5);
    paintName.setTextAlign(Paint.Align.CENTER);

    this.setImageResource(res); // pointer.png in res/drawable folder
    Drawable d = getResources().getDrawable(res);
    h = d.getIntrinsicHeight();
    w = d.getIntrinsicWidth();

    canvas = new Canvas();
    canvas.drawPaint(paintBg);//make background black

    // float imageScale = width / w; // how image size scales with screen
}


@Override
public void onDraw(Canvas canvas) {

    y = this.getHeight() / 2; // center of screen
    x = this.getWidth() / 2;
    int left = Math.round(x - 0.8f * w);
    int right = Math.round(x + 0.8f * w);

    canvas.save();
    canvas.rotate((direction + 180) % 360, x, y); // rotate to normal
    canvas.drawText(s, x, y + 20, paintName); // draw name

    canvas.restore();
    canvas.rotate(direction, x, y); // rotate back
    super.onDraw(canvas);
}

4.1.2中会有什么变化会影响到这一点,或者我是不正确地做了什么?感谢您的帮助,因为它让我发疯。

编辑以包含屏幕截图:

Android 2.3.4
2.3.4 Image

Android 4.1.2 4.1.2 Image

请注意白色文本在2.3.4中如何显示在顶部,而在4.1.2中显示为白色或泥泞。

当free3dom指出它与alpha有关。我确实改变了alpha,因为如果不这样做,文本就不会出现在箭头顶部。似乎具有指针图像的ImageView始终位于顶部 - 这可能是正在发生的事情吗? 以下是我处理设置alpha的方法:

    public static void setAlpha(View view, float alpha, int duration) {
if (Build.VERSION.SDK_INT < 11) {
    final AlphaAnimation animation = new AlphaAnimation(alpha, alpha);
    animation.setDuration(duration);
    animation.setFillAfter(true);
    view.startAnimation(animation);
 } else                          //for 11 and above
    view.setAlpha(alpha);
}

也许它与使用this.setImageResource(res)设置图像资源有关?根据android开发人员指南,我只能将alpha设置为单个视图,并且视图中的所有内容都会更改。然而,如果我降低alpha值,箭头图像似乎变得足够透明,以便让我看到文本。

1 个答案:

答案 0 :(得分:0)

您设置了笔触宽度,但从不指示该笔划应用于Paint

尝试添加

paintName.setStyle( FILL_AND_STROKE );