功能 Mac OSX Win/Linux
单行注释 Cmd + / Ctrl + /
多行注释 Cmd + Alt + / Ctrl + Alt + /
格式化代码 Cmd + Alt + L Ctrl + Alt + L
清除无效包引用 Alt + Control + O Alt + Ctrl + O
查找 Cmd + F Ctrl + F
替换 Cmd + R Ctrl + R
上下移动代码 Alt + Shift + Up/Down Alt + Shift + Up/Down
删除行 Cmd + Delete Ctrl + Y
扩大缩小选中范围 Alt + Up/Down Ctrl + W/Ctrl + Shift + W
快捷生成结构体 Cmd + Alt + T Ctrl + Alt + T
快捷覆写方法 Control + O Ctrl + O
快捷定位到行首/尾 Cmd + Left/Right Ctrl + Left/Right
折叠展开代码块 Cmd + Plus/Minus Ctrl + Plus/Minus
折叠全部代码块 Cmd + Shift + Plus/Minus Ctrl + Shift + Plus/Minus
文件结构 Cmd + F12 Ctrl + F12
查找调用位置 Cmd + option + H Ctrl + Alt + H
大小写转换 Cmd + Shift + U Ctrl + Shift + U
  1. Alt + enter(option + return) 导包,自动修正
  2. Ctrl+X(command + X) 删除行
  3. Ctrl+D(command + D) 复制行
  4. Alt + Ctrl + Enter(option + control + return) 代码补全

Gradle

Gradle以Groovy为基础,面向Java应用,基于DSL语法的自动化构建工具

Gradle基本结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.0.0'
}
}

apply plugin: 'android'
android{
compileSdkVersion 19
buildToolsVersion "19.0.0"
}
  • buildscript{…} 设置脚本的运行环境
  • apply plugin: ‘android’ 设置使用android插件构建项目
  • android{…} 设置编译android项目的参数

任务task执行

通常的任务有

  1. 输出一个项目文件,Android就是打包APK
  2. 运行检查,检查程序的错误,语法等
  3. 执行assemblecheck
  4. 清理项目输出文件

基本的构建定制

支持的配置有

  • minSdkVersion 最小支持sdk版本
  • targetSdkVersion 编译时目标的sdk版本
  • versionCode 程序版本号
  • versionName 程序版本名称
  • applicationId 程序包名
  • package Name for the test application 测试用的程序包名
  • instrumentation test runner 测试用的instrumentation实例
1
2
3
4
5
6
7
8
9
10
11
android{
compileSdkVersion 19
buildToolsVersion "19.0.0"

defaultConfig{
versionCode 12
versionName "2.0"
minSdkVersion 16
targetSdkVersion 16
}
}

签名配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
android{
signingConfigs {
debug{
storeFile file("debug.keystore")
}

myConfig{
storeFile file("other.keystore")
storePassword "android"
keyAlias "androiddebugkey"
keyPassword "android"
}
}

buildTypes {
foo {
debuggable true
jinDebugBuild true
signingConfig signingConfigs.myConfig
}
}
}

设置代码混淆

1
2
3
4
5
6
7
8
android {
buildTypes{
release {
runProguard true
proguardFile getDefaultProguardFile('poguard-android.txt')
}
}
}

依赖配置

1
2
3
4
dependencies{
compile files('libs/foo.jar') // 单个文件
compile fileTree(dir:'libs',include:['*.jar']) // 多个文件
}

maven仓库

1
2
3
4
5
6
7
8
9
10
11
repostiories {
mavenCentral()
}

dependencies {
complie 'com.google.guava:guava:11.0.2'
}

android {
...
}

  • 类(class) 用来描述具体相同的属性和方法的对象集合
  • 类变量 类内部的公有变量
  • 数据成员 类变量或者实例变量用于处理类及其实例对象的相关的数据
  • 方法重载(override) 父类继承的方法不能满足子类的需求,可以对其进行修改
  • 实例变量 在方法中定义的变量,只作用于当前实例的类
  • 继承 派生类继承基类
  • 实例化 创建一个类的实例
  • 方法 类中定义的函数
  • 对象 通过类定义的数据结构实例

创建类

1
2
3
class ClassName:
'Optional class documentation string' # 类文档字符串
class_suite # 类体
  • getattr(obj,name[,default]):访问对象的属性
  • hasattr(obj,name):检查是否存在一个属性
  • setattr(obj,name,value):设置一个属性,如果不存在会创建一个新的属性
  • delattr(obj,name):删除属性

Python内置类属性

  • __dict__:类的属性(包含一个字典)
  • __doc__:类的文档字符串
  • __name__:类名
  • __module__:类定义所在的模块(类的全名是__main__.className)
  • __base__:类的所有父类构成元素

Python对象销毁

在Python内部记录着所有使用对象各有多少引用,一个内部跟踪变量,称为一个引用计数器
析构函数__del__在对象消逝的时候被调用

数学函数

