且谈布局适配和日志框架
前言
这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.但dp和px的比例会随着屏幕密度的变化而改变,不同设备有不同的显示效果.设置宽度或者高度等属性时,推荐使用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);
来源:oschina
链接:https://my.oschina.net/u/57046/blog/78034