java - Android:getHolder().setFixedSize(1920,1080) 导致屏幕分辨率问题
问题描述
我正在开发一个游戏。我希望我的屏幕始终为 1920x1080。
getHolder().setFixedSize(1920,1080);
我的 SurfaceView 上的 setFixedSize 实现了这一点。然而,它也产生了一个问题:屏幕仍然是 WQHD res 而不是 FHD。这导致 mouseclickposition 比画布在视觉上更大,因此单击按钮不再起作用,除非我按下它们实际处于较小分辨率的位置。
有没有办法将Android的分辨率设置为1920x1080?也许将布局设置为?我还尝试使我的画布等于正确尺寸的位图,但这似乎并没有改变任何东西。
Bitmap bitmap = Bitmap.createBitmap(10,100,null);
Canvas c = new Canvas(bitmap);
我想,解决这个问题的另一种方法可能是计算从大屏幕到小屏幕的相应 mouseClick 位置,但这似乎是次优解决方案。
解决方案
这是解决它的方法
public static float normalize(float value, float min, float max) {
return Math.abs((value - min) / (max - min));
}
public boolean onTouchEvent(MotionEvent event) {
int differenceInWidth = actualScreenwidth - screenwidth; //2560-1920
float xPercent = normalize(event.getX(),0,actualScreenwidth);
Log.d("mouse_P_xPercent", Float.toString(xPercent));
float yPercent = normalize(event.getY(),0,actualScreenheight);
Log.d("mouse_P_yPercent", Float.toString(yPercent));
mouseCurrentPositionX = (int) (screenwidth*xPercent);
mouseCurrentPositionY = (int) (screenheight*xPercent);
推荐阅读
- angular - 有没有办法让智能感知了解具有动态索引的接口的实例成员?
- amazon-web-services - AWS s3:在存储桶的单个文件夹中将权限从公共更改为私有
- angular - 通过单击复选框填写输入
- java - 如何知道创建了哪个 Java 版本的 Jar?
- appium - 在@android 中为appium 编写Sendkeys commnad
- javascript - 如何将 mp3 文件加载到反应 URL
- python - 如何从特定端口生成 DNS 查询?
- excel - 如何在距离我所在的单元格 X 列的单元格中写入(X 是在另一个单元格中定义的值)
- openshift - 在 openshift 中设置 microcks
- python - 如何在Python中递归解决目录路径问题?