函数 描述
abs(x) 绝对值
ceil(x) 上入整数
cmp(x,y) 比较
exp(x) e的x次幂
fabs(x) 绝对值
floor(x) 下舍取整
log(x) log运算
log10(x) log10运算
max(x1,x2…) 取最大值
min(x1,x2…) 取最小值
modf(x) 返回X的整数部分与小数部分
pow(x,y) x**y
round(x[,n]) 四舍五入
sqrt(x) 平方根

随机数

函数 描述
choice(seq) 从序列中的元素中随机挑选一个元素
randrange([start,]stop[,step]) 从指定范围内按指定基数的集合中获取一个随机数
random() 随机生成一个实数,在[0,1)范围内
seed([x]) 改变随机数生成的种子seed
shuffle(lst) 将序列的所有元素随机排序
uniform(x,y) 随机生成一个实数,在[x,y]范围内

三角函数

函数 描述
acos(x) 反余弦
asin(x) 反正弦
atan(x) 反正切
atan2(y,x) 给定坐标的反正切
cos(x) 余弦值
hypot(x,y) 欧几里得范数sqrt(x*x+y*y)
sin(x) 正弦
tan(x) 正切
degrees(x) 弧度转换为角度
radians(x) 将角度转换成弧度

数学常量

  • pi 圆周率
  • e 数学常数e

标识符

在Python中标识符由字母、数字、下划线组成,但不能以数字开头
标识符区分大小写
以下划线开头的标识符是有特殊意义的,以单下划线开头(_foo)表示不能直接访问的类属性,需要通过类提供的借口进行访问
以双下划线开头的(__foo)代表类的私有成员,以双下划线开头和结尾的(__foo__)表示Python里特殊方法,如__init__()表示类的构造函数

保留字符

|||||
|:–|:–|:–|
|and|exec|not|
|assert|finally|or|
|break|for|pass|
|class|from|print|
|continue|global|raise|
|def|if|return|
|del|import|try|
|elif|in|while|
|else|is|with|
|except|lambda|yield|
|and|exec|not|
|assert|finally|or|
|break|for|pass|
|class|from|print|
|continue|global|raise|
|def|if|return|
|del|import|try|
|elif|in|while|
|else|is|with|
|except|lambda|yield|

变量类型

  • Numbers(数字)
    • int(有符号整形)
    • long(长整型)
    • float(浮点数)
    • comples(复数) a+bj或者comples(a,b)表示
  • String(字符串)
  • List(列表)
  • Tuple(元组)
  • Dictionary(字典)

类型转换

函数 描述
int(x[,base]) 将x转换为一个整数
long(x[,base]) 将x装换成一个长整型
float(x) 将x转换到一个浮点数
complex(real [,imag]) 创建一个复数
str(x) 将对象 x 转换为字符串
repr(x) 将对象 x 转换为表达式字符串
eval(str) 用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s) 将序列 s 转换为一个元组
list(s) 将序列 s 转换为一个列表
set(s) 转换为可变集合
dict(d) 创建一个字典。d 必须是一个序列 (key,value)元组
frozenset(s) 转换为不可变集合
chr(x) 将一个整数转换为一个字符
unichr(x) 将一个整数转换为Unicode字符
ord(x) 将一个字符转换为它的整数值
hex(x) 将一个整数转换为一个十六进制字符串
oct(x) 将一个整数转换为一个八进制字符串

算术运算符

运算符 描述
+
-
*
/
% 取模
**
// 取整除

比较运算符

运算符 描述
== 等于
!= 不等于
<> 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于

成员运算符

运算符 描述
in 是否在指定序列中
not in 是否不再指定序列中

身份运算符

运算符 描述
is 判断两个变量是不是引用自一个对象
is not 判断两个变量是不是引用不同的对象

Paint即画笔,在绘图过程中起到了极其重要的作用,画笔主要保存了颜色,样式等绘制信息,指定了如何绘制文本和图形,画笔对象有很多设置方法,大体上可以分为两类,一类与图形绘制相关,一类与文本绘制相关。

Read More

  1. MaterialDesignLibrary
    MaterialDesignLibrary可以说是颇受开发者瞩目的一个控件效果库,能够让开发者在Android 2.2系统上使用Android 5.0才支持的控件效果,比如扁平、矩形、浮动按钮,复选框以及各式各样的进度指示器等。
    MaterialDesignLibrary还拥有SnackBar、Dialog、Color selector组件,可非常便捷地对应用界面进行设置。

    进度指示器样式效果设置:
1
2
3
4
5
<com.gc.materialdesign.views.ProgressBarCircularIndetermininate    
android:id="@+id/progressBarCircularIndetermininate"
android:layout_width="32dp"
android:layout_height="32dp"
android:background="# 1E88E5" />

Dialog

1
2
Dialog dialog = new Dialog(Context context,String title, String message);  
dialog.show();
  1. RippleEffect
    来自法兰西的Robin Chutaux开发的RippleEffect基于MIT许可协议开源,能够在Android API 9+上实现Material Design,为开发者提供了一种极为简易的方式来创建带有可扩展视图的header视图,并且允许最大程度上的自定制。

    用法(在XML文件中声明一个RippleView):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<com.andexert.library.RippleView  
