android移植屏幕多分辨率的一种解决方案

本文介绍了一种针对Android平台上的游戏UI自适应多种分辨率设备的解决方案。通过保持UI的长宽比并根据屏幕尺寸动态调整界面元素位置,确保UI内容在不同分辨率下既不失真也不会超出屏幕范围。

  最近在移植android,由于android手机分辨率很多,同事给说了一种解决方案
  游戏的ui会填充整个屏幕,拉伸ui是按照其长宽比拉伸的所以不会失真,当然必然会有一部分ui的x轴或是y轴会有一部分不能显示;这样就要动态的根据屏幕的长宽来改变游戏界面中按钮等的位置,使得这些东西不会被显示到屏幕以外的某个地方。
  


  第一个场景上下(也有可能左右)有些地方被拉升到屏幕外面,第二个场景的上面下面的按钮都根据屏幕和ui(也可以说是layer的长宽)与ui拉伸的比率确定哪些按钮的位置(没用别人的封装的那个类时自己写弄得比较晕乎,因为setPostion的那个坐标系是拉伸前的,要根据拉伸后的把屏幕放在它的中央位置,找到零点(屏幕左下角)这里假设y轴会出去的话,零点到拉伸后图片的距离除以ui的拉伸率就得出若想拉伸后按钮还在屏幕左下角应该设置的position应该是多少——没亲自实验成功,在windows下ndk不知道怎么调试)。参考

1   CCSprite* test_sprite = new CCSprite;
2 test_sprite->initWithFile("CloseNormal.png");
3 test_sprite->setAnchorPoint(ccp(0,0));
4 test_sprite->setPosition(ccp(0, (320* CCDirector::sharedDirector()->getOpenGLView()->getScreenScaleFactor() - CCDirector::sharedDirector()->getWinSizeInPixels().width)/
5 CCDirector::sharedDirector()->getOpenGLView()->getScreenScaleFactor()/2) );
// 320是图片的高度,也是android设置view的高度view->create(480,320); x是0 对于这个例子来说y轴会拉神。

6 addChild(test_sprite, 20);
7 test_sprite->release();


  经过测试,自己想的是对的,这种难调试的程序还是先写简单的测试程序吧!
  一开始,就用这种方法直接改ui,由于代码可能许多地方修改了坐标值,导致总是成功不了,以至于不知道是哪里的问题,连自己设置坐标的方法都怀疑;由此可见调试程序也要用控制变量法,一个个解决。

  20120113今天在androidpad上运行这个程序发现,CloseNormal.png位置不对;看来自己的理解有一定的偏差,我找找问题出现在哪里;windows下不能调试啊!!只能一遍遍的试。

 

write by fgd

转载于:https://www.cnblogs.com/wendao/archive/2012/01/12/oth_android_screen_auto_adapt.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值