- 博客(59)
- 资源 (26)
- 收藏
- 关注
原创 2分钟了解kotlin:优点,缺点,设计原则
1. 优点kotlin提供了很多好的特性,比如:null安全检测,属性访问,unchecked exceptions, publication有更详细的介绍。1.1 java 自动转换成kotlinkotlin项目开发总结有介绍如何使用,这个是有JetBrains提供的,目前已经集成到了IDEA/AS, 虽然它不是很完美(我的上篇博客也已经介绍到了),但是对比重新用Kotlin开发一个完全一样功能的
2017-07-08 21:23:35
15311
原创 kotlin项目开发总结
前言最近都是在用Kotlin开发Android项目,总结了一些心得在这里和大家分享1. 定义变量kotlin定义变量有三种形式1)使用var定义可修改变量,最常见的用法,也是很灵活,private var point: Point? = null//使用的时候,因为point是可空的,所以有两种用法println(point?.x) //如果你不能确保point是否为空println(point
2017-07-07 18:13:18
1174
原创 Android layout系列-autolayout
1. 前言在Android项目开发的过程,开发者需要根据UI设计师的设计效果图做各种各样的机型适配,这往往是最麻烦和最浪费时间的。下面几种方案可供选择。support multi screenandroid-percent-support-libandroid-percent-support-extendAndroidAutoLayoutAndroidAutoLayout是最
2017-07-06 09:09:23
861
原创 UltraEdit激活版
最近因为要看kotlin源码,对比了sublime和source insight;UltraEdit相对来说更适合看拥有42M多的kotlin源码。有个免费版的UltraEdit可以使用。免费ue下载
2017-06-30 09:27:36
634
原创 kotlin源码分析-标准内置函数
1. TODO方法声明:@kotlin.internal.InlineOnlypublic inline fun TODO(): Nothing = throw NotImplementedError()方法使用:fun test(){ TODO("Not implemented")}方法说明:有点类似于java的//todo,但是不同的是,因为它的方法告诉我们,它会抛出一个异常,也就是
2017-06-29 22:41:48
1851
原创 kotlin源码分析-分析和使用Collections集合
集合api提供了很多有用的方法,基本包含了java集合类中的所有方法,提供了更多的扩展。我们来看看有什么特别的方法,以及怎么使用,深入讲解闭包的封装和使用/** * Returns `true` if all elements match the given [predicate]. */public inline fun <T> Iterable<T>.all(predicate: (T)
2017-06-25 17:21:14
2385
原创 kotlin进阶-快速开发
前言kotlin很强大,而且可以兼容java一起使用,为了能够在实际项目开发中快速使用,整理了一个模板工程。代码地址:https://github.com/Sherchen/SimpleKotlinBoilerplate介绍为了快速上手,结合了当前流行的一些框架,开发了 干货网的一个简单demo. 采用闭包方式进行代码封装,可以从代码量上比较java,确实减少了很多。1. 采用MVPMVP采用的是
2017-06-24 17:35:45
720
原创 新款安卓架构设计-Architecture Components介绍
架构模板篇介绍了mvp,mvi,mvvm(databinding),今天介绍的这款安卓架构框架是Google在今天5月17号推出的:Architecture Components. 它的第一版本解决如下问题: 1)自动管理activity和fragment的生命周期,从而避免资源和内存溢出问题 2)持续化java对象到sqlite数据库主要包括组成部分: 1)Lifecycle Compone
2017-06-21 16:50:53
699
原创 开源一个动画demo
源码下载地址:https://github.com/Sherchen/AnimationsDemo ,欢迎star, fork效果图Transition动画if api > 21, use activity transition animation, otherwise use Transitions-Everywhereif(TransitionHelper.isSysTransitionEn
2017-06-21 13:23:06
452
原创 迁移到Android Studio 3.0
前言Google 发布了Android Studio 3.0,有很多功能值得我们使用,比如:Android Profiler, Android Plugin for Gradle 3.0.0(com.android.tools.build:gradle:3.0.0-alpha3)等。 今天这篇主要介绍下Android Plugin for Gradle 3.0.0.1.更新配置Gradle需要更新
2017-06-20 22:03:41
23054
原创 Gerrit使用篇-提交代码,合并代码
前言在使用gerrit之前,必须对git有一定的熟悉, Gerrit安装篇介绍了怎么安装Gerrit,这篇会简单介绍下Gerrit如何使用,下面这张图是Gerrit的生命周期 下面做个比较: 下图是一个普通的git 下图是gerrit 仔细比较:gerrit多了一个”PendingChange”,这部分是做Code Review的,然后管理员verify之后,PendingChange代码
2017-06-19 20:46:57
28902
原创 Gerrit打包安装,只要下载一个文件就可以了
前言Gerrit是Google开发的一款Code Review工具,可以非常方便通过网页来实现代码审核。1.下载参考bitnami的方式,我把使用gerrit需要的东西全部打包在一起,需要的时候下载下来,然后改下相应的配置文件就可以了,下载地址: Gerrit_full解压之后的目录:2.启动apache服务器有两个Apache目录:apache2和apache24_64,前面是win32,后面是
2017-06-18 11:53:59
5020
原创 Android databinding
配置环境data binding是Google推出的一个实现MVVM的一个支持库。可以极大的简化开发工作。它非常灵活,且支持从android2.1开始。为了使用data binding,Android gradle plugin必须是1.5.0-alpha1或者以上版本, Android Studio 1.3或者以上。在项目项目下的build.gradle添加代码:androi
2017-06-18 09:17:27
672
原创 Android性能优化典范第5季-优化启动时间
1. 了解APP启动一个APP的启动等待时间越短,用户留在APP的可能性就越大,反之用户可能等待不耐烦,直接切到其他的APP了。所以加快一个APP的启动速度是非常重要的。Android系统提供两种启动模式,冷启动和温启动,冷启动:用户点击桌面图标->系统显示启动窗口->APP窗口,温启动:用户点击最近启动列表->APP窗口。 。简单描述下Android系统为一个APP的启动策略:首先用户点击l
2017-06-17 16:52:33
913
翻译 对比groovy和java不同点。
Groovy是一种基于JVM(Java虚拟机)的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码。由于其运行在 JVM 上的特性,Groovy 可以使用其他 Java 语言编写的库。目前对我来说,groovy主要是用于编写gradle脚本。对于java开发者来说,学习groovy相当容易,只需要
2017-06-15 21:56:20
873
原创 lint/checkstyle/findbugs/pmd使用汇总
前言在开发应用的过程中,往往更关注功能和用户体验。其实优化代码,可以预防和减少一些可能会报出的问题。首先我们必须承认是人都会犯错,使用一些工具可以检查,然后修改问题。1.lint看下官方对lint的定义,如下图 lint的原理如下 使用lint,可有很多方式,包括下面但不只:命令行gradleAS的Inspect Codelint和proguard一样,可以写自定义过滤检查,有如下方式:
2017-06-14 22:36:21
1504
原创 安卓多渠道打包汇总(很全面,囊括了几乎所有)
前言有一次,因为市场部通知我要打30个渠道包,然后我傻傻的用了AS打所有的渠道包,结果花了30多分钟,这是一次痛苦的经历了^_^,所以今天就在这里汇总下当前大家都在用的多渠道打包方法,比较它们的优缺点。你可以找到一款适合你的方法。1. 使用AS实现多渠道打包其实就是用了AS的gradle脚本productFlavors来完成多渠道打包。下面我写的,为了灵活性,我把渠道放到了一个txt文件,有兴趣的话
2017-06-13 17:25:50
2542
原创 Weex开发-致native移动开发者
前言在学习weex之前,先要了解,weex推出的背景。当前移动开发可以分为三种:Native App, Web App, Hybrid App. Native App特点: 性能好 完美的用户体验 开发成本高,无法跨平台 升级困难(审核),维护成本高Web App特点:开发成本低,更新快,版本升级容易,自动升级跨平台,Write Once , Run Anywhere无法
2017-06-12 11:42:56
453
原创 kotlin深入1
前言刚好这段时间没什么事,抓紧时间看了下几个kotlin的开源项目,在这里做个自我汇总。1.兼容性kotlin可以完全兼容Java,以前积累的Java库和Java世界很好用的开源框架,比如retrofit,rxjava,dagger,butterknife可以直接拿过来用。所以有信心的话可以考虑新项目直接从kotlin开发,当然项目评估的时候,要注意时间,毕竟新语言刚开始用的不会像Java那么熟练2
2017-06-06 17:20:19
786
原创 APP性能-内存优化-实际分析
前言项目开发过程中,因为一些不好的编码习惯导致App运行过程中出现内存泄漏,APP卡顿;甚至内存溢出(OOM),APP强行退出,这对用户体验来说是非常不好的。1.内存泄漏(Memory Leak)内存泄漏出现的原因,是因为一些对象没有被使用,但是在GC Roots是不可达的,那么GC无法正常回收。内存泄漏会产生以下问题。1.1 导致App卡顿, ANR内存泄漏会使得可用内存越来越少,我们知道,可用内
2017-06-04 17:22:56
1106
原创 APP性能-内存优化-内存管理认知
前言作为一名Java程序员,我们不需要像C/C++那样为每一个new出来的对象手动delete/free释放内存。因为有GC(垃圾回收器)的自动回收机制会帮我们自动处理。正因为我们把这些操作交给了JVM,所以如果出现内存溢出和内存泄漏的情况,如果对JVM不熟悉,往往会很难找出问题所在,进而解决问题。所以要对内存使用进行优化,必须先熟悉Java的内存机制。1.了解Java的内存管理我们都知道andro
2017-06-04 10:58:44
2081
原创 使用Travis CI自动打包APK,并发布到fir
Travis CI 是目前新兴的开源持续集成构建项目,越来越大的大公司也在使用Travis CI, Github每天构建量都在4000以上。我们为什么不试试呢。前言我们平常的发布流程大概如下: 使用Travis CI,可以简化如下: 想象这样的场景:马上要发布内测版本了,合并代码之后,开始用IDE打包,打包完成之后再发布到fir,这样整个流程下来估计要10几分钟,电脑被占用其他事情也做不
2017-06-03 16:08:37
3122
原创 kotlin汇总10-Java调用kotlin
Java可以很容易的调用kotlin代码1属性比如kotlin有var firstName: String 其实等同于在Java中下面的定义private String firstName;public String getFirstName() { return firstName;}public void setFirstName(String firstName) { th
2017-06-02 22:28:57
1910
原创 kotlin汇总9-在kotlin中调用java
1.在kotlin中调用Java下面的几乎全java代码都可以直接在kotlin使用import java.util.*fun demo(source: List<Int>) { val list = ArrayList<Int>() // 'for'-loops work for Java collections: for (item in source) {
2017-06-01 20:42:44
2548
原创 kotlin汇总8-其他2
1.Null安全1.1通过代码来理解var a: String = "abc"val l = a.length // oka = null // compilation errorvar b: String? = "abc"val l = b.length // error: variable 'b' can be nullb = null // ok1.2安全调用
2017-06-01 19:59:11
409
原创 kotlin汇总8-其他1
1.解构声明(Destructuring Declarations)声明val (name, age) = person 使用的时候println(name)println(age)内部机制是下面这样val name = person.component1()val age = person.component2()在for循环的时候还可以这样for ((a, b) in collection)
2017-06-01 18:12:01
317
翻译 kotlin汇总7-Coroutines
在kotlin1.1,Coroutines还处于实验阶段。 有些API启动耗时操作比如:网络IO,文件流IO,CPU/GPU要求高的工作,它们会导致调用阻塞直到操作完成。Coroutines通过一种更便宜,更容易控制的suspension(挂起)操作,来避免线程阻塞。Coroutines把复杂的运算移到了libraries,因而简化了异步编程。在Coroutine中,程序逻辑可以顺序表达(同步),
2017-06-01 17:41:39
1057
原创 kotlin汇总6-函数
1.基础知识函数声明使用fun关键字fun double(x: Int): Int {}函数调用val result = double(2) //调用普通函数Sample().foo() // create instance of class Sample and calls foo//调用类成员函数使用infix标记// Define extension to Intinfix fun Int
2017-06-01 16:33:46
392
原创 Kotlin汇总5-内部类,枚举类,对象,代理
1. 内部类内部类是内嵌类在kotlin是不一样的,比如下面是内嵌类class Outer { private val bar: Int = 1 class Nested { fun foo() = 2 }}val demo = Outer.Nested().foo() // == 2下面是内部类class Outer { private val b
2017-05-31 17:40:03
489
原创 Kotlin汇总4-泛型
Java的泛型比较弱,如下面代码// JavaList<String> strs = new ArrayList<String>();List<Object> objs = strs; // !!! The cause of the upcoming problem sits here. Java prohibits this!objs.add(1); // Here we put an In
2017-05-31 17:11:35
468
原创 Kotlin汇总3-接口,可见作用域,扩展,数据类,密封类
1.接口kotlin的接口比较像Java8,可以有实现的方法interface MyInterface { fun bar() fun foo() { // optional body }}接口中的属性可以是抽象的,也可以是提供实现的。interface MyInterface { val prop: Int // abstract val pro
2017-05-31 16:22:22
548
原创 Kotlin汇总2-类构造,属性,字段
1.类构造函数1.1 基础构造函数class Person constructor(firstName: String) {}首选要清楚kotlin的默认修饰是public,所以上面的也可以简写成下面的class Person(firstName: String) {}如果像把构造函数变成privateclass Person private constructor(firstName: Str
2017-05-31 10:58:04
413
原创 Kotlin汇总1
Android官方开始支持kotlin了,可以看下Android Announces Support for Kotlin。学习kotlin的优势是非常明显的,首先Android studio是基于intellij idea开发的,Google也开始把kotlin作为Android的标准开发语言。对于Android开发者来说,学习kotlin是非常容易的事情,很平滑的过渡。旧代码Java新代码kot
2017-05-30 15:20:40
400
原创 Android动画实现方式的汇总
安卓发展了这么多年,实现动画的方式也变得多种多样。在你的APP中加入动效会使之增色不少,所以从现在开始学习实现动画的方式,以备将来不时之需,下面是我的一些汇总,以后新的方式,我会在这里加入。 android.view.animation这是最早的一种,支持view的tween和frame动画。 android.animaton又称属性动画(property animation),从3.0
2017-05-29 18:04:00
613
转载 Android 平台版本和API 级别的对应关系
平台版本API 级别VERSION_CODE备注Android 7.024N平台亮点Android 6.023M平台亮点Android 5.122LOLLIPOP_MR1平台亮点Android 5.021LOLLIPOP
2017-05-23 22:16:58
435
原创 Android 8(O) 新功能
抽空看了下google 2017 I/O视频,觉得印象最深刻的支持Kotlin。在Kotlin的介绍中,google, jetbrains, square三方参与的介绍中,见识到的Kotlin的强大,就像Swift对于iOS一样,函数式编程和强语言是未来的一种趋势。提出Fluid Experience(流畅体验),出现这个目的,Google在Android 8做了一些修改,包括进入cache模式
2017-05-21 10:53:51
803
原创 Android架构模板
源码地址:https://github.com/Sherchen/ArchitectureTemplate 欢迎star, forkMvpThere are lots of things that you can find on website, its architecture diagram is below:MviYou can read the mvi about js.You can r
2017-05-20 15:40:50
505
原创 总结下android开发规范
地址:https://github.com/Sherchen/AndroidConventions1. AS规范1.1 CopyRight在Settings/Editor/CopyRight里添加一份,内容你可以在github上找一份,改下,这样每次新增文件,IDE都会自动加上CopyRight.1.2 模板在Settings/Editor/File and Code Templates右侧的inc
2017-05-20 14:10:54
628
原创 APP性能-网络优化-设计篇
在当前WiFi普及的大环境下,我们很容易忽略网络的问题,特别是在我们在室内测试的时候。 基于下面三个原因,我们有必要做网络优化 1. 有效地网络使用能够提高用户体验 2. 使用网络传输数据是电量消耗的一个最重要的来源 3. 有效的网络使用有时候能够显著减少占用带宽。 简单的优化访问网络之前,先检测网络是否可用通过ConnectivityMananger来判断通过Broadcast
2017-05-18 14:02:03
529
原创 APP性能-网络优化-工具篇
工欲善其事,必先利其器。在进行网络优化之前,我们需要一些工具帮助我们来分析和优化。AS的Network Monitor 这种情况代表,网络长期处于激活状态,所以是网络过量使用的情况 这种情况代表,网络有规律的间隔一段时间使用,是网络优化后的结果。使用OkHttpOkHttp是当前Android阵营最主流的http使用框架,参考square对它的介绍如下: HTTP/2 support al
2017-05-18 13:02:51
830
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人