17

我有一个旨在在 Android 手机和平板电脑上运行的 Phonegap 应用程序。文字和图像的比例在手机上看起来不错,但在 7 英寸平板电脑上太小了。

有没有办法为基于 Phonegap 的应用程序设置不同屏幕尺寸/密度的比例?对于原生 Android 应用程序,多屏幕布局(如android 文档中所述)将是一种解决方案,但这可以用于基于 Phonegap 的应用程序吗?

我可以使用 CSS 媒体查询根据屏幕大小设置字体大小,但我想按比例缩放整个界面(包括图像)。

我尝试使用 CSSzoom属性和媒体查询来定位特定的屏幕尺寸,但这会破坏绝对定位并干扰 iScroll 等 UI 元素的功能:

@media only screen and (min-device-width : 768px) {
    body{
        zoom: 125%;
    }   
}
@media only screen and (min-device-width : 1024px){ 
    body{
        zoom: 150%;
    }
}

我还尝试使用targetdensity-dpi元视口属性 - 将其调整为 120dpi 可使 7 英寸平板电脑上的比例更好,但在手机上太大。由于这是在 HTML 而不是 CSS 中硬编码的,因此不能使用媒体查询来根据屏幕大小对其进行更改:

<meta name="viewport" 
   content="width=device-width, initial-scale=1, targetdensity-dpi=120dpi">

以下是测试用例 Phonegap 应用程序的一些屏幕截图:

4

4 回答 4

22

在我们放弃 phonegap 之前,让我们尝试改进它。我被卡住了,直到我使用这个解决方案解决了它。

将您的视口更改为:

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, target-densitydpi=medium-dpi, user-scalable=0" />

参考:Phonegap 应用程序文本和布局太小

于 2013-12-28T09:38:24.997 回答
4

只是注意到我从来没有回答过这个问题。我最终使用的解决方案是使用媒体查询根据设备大小显式设置字体大小和图像资源。设备测试表明这适用于我所有的目标设备:iPhone、iPad、Android 手机、Android 7" 平板电脑、Android 10" 桌子。希望它可以帮助别人。

例如:

/* Start with default styles for phone-sized devices */
    p,li{
        font-size: 0.9em;
    }
    h1{
        font-size: 1.2em;
    }
    button{
        width: 24px;
        height: 12px;
    }
    button.nav{
        background-image: url('img/phone/nav.png');
    }

@media only screen and (min-device-width : 768px) { /* 7" tablets */
    p, li{
        font-size: 1.3em !important;
    }
    h1{
        font-size: 1.6em !important;
    }
    button{
          width: 32px;
          height: 16px;
    }
    button.nav{
        background-image: url('img/tablet7/nav.png');
    }
}
@media only screen and (min-device-width : 1024px) { /* 10" tablets and iPad */
    p, li{
        font-size: 1.5em !important;
    }
    h1{
        font-size: 1.8em !important;
    }
    button{
        width: 48px;
        height: 24px;
    }
    button.nav{
        background-image: url('img/tablet10/nav.png');
    }
}
于 2014-06-11T15:00:50.737 回答
2

考虑到根据 Pete LePage ( https://plus.google.com/+GoogleChromeDevelopers/posts/BKHdSgQVFBB ), target-densitydpi 已被弃用并从 Webkit 中删除,我认为更好的方法是使用媒体查询来定位高 dpi丢弃 phonegap 之前的设备

于 2014-01-08T18:28:29.143 回答
1

我有几个不同的解决方案可以建议:

  1. 使用 Javascript 动态更改视口(更多信息在这里
  2. 以rem单位而不是px设置所有尺寸。然后您可以通过调整文档字体大小来缩放所有内容。画一个例子:

    function resize() {
    var w = document.documentElement.clientWidth;
    var h = document.documentElement.clientHeight;
    var styleSheet = document.styleSheets[0];
    // ar = aspect ratio h/w; Replace this with your apps aspect ratio
    var ar = 1.17;
    // x = scaling factor
    var x = 0.1; 
    var rem;
    if (h / w > ar) { // higher than aspect ratio
        rem = x * w;
    } else { // wider than aspect ratio
        rem = x * h;
    }
    document.documentElement.style.fontSize = rem + 'px';
    }
    
于 2013-11-22T13:33:39.657 回答