繁体   English   中英

Android画布坐标

[英]Android Canvas Co-ordinate

我正在为我的大学图书馆开发一个android应用程序。 我想画我图书馆的地图。 地图应显示书架号及其位置。 我试图通过在Android Canvas上画线来实现这一点。 有没有更好的方法绘制图书馆地图?

其次,在Canvas坐标系上工作对我来说非常麻烦。 有没有可用的工具可以绘制Canvas(例如,绘制类似东西的东西)并从中生成坐标?

您可以将地图绘制为文件(png,jpg,svg),然后在画布上绘制图片。 我建议使用svg-android( https://code.google.com/p/svg-android/ ),然后您可以轻松地为不同设备更改图片的比例。 您可以在InkScape或Illustrator中绘制SVG,然后使用这些程序计算出所需坐标的像素距离。

将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的application部分中,以确保svg在较新的设备中可以正常显示。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM