zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    五大浏览器内核代表作品
    防止高度塌陷的方法
    过滤器(filter)
    置换元素与非置换元素
    display属性和属性值(18个属性值,常见面试题)
    常见的块级元素、内联元素
    html基础表单
    Windows下使用TensorFlow
    Windows安装TensorFlow-Docker Installation of TensorFlow on Windows
    <Web Scraping with Python>:Chapter 1 & 2
  • 原文地址:https://www.cnblogs.com/wendao/p/oth_android_screen_auto_adapt.html
Copyright © 2011-2022 走看看