android:id="@+id/more"
android:layout_width="?android:actionBarSize"
android:layout_height="?android:actionBarSize"
android:layout_toLeftOf="@+id/more2"
android:layout_margin="5dp"
ripple:rv_centered="true">

<ImageView
android:layout_width="?android:actionBarSize"
android:layout_height="?android:actionBarSize"
android:src="@android:drawable/ic_menu_edit"
android:layout_centerInParent="true"
android:padding="10dp"
android:background="@android:color/holo_blue_dark"/>

</com.andexert.library.RippleView>
  1. MaterialEditText
    AppCompat v21也为开发者提供了Material Design的控件外观支持,其中就包括EditText,但却并不好用,没有设置颜色的API,也没有任何Google Material Design Spec中提到的特性。于是,来自国内的开发者“扔物线”开发了MaterialEditText库,直接继承EditText,无需修改Java文件即能实现自定义控件颜色。

    自定义Base Color:
1
app:baseColor="# 0056d3"  

自定义Error Color:

1
2
app:maxCharacters="10"  
app:errorColor="# ddaa00"
  1. Android-LollipopShowcase
    Android-LollipopShowcase是由来自奥地利的移动、后端及Web开发者Mike Penz所开发的演示应用,集中演示了新Material Design中所有的UI效果,以及Android Lollipop中其他非常酷炫的特性元素,比如Toolbar、RecyclerView、ActionBarDrawerToggle、Floating Action Button(FAB)、Android Compat Theme等。
  2. MaterialList
    MaterialList是一个能够帮助所有Android开发者获取谷歌UI设计规范中新增的CardView(卡片视图)的开源库,支持Android 2.3+系统。作为ListView的扩展,MaterialList可以接收、存储卡片列表,并根据它们的Android风格和设计模式进行展示。此外,开发者还可以创建专属于自己的卡片布局,并轻松将其添加到CardList中。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin">

<com.dexafree.materiallistviewexample.view.MaterialListView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/material_listview"/>

</RelativeLayout>
  1. android-floating-action-button
    Floating Action Button(FAB)是众多专家大牛针对Material Design讨论比较细化的一个点,通过圆形元素与分割线、卡片、各种Bar的直线形成鲜明对比,并使用色彩设定中鲜艳的辅色,带来更具突破性的视觉效果。也正因如此,在Github上,有着许多与FAB相关的开源项目,基于Material Design规范的开源Android浮动Action Button控件android-floating-action-button便是其中之一。

    其主要特性如下:
  • 支持常规56dp和最小40dp的按钮;
  • 支持自定义正常、Press状态以及可拖拽图标的按钮背景颜色;
  • AddFloatingActionButton类能够让开发者非常方便地直接在代码中写入加号图标;
  • FloatingActionsMenu类支持展开/折叠显示动作。
  1. android-ui
    android-ui是Android UI组件类库,支持Android API 14+,包含了ActionView、RevealColorView等UI组件。其中,ActionView可使Action动作显示动画效果,而RevealColorView则带来了Android 5.0中的圆形显示/隐藏动画体验。
  2. Material Menu
    Material Menu为开发者带来了非常酷炫的Android菜单、返回、删除以及检查按钮变形,完全控制动画,并为开发者提供了两种MaterialMenuDrawable包装。

    自定义颜色等操作:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// change color  
MaterialMenu.setColor(int color)

// change transformation animation duration
MaterialMenu.setTransformationDuration(int duration)

// change pressed animation duration
MaterialMenu.setPressedDuration(int duration)

// change transformation interpolator
MaterialMenu.setInterpolator(Interpolator interpolator)

// set RTL layout support
MaterialMenu.setRTLEnabled(boolean enabled)
  1. Android-ObservableScrollView
    Android-ObservableScrollView是一款用于在滚动视图中观测滚动事件的Android库。它能够轻而易举地与Android 5.0 Lollipop引进的工具栏(Toolbar)进行交互,还可以帮助开发者实现拥有Material Design应用视觉体验的界面外观,支持ListView、ScrollView、WebView、RecyclerView、GridView组件。

    交互代码回调:
1
2
3
4
5
6
7
8
9
10
11
12
13
@Override  
public void onUpOrCancelMotionEvent(ScrollState scrollState) {
ActionBar ab = getSupportActionBar();
if (scrollState == ScrollState.UP) {
if (ab.isShowing()) {
ab.hide();
}
} else if (scrollState == ScrollState.DOWN) {
if (!ab.isShowing()) {
ab.show();
}
}
}
  1. Material Design Icons
    最后,再来介绍一下Google Material Design规范的官方开源图标集Material Design Icons。良心Google开源了包括Material Design系统图标包在内的750个字形,涵盖动作、音视频、通信、内容、编辑器、文件、硬件、图像、地图、导航、通知、社交等各个方面,适用于Web、Android和iOS应用开发,绝对是开发者及设计师必备的资源。
    图标格式主要包括:
  • SVG格式,24px和48px;
  • SVG和CSS Sprites;
  • 适用于Web平台的1x、2x PNG格式图标;
  • 适用于iOS的1x、2x、3x PNG图标;
  • 所有图标的Hi-dpi版本(hdpi、mdpi、xhdpi、xxhdpi、xxxhdpi)。