我有一个背景,我需要适合所有屏幕尺寸.我有三个文件夹,hdpi
,ldpi
并mdpi
为可绘制,但在模拟器有什么分辨率没有任何referense hdpi
是什么mdpi
和ldpi
有.
根据这些文章:
http://news.kynosarges.org/2015/06/29/javafx-dpi-scaling-fixed
https://twitter.com/michaelsamarin/status/729234779292483584
Java 9应支持Swing中的高DPI显示(自动DPI缩放).我已经在Zulu 9上的Java 9 Early Access + 的最新版本上测试了它,它看起来非常棒.
我无法解决一件事 - 高分辨率/视网膜图像加载.
根据上面和下面的文章(链接),它应该使用Apple名称约定(@ 2x):
image.png
,image@2x.png
,image@3x.png
,等.
我测试了这些加载方法:
Toolkit.getDefaultToolkit().getImage(getClass().getClassLoader().getResource("something/image.png"));
Run Code Online (Sandbox Code Playgroud)
和
ImageIO.read(getClass().getResource("/something/image.png"));
Run Code Online (Sandbox Code Playgroud)
但这些都不起作用(唯一的基本图像被加载和模糊).
根据这个:
第一种方法应该是有希望的.
有没有人有这方面的经验(使用Swing甚至JavaFX)?我不确定我是做错了什么,或者这个功能没有实现到当前预发布版本的Java 9 sofar.
更新:
它应该是可能的:
我也试过遵循命名约定(这里描述):
Windows : image.scale-<dpi-value>.png (image.scale-140.png)
Linux : image.java-scale2x.png
Mac : image@2x.png and image.java-scale2x.png
Run Code Online (Sandbox Code Playgroud)
但是,我找不到任何有效的解决方案或官方信息.我不明白 - hdpi显示器今天很常见,Java应用程序看起来就像它们.
带有3200X1800联想笔记本电脑的Windows 8上的jmeter UI无法使用.最左侧窗格中的字体太小,而右侧的行间距对于字体而言太小.如果我将分辨率更改为1920X1080,则无效.尝试在1920X1080的第二台显示器上使用.没运气.系统设置为大尺寸.似乎无法交换哪个显示器是主要的.任何人解决这个?
我刚刚在Arch Linux上的4k屏幕上试用了JavaFX Hello World示例,但遗憾的是GUI无法扩展.
该文件说:
Hi-DPI支持.JavaFX 8现在支持Hi-DPI显示.
那么如何让我的应用程序dpi识别?
我正在编写一个需要在高dpi Windows(192dpi而不是96dpi)上运行的Qt应用程序.
不幸的是Qt框架还没有支持high-dpi(至少在Windows上),所以我的应用程序及其所有元素看起来应该是它应该的一半.
有没有办法强制/模拟Windows自动升级此类应用程序?
我想配置一个与Kindle Fire兼容的仿真器,包括它的分辨率.我在模拟器设置(或其他地方)中需要更改什么?
我有关于netbeans的hdpi问题,当我打开它时图标变得太小了.然后我发现了下面的问题.有人说jdk9修复了分辨率问题.
https://netbeans.org/bugzilla/show_bug.cgi?id=252452
这是我的环境:
我在windows10上下载了jdk9和netbeans8.2,希望JDK9可以修复烦人的资源问题.不幸的是,我无法打开netbeans.
我在cmd中输入后.
netbeans.exe --jdkhome "C:\Program Files\Java\jdk-9"
控制台显示错误.
No way to find original stream handler for jar protocol
java.lang.reflect.InaccessibleObjectException: Unable to make field transient java.net.URLStreamHandler java.net.URL.handler accessible: module java.base does not "opens java.net" to unnamed module @4973813a
at java.base/jdk.internal.reflect.Reflection.throwInaccessibleObjectException(Reflection.java:427)
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:201)
at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:171)
at java.base/java.lang.reflect.Field.setAccessible(Field.java:165)
at org.netbeans.ProxyURLStreamHandlerFactory.register(ProxyURLStreamHandlerFactory.java:82)
at org.netbeans.JarClassLoader.(JarClassLoader.java:141)
at org.netbeans.MainImpl.execute(MainImpl.java:178)
at org.netbeans.MainImpl.main(MainImpl.java:85)
at org.netbeans.Main.main(Main.java:83)
Run Code Online (Sandbox Code Playgroud)
有谁知道如何在Netbeans中使用jdk9?
我正在开发平板电脑7英寸Kindle Fire HD和Nexus 7的应用程序.这两个应用程序具有相同的大小和相同的屏幕分辨率.但是,我运行我的应用程序,它是非常不同的.为什么?
这似乎是因为nexus 7被检测为TVDPI,而Kindle Fire HD是HDPI.如何基于1280*800型号进行相同的渲染?
谢谢
我有一个800x480 res的设备.当我创建GLSurfaceView时,我onSurfaceChanged
接到一个533x320 的呼叫(显然应用了1.5 HDPI修改器)并且表面被放大了.所以当我画1像素粗线看起来真的很糟糕,我不能有像素完美的渲染.
我想要的是原始分辨率表面(800x480).
View以这种方式创建(如在NDK OpenGL示例中),在Activity中onCreate
:
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
view = new MyGLSurfaceView(this);
setContentView(view);
Run Code Online (Sandbox Code Playgroud)
我不使用任何布局等.
在Android中,各种设备根据其密度分为不同的类别.
LDPI = 120 DPI
MDPI = 160 DPI
HDPI = 240 DPI
XHDPI = 320 DPI
XXHDPI = 480 DPI
XXXHDPI = 640DPI
Run Code Online (Sandbox Code Playgroud)
我怀疑的是,如果Android设备的密度为"200 DPI",那么它是否属于以上类别?(例如:Nexus 5有217dpi,无论它是否属于HDPI或MDPI).
谁能说,不同密度的确切范围是什么(LDPI,MDPI,XXHDPI ......).