Я рисую текст поверх фонового изображения на холсте. Я перемещаю изображение в интерактивном режиме (например, указатель платы 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 указывает, что это связано с альфой. Я изменяю альфа, потому что, если я этого не делаю, текст не отображается поверх стрелки. Похоже, что 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 (Рез), чтобы установить ресурс изображения? Согласно руководству разработчика Android, я могу установить только альфа для одного представления, и все в представлении изменилось. Однако, если я опускаю альфу, изображение стрелки кажется достаточно прозрачным, чтобы я мог видеть текст.
на основе новой информации, кажется, что ваш заказ делают это проблема. Есть ли способ показать стрелку ** перед ** вы визуализируете текст? – free3dom
Стрелка создается как часть создания класса изображения. Все текстовые записи выполняются после этого во время метода onDraw этого класса. Я просмотрел документы разработчика, но не могу понять, как управлять порядком визуализации. Очень расстраивает ... – bob
Вы пытались переместить 'super.onDraw (canvas);' в начало вашего метода 'onDraw'? – free3dom