簡體   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