解决PhoneGap不支持viewport的几种方法

前几天用phonegap编译GameBuilder+CanTK时,发现HTML里的viewport无效。CanTK根据devicePixelRatio检测设备的DPI,然后用viewport设置正确的分辨率。如果viewport无效,CanTK只能以最低分辨率运行。在网上查了一下, 也没有找到系统的资料,但我知道WebView一定有相应的设置来启用viewport,结合找到的资料和phonegap的源码,终于找到了解决方法,这里总结一下:

  • iOS平台的解决方法:在phonegap的config.xml中增加一行配置:

    <preference name="EnableViewportScale" value="true"/>

    (奇怪的是此方法对android平台无效,我看了CordovaWebView.java,里面没有相关设置)

  • android 平台的解决方法一:修改CordovaWebView.java:
        settings.getUserAgentString();
         //增加下面两行代码:
        settings.setUseWideViewPort(true);
        settings.setLoadWithOverviewMode(true);
  • android 平台的解决方法二:直接修改CordovaWebView.java是个好办法,但是GameBuilder+CanTK支持phonegap的云编译,没有法直接修改CordovaWebView.java。我想到了phonegap插件,找到了一个ViewPortScale的插件,发现根本编译不了,所以自己写了一个com.tangide.viewport的插件,如果里使用GameBuilder+CanTK提供的云编译,已经内置了这个插件。插件的源码在这里:
    https://github.com/drawapp8/ViewPort
时间: 2024-10-06 20:28:01

解决PhoneGap不支持viewport的几种方法的相关文章

解决osgEarth中文显示乱码的几种方法

解决osgEarth中文显示乱码的几种方法 在此感谢那些在路上那个帮助过别人的朋友,谢谢. 方法一: 通过自己写函数转换类型. 下面这三个函数先复制过去吧. void unicodeToUTF8(const std::wstring &src, std::string& result) { int n = WideCharToMultiByte( CP_UTF8, 0, src.c_str(), -1, 0, 0, 0, 0 ); result.resize(n); ::WideCharT

解决psql客户端汉字乱码的一种方法

今天摆弄psql,发现汉字乱码,网上答案不够简介明了,但找到了一种比较有效的方法: 输入命令 SET client_encoding=GBK; 此命令将客户端编码方式变为GBK,即可实现汉字正常显示.

Java解决Hash(散列)冲突的四种方法--开放地址法(线性探测,二次探测,伪随机探测)、链地址法、再哈希、建立公共溢出区

最近时间有点紧,暂时先放参考链接了,待有时间在总结一下: 查了好多,这几篇博客写的真心好,互有优缺点,大家一个一个看就会明白了: 参考 1. 先看这个明白拉链法(链地址法),这个带源码,很好看懂,只不过是只讲了拉链法一种: 2. 再看这个比较全的,四种全讲了,链接,这篇比较形象,有图.但是这两篇都没有仔细介绍优缺点: 3. 最后看优缺点,点击这里: 原文地址:https://www.cnblogs.com/gjmhome/p/11372883.html

解决ie7不支持after、before的方法

1.第一个步骤http://jquery.lukelutman.com/plugins/pseudo/ 下载 jq-pseudo.js 下载好了,就引入jQuery和jq-pseudo.js 2.书写选择器的语法:选择器:before, 选择器 { /*兼容IE6.IE7*/   before: '要写的内容';   /*兼容IE8*/   content: '要写的内容'; } 对伪元素进行设置样式: 选择器:before, 选择器 .before {         书写样式       }

解决网页元素无法定位的几种方法

备注: 若出现手动和自动不一样,请用自动打开的页面查看元素 一. 元素未加载出来,此时可以使用显示等待或者隐式等待 显示等待如下: t = WebDriverWait(driver, 10).until(lambda x: x.find_element_by_id('u1')) 设置超时时间为10秒,即最长等待时间为10秒,若10秒内依旧没加载出来,则返回timeout超时的报错,10秒内检测到了u1这个元素,则立即执行下面的动作 隐式等待如下: driver.implicitly_wait(1

【Cocos2d-x游戏开发】解决Cocos2d-x中文乱码的三种方法

众所周知,Cocos2d-x是一款不错的开源引擎,但是在Cocos2d-x中直接使用中文是无法正确显示的.比如下面的情况: 解决这个问题常用的有三种方法:1.通过转换为UTF-8编码来显示.2.使用iconv库来解决.3.使用解析xml或者json文件来解决.这里推荐使用第三种方法来解决,因为比较简单方便,还能支持I18N国际化.下面我们来一一详细了解一下每种解决方案的具体实现: 一.通过转换为UTF-8编码的方式显示出来,建立一个方法用于转换中文到对应的UTF-8编码,具体代码如下: 1 ch

详谈隐藏Tabbar的几种方法

现在正在写的一个项目,涉及到了使用两个TabBar,然后我需要显示其中一个的时候,然后隐藏另外一个,但是中间却出现问题了.我查了一些资料,想总结一下关于TabBar的隐藏. 第一种方法是: //隐藏tarBar self.hidesBottomBarWhenPushed = YES; 这个方法是UIViewController的属性,很好用.但是我需要把隐藏的TabBar显示出来的时候,却发现显示不出来. - (void)viewWillAppear:(BOOL)animated { //显示T

两种解决IE6不支持固定定位的方法

有两种让IE6支持position:fixed1.用CSS执行表达式 *{margin:0;padding:0;} * html,* html body{ background-image:url(about:blank); background-attachment:fixed; } * html .fixed{ position:absolute; bottom:auto; top:expression(eval(document.documentElement.scrollTop+ doc

7种方法解决移动端Retina屏幕1px边框问题

在Reina(视网膜)屏幕的手机上,使用CSS设置的1px的边框实际会比视觉稿粗很多.在之前的项目中,UI告诉我说我们移动项目中的边框全部都变粗了,UI把他的设计稿跟我的屏幕截图跟我看,居然真的不一样.没有办法,只有在后面的版本中去修改了,但是要改的话,需要知道是为什么.所以查了很多资料,终于搞懂了这个问题,并且总结了几种方法. 造成边框变粗的原因 其实这个原因很简单,因为css中的1px并不等于移动设备的1px,这些由于不同的手机有不同的像素密度.在window对象中有一个devicePixe