Координата Android Canvas

Я разрабатываю приложение для Android для моей библиотеки колледжа. Я хочу нарисовать карту моей библиотеки. Карта должна отображать номер книжной полки вместе с ее местоположением. Я пытаюсь добиться этого, рисуя линии на Android Canvas. Есть ли лучший способ нарисовать карту моей библиотеки?

Во-вторых, мне очень трудно работать с системой координат холста. Есть ли какой-нибудь инструмент, с помощью которого я могу нарисовать холст (например, рисовать как вещи) и генерировать из него координаты?

1 ответ

Вы можете нарисовать карту в виде файла (png, jpg, svg), а затем нарисовать картинку на холсте. Я бы предложил использовать svg-android ( https://code.google.com/p/svg-android/), тогда вы можете легко изменить масштаб изображения для разных устройств. Вы можете нарисовать SVG в InkScape или Illustrator и использовать эти программы для определения расстояния в пикселях до желаемых координат.

Поместите SVG (например, library_map.svg) в папку res/raw и вызовите его с помощью:

    SVG svg = SVGParser.getSVGFromResource(getResources(), R.raw.library_map);

Создайте представление и в onDraw() поместите:

      canvas.translate(map_x_position, map_y_position); 
      canvas.drawPicture(svg.getPicture());
      canvas.translate(-map_x_position, -map_y_position);

      canvas.translate(marker_x_position, marker_y_position); 
      canvas.drawPicture(marker.getPicture());
      canvas.translate(-marker_x_position, -marker_y_position);

Эта функция полезна для поддержки экранов разных размеров:

float getPxFromDp(float dpValueToConvert) {
    // Converts dp into its equivalent px
    Resources r = getResources();
    float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpValueToConvert, r.getDisplayMetrics());
    return px;
}

С svg-android следует обратить внимание на то, что он не поддерживает аппаратное ускорение. Вы можете положить android:hardwareAccelerated="false" в разделе приложения вашего AndroidManifest.xml, чтобы убедиться, что SVG хорошо отображается на новых устройствах.

Другие вопросы по тегам