是在画布上的不同设备Android比例(is canvas in android proportio

2019-06-26 15:19发布

我试图让使用帆布和surfaceview的应用程序,我现在担心的是,在未来我会用它的许多问题,因为我不知道,如果画布是与每一个设备的比例。 目前我只能用我的仿真器,因为我的手机的USB电缆不起作用(我知道..我必须得到一个新的..)。

不管怎么说,我想知道,如果在画布上会转移我的坐标,并让一切成比例的,我的意思是,如果我有一个很好的东西,可以说(10,10)一种设备,它的屏幕上100×100(这只是为了容易计算的例子),那将是点(1,1)一个10×10的设备上。

这是真正困扰我...

谢谢!

Answer 1:

不,这不会是这种情况。 如果你有一个坐标(10,10),这将是对所有设备相同。 我建议你scale你的图纸。

scale您的图纸,你只需定义位图(将保持不变),你想提请(当屏幕尺寸改变,这将拉伸位图)。

  1. 定义一个恒定的位图:

    位图gameScreen = Bitmap.createBitmap(getGameScreenWidth(),getGameScreenHeight(),Config.RGB_565);

  2. 获取规模为x和y

    宽度= game.getWindowManager()getDefaultDisplay()的getWidth()。; 高度= game.getWindowManager()getDefaultDisplay()的getHeight()。; scaleXFromVirtualToReal =(浮点)的宽度/ this.gameScreenWidth; scaleYFromVirtualToreal =(浮点)的高度/ this.gameScreenHeight;

  3. 定义基于以前定义位图中的Canvas对象(允许你画它如canvas.drawRect()[...]。):

    Canvas canvasGameScreen = new Canvas(gameScreen);

  4. 在您的渲染线程,你必须有一个叫做帧缓冲画布,这将使得虚拟帧缓冲:

    frameBuffer.drawBitmap(this.gameScreen,空,新的Rect(0,0,宽度,高度),NULL);



Answer 2:

没有,屏幕上的单位(不管你是用canvasOpenGL )是一个像素。 你可以使用你的画布的大小Canvas.getWidth()Canvas.getHeight()如果你需要的相对坐标,但你的Canvas绘图方法也使用像素,所以我想你需要将坐标转换中OpenGL ,而不是同时采用Canvas



文章来源: is canvas in android proportional on different devices