java - 如何使用高密度屏幕上可见的绘制点

标签 java android

我正在尝试为我的游戏打造一个空间外观,并想在背景中添加星星。我决定做一个float[] points并使其随机化。然后我使用canvas.drawPoints(points, white); 。这在我的模拟器上运行得很好。在手机上,您几乎看不到这些点。我想知道是否可以拥有比像素大的点(我知道这没有意义)或使用类似 drawRects(points, size, paint); 的方法。使用 for 循环效率不高,并且会使游戏变得缓慢。有没有其他方法或者我必须忍受延迟。

谢谢!

最佳答案

与您的模拟器和手机的密度不同有关。 1 px 在不同的屏幕上有不同的物理尺寸。您应该使用 dp(dip 或密度独立像素),然后将其转换为像素。

所以你的代码应该是这样的:

ind dpRadius = 1;
Resources r = getResources();
float pxRadius = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpRadius, r.getDisplayMetrics());

Paint paint = new Paint();
paint.setColor(Color.BLUE);
paint.setStrokeWidth(pxRadius);
paint.setStyle(Paint.Style.STROKE);

// your drawPoints code ...

关于java - 如何使用高密度屏幕上可见的绘制点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33622276/

相关文章:

android - 自定义对话框无法关闭

android - 找不到 com.android.tools.build :gradle:2. 2.3

android - React Native 0.61 版本中的 Google Play 64 位要求

java - 是否保证 ConcurrentHashMap.get() 可以通过不同的线程看到以前的 ConcurrentHashMap.put() ?

java - Spring-MVC中如何实现用户锁定?

android - oppo,vivo app kill notification not coming in android fcm

Android M 权限对话未出现在 fragment 中

java - java中如何使用Jsoup处理异常以保持程序运行

java - 尝试在链接列表中查找最后一项的值时出现 NullPointerException 错误

java - 从 C++ 中 java 的 writeInt 方法写入的文件中读取一个 int?