我在画布上的背景图像上绘制文字。我以交互方式移动图像(就像一个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
Android 4.1.2
请注意白色文本在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值,箭头图像似乎变得足够透明,以便让我看到文本。
答案 0 :(得分:0)
您设置了笔触宽度,但从不指示该笔划应用于Paint
。
尝试添加
paintName.setStyle( FILL_AND_STROKE );