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('----------');
           
      });
    })


     

  • 相关阅读:
    Linux文件属性
    [Oracle] Listener的动态注册
    jQuery easyUI Pagination控件自定义div分页(不用datagrid)
    桂林电子科技大学出校流量控制器Android版1.0.0
    php使用check box
    Python windows ping
    Python selenium chrome 环境配置
    Linux wget auto login and backup database
    PyQt4 ShowHMDB show sqlite3 with QTableWidget summary
    PyQt4 py2exe 打包 HardwareManager
  • 原文地址:https://www.cnblogs.com/dannyxie/p/9455000.html
Copyright © 2011-2022 走看看