Для отображения объектов на холсте использую следующий View:
public class CanvasView extends View {
private static final int letterWidth = 10;
private static final int margin = 10;
private static final int letterHeight = 10;
private static final int round = 5;
//цвета красные, но все отображается черным
private static final Paint paintBorders = new Paint(Color.RED);
private static final Paint paintBitmap = new Paint(Color.BLUE);
private static final Paint paintText = new Paint(Color.WHITE);
private Path path = new Path();
private Bitmap bitmap;
private String text = null;
private Point textPos = new Point();
public CanvasView(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawBitmap(bitmap, 0, 0, paintBitmap);
canvas.drawPath(path, paintBorders);
if(text != null)
canvas.drawText(text, textPos.x, textPos.y, paintText);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
}
public void drawObject(GeometryObject object )
{
Size size = compileSize(object);
Point pos = object.getPosition();
int left = pos.x;
int top = pos.y;
int right = left + size.getWidth();
int bottom = top + size.getHeight();
Path.Direction direction = Path.Direction.CW;
path.addRoundRect(left, top, right, bottom, round, round, direction);
text = object.getName();
textPos = new Point(left + margin, top + margin);
invalidate();
}
//вычисление размеров прямоугольника
private static Size compileSize(GeometryObject object)
{
int nameLength = object.getName().length();
int dataLength = object.getData().length();
int dataRowsNum = dataLength / nameLength + 1;
int width = nameLength * letterWidth + 2 * margin;
int height = 3 * margin + letterHeight + dataRowsNum * letterHeight;
return new Size(width, height);
}
}
(объект GeometryObject
содержит название объекта и данные объекта, все строковые типы. Так же содержит координаты для отображения)
При нажатии пользователем на кнопку в Activity открывается форма, в нее вводятся данные и создается GeometryObject
. Далее при нажатии пользователем на экран в этот объект вносятся координаты точки, куда пользователь нажал и вызывается метод CanvasView.drawObject()
. В итоге получается :
Фиолетовый цвет - это задний фон, а прямоугольник должен был получиться красного цвета. Итак, проблема заключается в том, что изображение получается черное, хотя я установил другие цвета. Как исправить это?
Виртуальный выделенный сервер (VDS) становится отличным выбором
Подскажите пожалуйста, Пытаюсь сохранить данные с фонового процесса в базу данных, и при создании базы данных выдаёт ошибкуError:(34, 41) error: incompatible...
Добрый день! Подскажите, как в android Studio правильно написать правило для исключения из обфускации всего пакета с классами?
Есть сервис, который имеет свойства ViewOnTouchListener Дальше при создании сервиса: