0

キャンバスの背景画像の上にテキストをペイントしています。画像をインタラクティブに動かします (ウィジャ ボードのポインターのように)。キャンバスを黒に設定しました。ポインターは赤で、ポインターにプレーヤーの名前が表示されるように、その上に白いテキストを書きたいと思います。

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
2.3.4 画像

アンドロイド 4.1.2 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開発者ガイドによると、アルファを単一のビューにのみ設定でき、ビュー内のすべてが変更されます。しかし、アルファを下げると、矢印の画像が透明になり、テキストが見えるようになります。

4

1 に答える 1

0

ストロークの幅を設定しますが、ストロークを に使用する必要があることを決して示しませんPaint

追加してみる

paintName.setStyle( FILL_AND_STROKE );

于 2013-09-08T20:55:07.663 に答える