Gradle
Projects 和 tasksprojects 和 tasks是 Gradle 中最重要的两个概念。
任何一个 Gradle 构建都是由一个或多个 projects 组成。每个 project 包括许多可构建组成部分。 这完全取决于你要构建些什么。举个例子,每个 project 或许是一个 jar 包或者一个 web 应用,它也可以是一个由许多其他项目中产生的 jar 构成的 zip 压缩包。一个 project 不必描述它只能进行构建操作。它也可以部署你的应用或搭建你的环境。不要担心它像听上去的那样庞大。 Gradle 的 build-by-convention 可以让您来具体定义一个 project 到底该做什么。
每个 project 都由多个 tasks 组成。每个 task 都代表了构建执行过程中的一个原子性操作。如编译,打包,生成 javadoc,发布到某个仓库等操作。
创建build.gradle文件,所有的任务均在该文件内书写
创建快速任务123task demo << { println '你好'}
执行任 ...
Kotlin
基本数据类型
类型
位宽度
Double
64
Float
32
Long
64
Int
32
Short
16
Byte
8
你可以使用下划线划分数字,易读:val oneMillion = 1_000_000
类型转化与Java不同,必须显示转换
12var b:Byte = 1;var c:Int = b.toInt();
转换方法:
1234567toByte(): BytetoShort(): ShorttoInt(): InttoLong(): LongtoFloat(): FloattoDouble(): DoubletoChar(): Char
但有些情况下是可以进行转换的,前提是可以根据上下文环境推断出正确的数据类型而且数学操作符会做相应的重载。
val l = 1L + 3 // Long + Int => Long
位操作1234567shl(bits) – 左移位 (Java’s <<)shr(bits) – 右移位 (Java’s >>)ushr(bits) – 无符号右移位 (Java ...
GreenDao
Greendao的使用一、引入(1)工程build.gradle:12345678910111213141516171819202122buildscript { repositories { jcenter() //添加maven mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:2.3.2' //注意版本号 classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' }}allprojects { repositories { jcenter() }}task clean(type: Delete) { delete rootProject.buil ...
属性动画
1.Android动画的分类
帧动画(Frame Animation):一系列的图片在同一个位置进行连贯的替换操作
补间动画(Tween Animation):专门用于View,可以实现透明度、缩放、旋转和平移四种效果。
属性动画(Property Animation):表面上效果和补间动画差不多。
补间动画和属性动画之间最大的差异:补间动画只能作用于View,并且只能简单的去进行透明度、缩放、旋转和平移这四种动画,其他的比如去更改颜色,字体大小粗细等就无能为力了。但是属性动画,可以设置在任何对象上,并且可以去改变对象的属性。
2.属性动画准许定义的参数
持续时间,默认为300ms。
时间差值
重复次数和行为
动画集合(多个动画组合在一起)
帧刷新延迟,默认10ms;但最终靠系统的整体繁忙程度和底层定时器服务的速度。
3.ObjectAnimatorObjectAnimator是最常用的一个,其使用相对简单,只要设置几个参数,一个属性动画就实现了。常用API
返回值类型
方法名
功能
ObjectAnimator
clone()
返回一个该对象的副本
Strin ...
Retrofit源码解析
Retrofit是一个基于OKHttp的网络请求框架,具有高解耦,支持RxJava和RxAndroid,支持多种Json解析框架,代码风格使用注解方式,简洁易懂等诸多优点。
Retrofit的使用在这里就不赘述了,网上有很多教程。
1.Retrofit类Retrofit的创建使用了构造者模式,我们从他的构造者来开始分析。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113public static final class Builder { private final Platform platform;//可以获取平台信息的类 private @Null ...
自定义控件
我们先来了解一下Android的控件框架.在Android中控件大致被分为两类,View和ViewGroup.ViewGroup作为父控件包含多个View控件
自定义控件的一般步骤:
自定义属性
在自定义的构造函数中获取自定义属性
重写onMeasure()方法,对控件进行测量
重写onDraw()方法对控件进行绘制
重写onLayout方法,进行定位,即在父控件中的位置
我们来简单的看一个自定义控件是如何实现的:
1.自定义资源文件12345678<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="CustomTitleView"> <attr name="titleText" format="string"/> <attr name="titleColor" format= ...