zoukankan      html  css  js  c++  java
  • cordova 5.4版本 适配全面屏 底部黑边问题

    在全面屏发布之后,Android官方提供了适配方案,即提高App所支持的最大屏幕纵横比,实现很简单,在AndroidManifest.xml中可做如下配置:

    更改android.max_aspect值,其中ratio_float为浮点数,官方建议为2.1或更大,因为18.5:9=2.055555555……,如果日后出现纵横比更大的手机,此值将会更大。

    <manifest>
        <application>
            <meta-data android:name="android.max_aspect" android:value="2.1"/>
        </application>
    </manifest>

    因为我们的cordova版本较旧,所以只能用hook的方式,直接修改AndroidManifest.xml,我们是ionic项目所以直接把下面的hook文件放到after_prepare文件夹内即可。

    如果hook文件没有执行,需要在config.xml内加一个配置去执行。<hook type="after_prepare" src="hooks/after_prepare/set_full_screen.js"/>

    hook文件代码如下

    set_full_screen.js

    #!/usr/bin/env node
    var _           = require('lodash');
    var fs          = require('fs');
    var path        = require('path');
    var spawnSync   = require('child_process').spawnSync;
    var rootdir     = process.argv[2];
    var xml2js = require('xml2js');
     //xml->json
    //xml2js默认会把子子节点的值变为一个数组, explicitArray设置为false
    var xmlParser = new xml2js.Parser({explicitArray : false, ignoreAttrs : false})
    //json->xml
    var jsonBuilder = new xml2js.Builder();
    
    fs.readFile('platforms/android/AndroidManifest.xml','utf-8',function(err,xml) {
    
      // xml -> json
      xmlParser.parseString(xml, function (err, result) {
         
          // var time=new Date().getTime();
          // console.log(result.widget["$"]["version"].replace(/./,'0').replace(/./,''))
         //  result.manifest["meta-data"]=[
         //  { '$': { 
         //    'android:name': 'android.max_aspect',
         //    'android:value': '2.1' 
         //     } 
         //   }
         // ]
         result.manifest["application"]["meta-data"]=[
          { '$': { 
            'android:name': 'android.max_aspect',
            'android:value': '2.1' 
             } 
           }
         ]
         // result.manifest["application"]["$"]["android:resizeableActivity"]="true"
            //将返回的结果再次格式化
          // console.log(JSON.stringify(result));
          //json --> xml
          var builder = new xml2js.Builder( );
          var jsonxml = builder.buildObject(result);
          fs.writeFileSync('platforms/android/AndroidManifest.xml', jsonxml);
          console.log('----------');
          console.log('更新AndroidManifest.xml适配全面屏');
          console.log('----------');
           
      });
    })


     

  • 相关阅读:
    数据挖掘、机器学习、人工智能学习笔记
    SQL Server 定价及授权方式
    数据仓库的架构以及数据分层【转】
    java各历史版本官网下载
    VMware三个版本workstation、server、esxi的区别
    顶级项目孵化的故事系列——Kylin的心路历程【转】
    Oracle数据库学习笔记
    数据仓库学习笔记
    多维数据库介绍【转】
    ROLAP、MOLAP和HOLAP区别
  • 原文地址:https://www.cnblogs.com/dannyxie/p/9455000.html
Copyright © 2011-2022 走看看