`
samwong
  • 浏览: 281714 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

设置设备支持指定的屏幕

阅读更多

快速预览

  • 设置设备支持指定的屏幕
  • 屏幕兼容模式

设置设备支持指定的屏幕

虽然理论上建议大家支持所有的屏幕设备,但这确实比较麻烦而且很容易出错。我们一般最好把手机和平板分时两大类来发布2个APK这样的效果会更好。你可以理解为我们需要针对个别

boss,换个职业来对付它,并且新职业需要熟悉设置一下

让我们的App只支持手机

因为系统通常会自动缩放来使我们的资源或者布局适应大屏幕,所以我们不需要过滤大屏幕。只要我们知道实践中应该注意哪些(上篇的内容)问题,我们的App讲在大屏幕上也能很好的显示。

但你可能发现你的App不会等比缩放的非常好,或者可能你决定只为你的App配置两个不同的屏幕适配版本。这种情况下,你可以使用<compatible-screens>节点来组合管理屏幕的密度和大

小。外部服务比如android market就使用这样的信息来过滤你的App,仅支持你App配置的设备才会被显示出来。

<compatible-screens> 节点必须包含一个或更多的<screen>节点,每一个<screen>节点中指定一个屏幕配置来兼容我们的App。我们需要使用使用android:screenSize

android:screenDensity这两个属性。每一个 <screen> 节点中必须包含2个属性来指定个别的屏幕配置,如果只有一个属性,那么这个节点是无效的。

例如,如果你的App兼容small和normal大小的屏幕 , 包括所有屏幕密度的话。你就必须指定8个 <screen> 节点,因为每一个屏幕大小中都有4种密度配置。你必须写出来,下面是在manifest中的实例代码:

<manifest ... >
    <compatible-screens>
        <!-- all small size screens -->
        <screenandroid:screenSize="small"android:screenDensity="ldpi"/>
        <screenandroid:screenSize="small"android:screenDensity="mdpi"/>
        <screenandroid:screenSize="small"android:screenDensity="hdpi"/>
        <screenandroid:screenSize="small"android:screenDensity="xhdpi"/>
        <!-- all normal size screens -->
        <screenandroid:screenSize="normal"android:screenDensity="ldpi"/>
        <screenandroid:screenSize="normal"android:screenDensity="mdpi"/>
        <screenandroid:screenSize="normal"android:screenDensity="hdpi"/>
        <screenandroid:screenSize="normal"android:screenDensity="xhdpi"/>
    </compatible-screens>
    ...
    <application ... >
        ...
    <application>
</manifest>

让我们的App只支持平板

如果让我们App支持平板的话,我们可以完全放弃small屏幕的支持和优化。并在<supports-screens>节点中阻止小屏幕的设备在market上下载我们的App

实例代码如下:

<manifest ... >
    <supports-screens 
                      android:smallScreens="false"
                      android:normalScreens="false"
                      android:largeScreens="true"
                      android:xlargeScreens="true"
                      android:requiresSmallestWidthDp="600"/>
    ...
    <application ... >
        ...
    </application>
</manifest>




需要同时使用两种方法描述关于屏幕大小的支持:

  • 声明App不支持small 和normal的屏幕大小。
  • 声明App需求一个最小化可用的屏幕宽度至少为600dp。

第一种方法执行与android3.1或者更老的版本,因为这些设备是基于四种传统的屏幕大小后缀。而第二种方法requiresSmallestWidthDp属性是为支持android3.2和更高的版本,因为这是新版本的特性。

为了支持requiresSmallestWidthDp 你可能需要在android 3.2或者更高的android版本中编译它们。但在老版本中是没有这个属性的,它们会在编译时报错。所以我们新建工程的时候要选择

android3.2,并在manifest中使用minSdkVersion指定最小的SDK版本。这样的话,android比3.2还老的版本会忽略那个属性,所以就不会有运行时失败的风险。

警告: 如果使用 <supports-screens> 节点并设置large 屏幕的属性为false的话,那android market不会过滤large屏幕哦。你的App仍然可以被large屏幕的设备安装,但执行时他不会适应

屏幕。系统会模拟手机屏幕来显示。如果你想要阻止app被large屏幕的设备下载。请使用上面关于手机的<compatible-screens>节点。所以我们最好结合<compatible-screens>和<supports-

screens>。

根据不同的屏幕发布多个apk

虽然理论上建议只发布一个Apk,但在android market上徐云发布多个功能一摸一样的Apk,只为了指定不同的屏幕。例如,如果你想要发布手机和平板两2个版本,这样你应该发布两2个Apk让用户选择。但使用一个Apk还是可以达到同样的功能的。

屏幕兼容模式

图1. 在android3.2平板上用兼容模式运行的一个App

图2. 和图1同样的App,但兼容模式关闭掉了

注意: 如果你已经开发了一个android3.0版的App,但它可能会为更大的屏幕(例如平板)调整布局,为了最好的用户体验,你应该关闭兼容模式。这一节就是我们需要的讲的内容

屏幕兼容模式是不能在大屏幕上适当调整的。在android1.6开始,就已经支持各种各样的屏幕大小并会自动调整App的布局以让它们适应每一个屏幕。但是你的App如果没有顺利的参考上一

篇的内容,那么在大屏幕上它可能会偶尔遇到显示问题。为了解决这个问题,屏幕兼容模式会让你的App能有多一点的机会用在大屏幕上。

有两种屏幕兼容模式,它们稍微有些不同:

版本1 (Android 1.6 - 3.1)
系统绘制App的UI就想在邮票窗口里绘制那样。系统绘制App的布局会使用黑边填充屏幕剩余的区域。

在1.6就引入了屏幕兼容模式这个概念,并且那时候仅为320dp*480dp的原始屏幕而设计(非常关键的一点,你有没有发现平板的密度都是mdpi的)。因为有一些老旧的设备执行于android1.5上,并且这个版本可能在将来的不久被废弃掉

关闭屏幕的兼容模式,你只要简单的设置android:minSdkVersionandroid:targetSdkVersion为4或者更高,还或者设置android:resizeable="true"就OK了。

版本2 (Android 3.2 或更高)
系统绘制App的UI会基于默认的尺寸(320dp*480dp)填满屏幕。本质上就像一个"zoom"会放大你的布局,这通常会使你的某些控件模糊。

引入版本2的模式是为了在android3.2或者更高的平板上,帮助你的App即使没有实现上篇讲的内容也能能平板上运行。

大体上,执行于android3.2或更高版本的大屏幕设备允许用户打开屏幕兼容模式,当App没有在manifest 中明确的声明它支持大屏幕时。在这种情况下,一个图标会出现在系统栏的时钟旁边,用户可以选择屏幕兼容模式开或者关(如图3)。如果一个App明确的声明它不支持大屏幕,那么屏幕兼容模式会一直打开,用户不能关闭它

Figure 3. 弹出一个屏幕兼容模式的开关.

作为一个开发者,当App使用屏幕兼容模式时我们有控制权。对于运行在android3.2或以上的大屏幕设备,下面的内容会教我们怎么关闭或者打开屏幕兼容模式,选择权在于你。

关闭屏幕兼容模式

如果你的APP的目标主要是低于android3.0的,但为了防止有可能我们的App会运行到平板上,我们应该关闭它。因为用户打开兼容模式后效果可能不太理想。

默认的, 在android3.2或更高版本上屏幕兼容模式会提供给用户一个选择。只要满足以下的其中一个条件

  • 你的App设置android:minSdkVersion and android:targetSdkVersion"10"或者更小的数字(要参考api level),并且没有明显的声明它支持大屏幕 (<supports-screens> 节点中不要声明它)
  • 你的App设置android:minSdkVersion and android:targetSdkVersion"11"或者更高的数字(要参考api level) 并且在<supports-screens>节点中声明了它,但值为false(例如
     android:largeScreens="false")

完全的关闭屏幕兼容模式的用户选项并移除那个图标,我们可以按照下面的方法做:

  • 最简单的:

    在manifest 中,添加 <supports-screens>节点并指定android:xlargeScreens为true

    <supports-screens android:xlargeScreens="true"/>
    
    

    它声明了你的App支持所有的大屏幕,系统就会一直调整布局来适配屏幕。它忽略<uses-sdk>属性。

  • 简单并还有其他的效果:

    在 manifest' <uses-sdk> 节点下, 设置 android:targetSdkVersion 为"11"或更高:

    <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="11"/>
    
    

    就是说你的App支持android3.0并也可以为大屏幕的设备工作。

    如果屏幕兼容模式在你改变了上面的设置后还是打开的,那么你就需要检查manifest中的<supports-screens>节点了,确定它没有设置为false。

打开屏幕兼容模式

当我们的App目标位android 3.2或更高时,我们能使用<supports-screens>节点来设置某些屏幕开打它的兼容模式。

  • 在manifest 中, 添加<supports-screens>节点并指定android:compatibleWidthLimitDp为“320”
    <supports-screensandroid:compatibleWidthLimitDp="320"/>
    
    
    
    这表明,最大的“最小屏幕宽度为你的应用程序设计320dp。这样一来,只要有一个设备的其中某一个比较小的边只要大于320dp就将提供屏幕兼容模式,并为用户可选功能。

    注意: 当前屏幕兼容模式只模拟320dp的宽度,如果你的android:compatibleWidthLimitDp大于320,它就不适应其他设备了。

  • 如果你想强制用户使用兼容模式,那么你就可以使用android:largestWidthLimitDp值。
    <supports-screensandroid:largestWidthLimitDp="320"/>
    
    

    看起来好像都是打开兼容模式,但区别在于largestWidthLimitDp是不允许用不关闭的,compatibleWidthLimitDp可以允许用户关闭

分享到:
评论

相关推荐

    分布式屏幕是一种屏幕虚拟化能力,支持用户指定组网认证过的其他OpenHarmony设备的屏幕作为Display的显示区域

    分布式屏幕是一种屏幕虚拟化能力,支持用户指定组网认证过的其他OpenHarmony设备的屏幕作为Display的显示区域。在分布式硬件子系统中,分布式屏幕组件提供跨设备屏幕能力调用,为OpenHarmony操作系统提供系统投屏、...

    API之网络函数---整理网络函数及功能

    SetTextAlign 设置文本对齐方式,并指定在文本输出过程中使用设备场景的当前位置 SetTextCharacterExtra 描绘文本的时候,指定要在字符间插入的额外间距 SetTextColor 设置当前文本颜色。这种颜色也称为“前景色”...

    Dell服务器BIOS设置.docx

    通过系统设置程序,您可以: 在添加或删除硬件后更改 NVRAM 设置 查看系统硬件配置 启用或禁用集成设备 设置性能和电源管理阈值 管理系统安全 选择系统引导模式 系统设置程序也能供您指定引导模式,以便于安装操作...

    腾讯云trtc实时音视频完整案例 音视频+共享屏幕直播

    发送自定义音频、视频数据支持外部指定数据帧时间戳。 增加混流 setMixTranscodingConfig API 的设置回调函数。 强化 setMixTranscodingConfig 接口,支持 roomID 参数,用于跨房连麦流混流。 强化 ...

    bios的设置,,,,,

    Config Warnings 警告设置:该选项用来设置在系统使用较低电压的电源适配器或其他不支持的配置时是否报警,设置为"DISABLED"禁用报警,设置为"ENABLED"启用报警 Internal Modem 内置调制解调器:使用该选项可启用或...

    ZD Soft Screen Recorder(屏幕录像机) v11.2.0.zip

    软件可以是实现指定的区域屏幕录像,并实时同步录制音频,能够捕捉D3DOpenGL等的游戏,也可用来制作视频教程。软件录制速度非常快、占用资源小,对计算机本身无甚速度影响,支持压缩为多种主流的视频格式以便于传输...

    局域网中控视频播放器,udp,tcp,串口,web控制,语音识别控制

    支持选取指定屏幕显示播放,即支持选取副屏播放。 支持开机自启。 支持命令集成,编辑一条命令 设定延时时间 执行多条连带命令。 支持影片播放完毕选择循环播放,返回待机,最后一帧,第一帧模式 主要播放控制含有...

    Dell服务器BIOS设置完整版.docx

    通过系统设置程序,您可以: 在添加或删除硬件后更改 NVRAM 设置 查看系统硬件配置 启用或禁用集成设备 设置性能和电源管理阈值 管理系统安全 选择系统引导模式 系统设置程序也能供您指定引导模式,以便于安装操作...

    大黄蜂录屏软件-屏幕录制软件

    大黄蜂录屏软件是一款集视频录制、屏幕录制等功能于一体的高清屏幕录制软件,用户通过软件可以录制微课、电脑屏幕桌面、在线视频、聊天视频、操作教程、录音等的一款轻量级的视频录屏软件。 最新版本:大黄蜂录屏...

    Windows API函数大全

    SetTextAlign 设置文本对齐方式,并指定在文本输出过程中使用设备场景的当前位置 SetTextCharacterExtra 描绘文本的时候,指定要在字符间插入的额外间距 SetTextColor 设置当前文本颜色。这种颜色也称为"前景色" ...

    多媒体教室

    注: TCP/IP 设置完成后请用 PING 命令验证网络是否连通,如网络不通请尝试检查相应网络设备、重新安装 TCP/IP 协议等手段来解决问题。  2.3产品安装  教师机的安装 1. 插入安装光盘后会自动运行安装程序,进入...

    中文API支持库(1.0-0

    注解:如lpKeyName参数为NULL,那么lpReturnedString缓冲区会载入指定小节所有设置项的一个列表。每个项都用一个NULL字符分隔,最后一个项用两个NULL字符中止。也请参考GetPrivateProfileInt函数的注解。 _取系统...

    一卡通软件

    注意,副钱包补贴默认最大650.00元,可通过消费设备参数设置,把补贴单位从分改为角,则可支持最大6500.0元。一般建议使用副钱包补贴。消费设备参数设置具体内容,详见本文6。 2) 增加补贴类型后,需要进行人员绑定...

    scrcpy-win64-v1.25.rar 安卓投屏电脑神器

    scrcpy[1] 是一款开源的安卓设备投屏工具,通过 USB 或 Wi-Fi 与设备连接后就可以...scrcpy 启动时是可以指定参数的,只要指定 -S 就可以关闭设备屏幕了 scrcpy -S 手机息屏投屏 还有其它的指定参数大家可以自己去查阅

    大屏幕系统设计方案.doc

    大屏幕控制管理软件具有自主知识产权,可向用户开放系统通讯协议,提供二次开发 接口,满足开发应用软件的需求,并可根据用户需求提供定制,满足用户指定的特别控 制需要。 系统的高度集成性 大屏幕显示系统的优势...

    金盾视频加密器V2014 - 支持WIN8,支持32位和64位操作系统

    2、新增绑定用户移动设备功能,比如U盘、移动硬盘、手机、SD存储卡等,远程自动绑定,用户播放时插入绑定的移动设备即可,用户换系统换硬件无需再授权,极大的方便了用户和商家,商家再也不用发愁用户总是更换系统、...

    QuerySize:使用 Swift 编写特定于设备或屏幕尺寸的代码

    查询大小Swift 的一些美味,可以让编写设备和/或屏幕尺寸特定的代码更容易。要求iOS 7.0+ / OS X 10.9+ Xcode 6.3+ 虽然 QuerySize 支持 iOS 7.0,但 iOS 7.0 不支持框架,因此您必须为非应用商店应用手动嵌入框架或...

    威眼企业计算机监管系统 v3.6.11.zip

    禁止U盘、可移动硬盘等USB存储设备,并且支持设置只读U盘。 3、禁止安装程序:禁止员工私自安装程序,如禁止安装游戏软件、禁止安装炒股软件等。 4、禁止访问指定的网站:禁止员工网购、禁止看视频、禁止玩在线...

    专业 3D 视频播放工具 Stereoscopic Player 2.5.1 中文多语免费版.zip

    您可以在WINDOWS系统中设置显示设备的屏幕分辨率和屏幕刷新率,请参照显示设备的技术手册。 需要注意的是,第二个显示设备通常是要在系统的显示属性中启用才可以正常使用。部分型号的显示卡有独立的属性设置界面,请...

Global site tag (gtag.js) - Google Analytics