android:getholder().setfixedsize(19201080)导致屏幕分辨率问题

9o685dep  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(673)

我正在开发一个游戏。我希望我的屏幕总是1920x1080。

getHolder().setFixedSize(1920,1080);

在我的surfaceview上设置fixedsize可以实现这一点。然而,这也产生了一个问题:屏幕仍然是wqhdres,而不是fhd。这会导致鼠标点击的位置比画布的视觉效果要大,因此点击按钮不再有效,除非我按一下它们实际所在的位置,以较小的分辨率。
有没有办法将android的分辨率设置为1920x1080?也许把布局设成那样?我也试着让我的画布等于一个位图,这是正确的尺寸,但似乎没有改变任何东西。

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

    Canvas c = new Canvas(bitmap);

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

sg24os4d

sg24os4d1#

这就是解决问题的方法

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

相关问题