写里有一篇文章写的比较具体
https://www.cnblogs.com/liujidong/p/5650305.html
但对于需要手动计算适配后的宽高的计算方式没有说得太明晰
比如我的一个项目中开发分辨率为1280*720,需要在屏幕的指定区域渲出一个Webview页,Ngui的适配方式是Constrained ContentWidth和ContentHeight都勾选.在开发时,我们要画Webview的区域以屏幕为中心的区域为左-410 上 300 右354, 下-217,这个渲染区域需要传入Android实现中,那问题来了,Android实现中,这个区域在最终分辨率下是多大?
我们以Screen代表最终屏幕分辨率大小,orig_w, orig_h代表开发分辨率
传入Android代码中的数据以边界大小来传入,不妨按left, top, right, bottom来传入
那么在 1280X720时,取区域离中心的距离,应当为rect0={410, 300, 354, 217}
那么最终分辨率下这个区域的大小又是多少呢
float[] rect = new float[]{410,300,354,217};
float orig_w = 1280.0f;
float orig_h = 720.0f;
float ar = (float)Screen.width/Screen.height;
float mr = orig_w/orig_h;
if( mr >= ar ) //按宽度适配
{
float r = (float)Screen.width/orig_w;
for( int i = 0; i < 4; i++)
{
rect[i] *= r;
}
}
else
{
float r = (float)Screen.height/orig_h;
for( int i = 0; i < 4; i++)
{
rect[i] *= r;
}
}
float half_w = Screen.width/2.0f;
float half_h = Screen.height/2.0f;
float[] bound=new float[4]{half_w-rect[0], half_h-rect[1],half_w-rect[2], half_h-rect[3]};