NGUI的UI适配

写里有一篇文章写的比较具体

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]};

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值