首先要说一下现在手机的UI风格,其实之前包括现在,Android
的界面设计都是模仿iOS
的,就拿我之前的公司,所有的UI
图都是根据6s
的尺寸,iOS
的设计风格来设计得到,Android
同学有时候就抱怨,这个好难实现,但是在iOS
上,实现起来就很容易了。那么在2014年,谷歌推出了Material Desisgn
,一套全新的界面设计语言,但是不少Material Desisgn
的效果却很难实现,而Android
中却几乎没有提供相应的API
支持,于是在2015年,谷歌推出了一个Design Support
库,这个库将Material Desisgn
中最具代表性的一些控件和效果进行了封装,那么,今天我们就来看看有哪些常用的控件。
很早以前就听闻<JavaScriptCore/JavaScriptCore.h>
的大名了,只是没有正面接触过,有的也只是间接接触过,比如ReactNative
,它渲染界面的核心就是<JavaScriptCore/JavaScriptCore.h>
。但是今天就不得不和它有一次正面的接触了,公司要做一个功能,需要Native
和js
方法之间的互调,所以,本篇文章就说说如何实现。当然,本篇文章说的都是基础。
本篇文章主要说一下如何利用ReactNative
的jsbundle
机制来实现App
的热更新。
前段时间iOS
界发生了一件大事,苹果禁止含有热更新或者热修复的APP
上架,这里主要是禁止使用runtime
的一些特性。但是ReactNative
不同,它没有使用到runtime
特性,并且好多人已经证实,ReactNative
应用依然可以上线。
其实好多应用并不是使用ReactNative
直接开发,而是在原生应用的基础上,导入ReactNative
。iOS
最好使用cocoapods
导入,Android
使用build.gradle
添加依赖包。本篇文章主要包含三个部分:环境搭建、iOS
热更新和Android
热更新。
前段时间我有说过Handler
、Message
、Looper
三者之间的关系,它们可以解决线程间通信,可以用作子线程处理耗时操作,主线程刷新UI等。今天我要说的是另外一种解决方案:AsyncTask
。它的内部还是使用异步消息处理机制,只是Android
对这三者进行了高度的封装。如果你对异步消息处理机制还不是很清楚的话,你可以看看这篇文章:一天一Android之异步消息处理机制。来看看AsyncTask
到底如何使用。
写在此文章之前
最近一直在研究Android
,我开始学习Android
是有原因的,前段时间写过一个类似于一元夺宝的跨平台APP,里面的好多功能是ReactNative
没有提供的,好在现在ReactNative
开源社区里面已经有好多优秀的开源库了,就直接拿来用了,但是,这并不能满足开发中一些特殊的需求,这个时候就要写js和原生之间的桥接了,因为我的老本就是iOS
,所以写iOS
的桥接很容易。但是写Adnroid
就有点费力了,因为我对Android
一窍不通。但是想学好ReactNative
,只会iOS
是不行的,所以我就开始了我的Android
之旅。还有,假如ReactNative
在以后死掉了,我也新郑了Android
开发这一新技能,一本万利。
Android
的博客也写了几篇了,我要回过头来说一些ReactNative
的东西,所以,如果你看到我今天在说Android
,明天又说ReactNative
,你不要奇怪,这很正常。
那今天就先来说说关于js和原生的桥接。
阅读全文今天愚人节,先祝大家愚人节快乐!
今天来说一下Android开发中经常使用到的一个类:Fragment
。由于Android
屏幕的碎片化,Android
为我们提供了一个和方便的类来使我们的APP可以适应各种屏幕的手机和平板,当然,Fragment
的功能远不止是为适应屏幕而生。你可以把Fragment
当成Activity
的一个界面的一个组成部分,甚至Activity
的界面可以由完全不同的Fragment
组成,更神奇的是Fragment
拥有自己的生命周期和接收、处理用户的事件,这样就不必再Activity
写一堆控件的事件处理的代码了,更重要的是,你可以动态的添加、替换和移除某个Fragment
。