首页 > 解决方案 > 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 位置,但这似乎是次优解决方案。

标签: javaandroidcanvasresolution

解决方案


这是解决它的方法

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);

推荐阅读