Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:getHolder().setFixedSize(19201080)导致屏幕分辨率问题_Java_Android_Canvas_Resolution - Fatal编程技术网

Java Android:getHolder().setFixedSize(19201080)导致屏幕分辨率问题

Java Android:getHolder().setFixedSize(19201080)导致屏幕分辨率问题,java,android,canvas,resolution,Java,Android,Canvas,Resolution,我正在开发一个游戏。我希望我的屏幕始终为1920x1080 getHolder().setFixedSize(1920,1080); 我的SurfaceView上的setFixedSize实现了这一点。然而,这也产生了一个问题:屏幕仍然是WQHD res,而不是FHD。这会导致鼠标的位置比画布的视觉尺寸更大,因此单击按钮不再有效,除非我按按钮的实际位置以较小的分辨率 有没有办法将Android的分辨率设置为1920x1080?也许把布局设置成那样?我还试着让我的画布等同于一个正确尺寸的位图,但

我正在开发一个游戏。我希望我的屏幕始终为1920x1080

getHolder().setFixedSize(1920,1080);
我的SurfaceView上的setFixedSize实现了这一点。然而,这也产生了一个问题:屏幕仍然是WQHD res,而不是FHD。这会导致鼠标的位置比画布的视觉尺寸更大,因此单击按钮不再有效,除非我按按钮的实际位置以较小的分辨率

有没有办法将Android的分辨率设置为1920x1080?也许把布局设置成那样?我还试着让我的画布等同于一个正确尺寸的位图,但这似乎根本没有改变任何东西

Bitmap bitmap = Bitmap.createBitmap(10,100,null);

    Canvas c = new Canvas(bitmap);
解决这个问题的另一种方法可能是从大屏幕到小屏幕计算相应的鼠标单击位置,我想,但这似乎是次优解决方案。

以下是解决这个问题的方法

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