且谈布局适配和日志框架

为君一笑 提交于 2021-01-15 07:03:46

且谈布局适配和日志框架

前言

    2个星期都在做xxxx海外版本,发觉原有的布局体系在做国际化时异常不灵活.原有的layout时根据不同的分辨率有不同layout文件相对应,虽然能解决机型Rom适配的问题,但给维护带来了一定的难度,就比如x架shelf_layout.xml这个文件,一共有3,维护起来相对的麻烦,而且容易漏改.其实可以使用dimens的方法用于做适配,这种方法会比写不同的layout来的简单高效.

另外,熊猫看书里有自己的一套日志框架,但是这套日志框架不够灵活,只有在logcat连接的时候才能查看到日志,这样给测试和软件发布之后异常的监控带来不便. Microlog日志框架是在J2ME上用到比较多,也移植到android上了. Microlog能够通过设置选择将日志文件写到logcat/文件/网络目标中.

1.  dimens适配

由于android设备各异且rom版本众多,所以像xxxx这样就会在res的里写不同的layout文件,这样所带来的风险就是维护麻烦而且容易出错.其实可以使用dimens来建立尺寸值来解决适配中界面的问题.

可以在values中建立dimens.xml代码中使用Resources.getDimension()获得尺寸尺寸值,获取的值是经过dpi换算的.在布局中直接利用@dimens/view_width的方式获取尺寸值.字体同样可以使用这种方式来解决.

dimens.xml

<resources>

        <dimen name="view_width">20dp</dimen>

</resources>

 

<dimen name="dimen_name">dimen_value单位</dimen>

度量单位:

px(象素): 屏幕实际的象素,常说的分辨率800*480 pixels,就是横向800px, 纵向480px,不同设备显示效果相同.

in(英寸): 屏幕的物理尺寸, 每英寸等于2.54厘米.

mm(毫米): 屏幕的物理尺寸.

pt(): 屏幕的物理尺寸, 1/72英寸.

dp/dip: 与密度无关的象素,一种基于屏幕密度的抽象单位.在每英寸160点的显示器上,1dp = 1px.dppx的比例会随着屏幕密度的变化而改变,不同设备有不同的显示效果.设置宽度或者高度等属性时,推荐使用dp(dip)作为单位.

sp: 与刻度无关的象素,主要用于字体显示,作为和文字相关大小单位.

 

2.  microlog4android

android自身就有一套logcat的日志框架,xxxx也是基于这个日志的,另外还封装了一套专门写文件的日志,而且这2个是分开的,QA测试的时候或者发布之后异常跟踪相对有点麻烦. Microlog4Android就是在logcat的基础上封装的,实现将日志写入locat/文件/网络目标.

microlog4android,通过引进microlog4android-1.0.0.jar,并在assects下配制microlog.properties文件,或者在应用初始化的时候注册Appender,formatter.

microlog.properties:

microlog.level=DEBUG

microlog.appender=LogCatAppender;FileAppender

microlog.formatter=PatternFormatter

microlog.formatter.PatternFormatter.pattern=%c [%P] %m %T

 

microlog.properties中可以配制log级别,以及输出地方和输出格式.在应用初始化的时候就可以将microlog4android启动并加载进来.

    //加载

    PropertyConfigurator.getConfigurator(this).configure();

   

    //定义

    private static final Logger logger = LoggerFactory.getLogger();

   

    //日志

logger.debug("Test Microlog4Android");

 

也可以通过一下方式加载:

    private static Logger logger = LoggerFactory.getLogger(Log.class);

     

    logger.setLevel(Level.DEBUG);

    PatternFormatter formatter=new WildcardFormatter();

    formatter.setPattern("%d [%P] - %c: %m %T");

   

    LogCatAppender logcatAppender=new LogCatAppender();

    logcatAppender.setFormatter(formatter);

    logger.addAppender(logcatAppender);

   

    FileAppender fileAppender=new FileAppender();

    fileAppender.setAppend(true);

    fileAppender.setFileName("log/pandareader.log");

    fileAppender.setFormatter(formatter);

 logger.addAppender(fileAppender);

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!