android移植屏幕多分辨率的一种解决方案
2012-01-12 12:01
218 查看
最近在移植android,由于android手机分辨率很多,同事给说了一种解决方案
游戏的ui会填充整个屏幕,拉伸ui是按照其长宽比拉伸的所以不会失真,当然必然会有一部分ui的x轴或是y轴会有一部分不能显示;这样就要动态的根据屏幕的长宽来改变游戏界面中按钮等的位置,使得这些东西不会被显示到屏幕以外的某个地方。
![](http://pic002.cnblogs.com/images/2012/354674/2012011211451413.png)
![](http://pic002.cnblogs.com/images/2012/354674/2012011211454883.png)
第一个场景上下(也有可能左右)有些地方被拉升到屏幕外面,第二个场景的上面下面的按钮都根据屏幕和ui(也可以说是layer的长宽)与ui拉伸的比率确定哪些按钮的位置(没用别人的封装的那个类时自己写弄得比较晕乎,因为setPostion的那个坐标系是拉伸前的,要根据拉伸后的把屏幕放在它的中央位置,找到零点(屏幕左下角)这里假设y轴会出去的话,零点到拉伸后图片的距离除以ui的拉伸率就得出若想拉伸后按钮还在屏幕左下角应该设置的position应该是多少——没亲自实验成功,在windows下ndk不知道怎么调试)。参考
![](http://pic002.cnblogs.com/images/2012/354674/2012011212220757.png)
经过测试,自己想的是对的,这种难调试的程序还是先写简单的测试程序吧!
一开始,就用这种方法直接改ui,由于代码可能许多地方修改了坐标值,导致总是成功不了,以至于不知道是哪里的问题,连自己设置坐标的方法都怀疑;由此可见调试程序也要用控制变量法,一个个解决。
20120113今天在androidpad上运行这个程序发现,CloseNormal.png位置不对;看来自己的理解有一定的偏差,我找找问题出现在哪里;windows下不能调试啊!!只能一遍遍的试。
write by fgd
游戏的ui会填充整个屏幕,拉伸ui是按照其长宽比拉伸的所以不会失真,当然必然会有一部分ui的x轴或是y轴会有一部分不能显示;这样就要动态的根据屏幕的长宽来改变游戏界面中按钮等的位置,使得这些东西不会被显示到屏幕以外的某个地方。
![](http://pic002.cnblogs.com/images/2012/354674/2012011211451413.png)
![](http://pic002.cnblogs.com/images/2012/354674/2012011211454883.png)
第一个场景上下(也有可能左右)有些地方被拉升到屏幕外面,第二个场景的上面下面的按钮都根据屏幕和ui(也可以说是layer的长宽)与ui拉伸的比率确定哪些按钮的位置(没用别人的封装的那个类时自己写弄得比较晕乎,因为setPostion的那个坐标系是拉伸前的,要根据拉伸后的把屏幕放在它的中央位置,找到零点(屏幕左下角)这里假设y轴会出去的话,零点到拉伸后图片的距离除以ui的拉伸率就得出若想拉伸后按钮还在屏幕左下角应该设置的position应该是多少——没亲自实验成功,在windows下ndk不知道怎么调试)。参考
CCSprite* test_sprite = new CCSprite; test_sprite->initWithFile("CloseNormal.png"); test_sprite->setAnchorPoint(ccp(0,0)); test_sprite->setPosition(ccp(0, (320* CCDirector::sharedDirector()->getOpenGLView()->getScreenScaleFactor() - CCDirector::sharedDirector()->getWinSizeInPixels().width)/ CCDirector::sharedDirector()->getOpenGLView()->getScreenScaleFactor()/2) ); // 320是图片的高度,也是android设置view的高度view->create(480,320); x是0 对于这个例子来说y轴会拉神。 addChild(test_sprite, 20); test_sprite->release();
![](http://pic002.cnblogs.com/images/2012/354674/2012011212220757.png)
经过测试,自己想的是对的,这种难调试的程序还是先写简单的测试程序吧!
一开始,就用这种方法直接改ui,由于代码可能许多地方修改了坐标值,导致总是成功不了,以至于不知道是哪里的问题,连自己设置坐标的方法都怀疑;由此可见调试程序也要用控制变量法,一个个解决。
20120113今天在androidpad上运行这个程序发现,CloseNormal.png位置不对;看来自己的理解有一定的偏差,我找找问题出现在哪里;windows下不能调试啊!!只能一遍遍的试。
write by fgd
相关文章推荐
- 4种Android屏幕自适应解决方案
- cocos2d-x程序移植android时修改屏幕显示方向
- 最全面、最易懂的Android屏幕适配解决方案
- Android保持屏幕长亮的解决方案
- Android开发:最全面、最易懂的Android屏幕适配解决方案
- Android屏幕自适应解决方案
- 必须知道的Android屏幕自适应解决方案
- iOS:webView中图片自适应屏幕的一种解决方案
- 《多核程序设计》PART 6:OpenMP 一种可移植的多线程解决方案(转载)
- Android 屏幕适配相关解决方案
- android一种新的屏幕适配方案
- 4种必须知道的Android屏幕自适应解决方案
- 4种必须知道的Android屏幕自适应解决方案
- Android开发:最全面、最易懂的Android屏幕适配解决方案
- 一种Unity2D多分辨率屏幕适配方案
- android多屏幕多分辨率的一些概念
- 学习笔记-Android屏幕适配最棒的解决方案
- 四种必须知道的Android屏幕自适应解决方案
- Android应用如何支持屏幕多尺寸多分辨率问题
- cocos2dx android版本移植时的Error format not a string literal and no format arguments解决方案