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


      最近在移植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

  • 相关阅读:
    树链剖分学习笔记(未完)
    VI 配置文件(略全)
    linux之awk
    指针之基础篇
    linux之sed
    sqlplus命令手册
    Leetcode复习: 堆和栈
    leetcode 的shell部分4道题整理
    Regular Expression Matching [leetcode]
    深入浅出JAVA
  • 原文地址:https://www.cnblogs.com/wendao/p/oth_android_screen_auto_adapt.html
Copyright © 2020-2023  润新知