キャンバスの背景画像の上にテキストをペイントしています。画像をインタラクティブに動かします (ウィジャ ボードのポインターのように)。キャンバスを黒に設定しました。ポインターは赤で、ポインターにプレーヤーの名前が表示されるように、その上に白いテキストを書きたいと思います。
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 での変更点、または何か間違ったことをしている可能性はありますか? 私を夢中にさせているので、これを手伝ってくれてありがとう。
スクリーンショットを含めるように編集します。
アンドロイド 2.3.4
アンドロイド 4.1.2
白いテキストが 2.3.4 では上に表示されるのに対し、4.1.2 では下または濁って表示されることに注意してください。
free3dom が指摘しているように、それはアルファに関連しています。アルファを変更しないと、テキストが矢印の上に表示されないためです。ポインター画像を持つ ImageView が常に一番上にあるように見えます - これは何が起こっているのでしょうか? アルファの設定を処理する方法は次のとおりです。
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開発者ガイドによると、アルファを単一のビューにのみ設定でき、ビュー内のすべてが変更されます。しかし、アルファを下げると、矢印の画像が透明になり、テキストが見えるようになります。