java - Android 屏幕上精确坐标处的图标

标签 java android

我想将一个城市的 map 设置为我的应用程序的背景,并且我想在它上面的已知坐标处放置一些图标。

我通过创建一个扩展 SurfaceView 并实现 Runnable 的类设法在 320x480 分辨率下实现它; map 和图标都是在 run() 方法中绘制的(通过 canvas.drawBitmap())。

显然,当我尝试在不同的屏幕分辨率上运行我的应用程序时,一切都变得一团糟。

你能给我一些关于如何绘制背景图像并使图标保持其“位置”而不管屏幕分辨率如何的提示吗?

非常感谢!

最佳答案

您需要实现与密度无关的像素。

private final float dpScale = 
    getContext().getResources().getDisplayMetrics().density;
private final float dp = (onePixel * dpScale +0.5f);   

把这个放在你的绘图代码的顶部。每次你画东西时,将你的 x 和 y 坐标乘以 dp。 示例:

canvas.drawText("hello world", 100*dp, 150*dp);

关于java - Android 屏幕上精确坐标处的图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8487857/

相关文章:

java - 播放多个视频JavaFx

java - LinkedHashMap Java 8 的 JUnit 顺序

tomcat - azure : Java webrole

android - 有没有办法更改到指定日期?

Android ViewPager + GridView 的图像占用太多堆内存

android - MultiChoiceModeListener android源码

android - 覆盖 PhoneGap Android 中的后退按钮

java - Robotium - 等待 Activity 的任务完成

java - 关于使用Java的Titanium并行方言

java - Android 录制内部设备声音