React Native Android杂记

  1. 集成到现有Android工程的时候, 报错: Error: Requiring module "8" which threw an exception. 后来发现这篇文章http://www.jianshu.com/p/d63c9a22973d . 没有按照官方教程, 而是新建了一个AwesomeProject(react-native init AwesomeProject), 将node_modules和package.json拷贝过来, 就搞定了.

  2. 做适配的时候,由于设计师只出iPhone6尺寸的设计图,于是iOS使用的方式是以宽度为基准进行等比缩放。在React Native也使用了这种方法。字体也是通过fontSize乘以宽度比系数。在大多数安卓手机下没有问题,但是发现在LG某款手机下,却出现了一个奇怪的现象——字体比一般的大。后来发现是这个原因:安卓有个概念是fontScale,代表字体比例,iOS并没有这个概念。在Dimensions.get('window')的结果中,iOS只有width,height和scale。这个scale代表的是像素密度,即一个dp下的像素个数。因此,可以理解为iOS默认所谓的fontScale就是scale。
    将Dimensions.get('window')结果打印,如下:

机型 屏幕宽 屏幕高 scale fontScale
ip5s 320 568 2 *
ip6/6s 375 667 2 *
ip6p 414 736 3 *
三星note3 360 640 3 3
nexus6 411 683 3.5 3.5
三星s4 360 640 3 3
LG nexus5 360 592 3 3.4499

上面表格中,安卓手机的机型名字可能不一定对(妈蛋我是iOS开发),要表达的意思就是:你看上面那个LG的手机,scale和fontScale不一样,这样就会导致,同样的fontSize是13,在LG手机上,字体就会显示的大一点。
解决方案:字体等比缩放再乘以一个scale/fontScale的字数就好了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,539评论 25 709
  • 本文旨在指导React Native初学者如何使用React Native初步构建Android应用。在看本文之前...
    KenChoi阅读 4,527评论 0 16
  • 人类诞生是地球上最伟大事件。可是人类是怎么来的?我们是谁?我们要到哪儿去? 本世纪最大的科学发现之一,就是人类起源...
    量子哥阅读 1,655评论 5 12
  • 一 视图控制器1.1什么是视图控制器(UIViewController)?为什么使用视图控制器?iOS应用由于设备...
    037e3257fa3b阅读 212评论 0 0
  • tj养了只猫,但是养伐养伐就会到二维动画空间里去,自己也变成动画片的Q版人物,能量是通过洗衣机的管子传递的。。。然...
    锦毛兔白玉瓜阅读 146评论 0 0