1. 开始`Android`开发奇妙之旅
1) 搭建环境
Android Studio + Genymotion +ADT
与Eclipse相比,AS具有很多更方便快捷的功能。首先在安装方面谷歌提供的AS安装包中自带SDK等,不用像搭建Eclipse的环境那样需要自己手动寻找。其次在编程过程中AS自动import包,而Eclipse需要使用快捷键Ctrl+Shift+O。AS还可以快速创建常见的类的对象等。AS也同样支持插件。
Genymotion与AS自带的模拟器相比,运行速度更快,占用资源更小。
2) 第一步“装修”
Activity页面:主要的功能性代码,位于./app/src/main/java/(包名)/下
Layout布局:页面的样式、空间布局等视觉效果,位于./app/src/main/res/layout/下
Res资源:用到的相关的资源文件,位于./app/src/main/src/res/下,res下的values中存放了colors颜色、dimens元素、strings文字、styles样式
Activity页面通过代码setContentView()与相应的layout布局相关联
3) 创建
与Eclipse创建的过程相似,键入名称,选择SDK版本
Gradle:AS打包工具
AppCompatActivity:5.0以上版本新增,继承于FragmentActivity,FragmentActivity继承于Activity
@Override:重写
4) 控件
1)控件是View的子类
使用findViewById()找到控件(返回View对象引用,入过要赋值给具体控件变量需要强制转换)
2)TextView和Button
监听器OnClickListener响应onClick事件
3)思考:
多次点击如何判断:可以使用一个变量进行计数,每次点击加一,达到一定次数之后触发指定事件
按钮有其它的操作方式吗:控件Button是View的子类,因此按钮同样有长按事件等其他的操作方式
其他控件如何交互:控件是View的子类,同样有点击事件和长按事件等
5) 引用了不存在的资源可以用alt+Enter来添加或创建这个资源
6) R.java存放了所有资源的静态常量,自动生成
7) Layout
LinearLayout线性布局:像排队一样
RelativeLayout相对布局:相对于其他控件进行布局
gravity布局位置
orientation:布局排列方向
8) 签名、打包、发布
签名Build→Generate Signed APK
Key store path:秘钥存放位置Alias:区域Certifacate:验证
9) AndroidManifest
allowBackup是否允许后台
icon图标,存放在mipmap中(旧版在drawable中),有五种不同的分辨率对应的图标
label应用的名字
2. 第一个`Android`应用
1) 修改版本号和版本名称
eclipse使用AndroidManifest中的versionCode和versionName定义版本,AS使用build.gradle中的versionCode和versionName定义版本
2) 简单跳转
Intent意图,“想干什么”
startActivity()打开意图
3) 启动界面
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
3. `Activity`你必须要知道的事
1) 带着东西去旅行
使用intent.putExtra()可以传递数据
如何接收数据:使用getIntent()得到意图,判断不为空时,intent.getStringExtra()来取得String类型数据(其他类型同理)
传递对象:对象提供Serializable(序列化)接口即可
startActivityForResult()可以请求跳转到的页面传回数据
页面的onActivityResult()方法处理传回的数据
在打开的页面里使用setResult()方法设置传回的代码号和intent数据
finish()关闭当前页面
2) 自动跳转:1秒后自动跳转到MainActivity;
Handler mHandler= new Handler();
mHandler.postDelayed(newRunnable() {
@Override
public void run() {
Intent intent = new Intent(SplashActivity.this,MainActivity.class);
startActivity (intent,);
}
},1000);
3) Activity的生命周期
(图片来自http://developer.android.com/training/basics/activity-lifecycle/starting.html)
4. 多姿多彩的控件
1) View常见的属性和事件:
宽度layout_width
高度layout_height
布局gravity
文本text
文本颜色textColor
文本大小textSize
是否为单行文本:singleLine
最大行数maxLines
背景background
点击事件setOnClickListener()
长按事件setOnLongClickListener()
边距,颜色,是否可见,内容是否居中,位置,,长按事件,触摸事件
2) 大小控件:wrap_content根据内容确定match_parent吻合父控件大小
3) 文本大小单位用sp,控件大小以及间距的单位用dp
4) EditText编辑框
Plane Text普通的
Password密码inputType=”textPassword”
Person Name名字inputType=”textPersonName”
Phone电话号inputType=”phone”
5) EditText特有:文本改变事件addTextChangedListener()对应监听器类型TextWatcher
6) .9图:节省大小,可以设置拉伸区域(上左)和文本区域(下右)
7) ImageButton和ImageView
ImageButton继承于ImageView
background设置背景图,背景是平铺于控件的
src资源,资源放置于空间中,默认不拉伸
scaleType 资源放置方式
8) SeekBar动态进度条
getOnFocusChangeListener()焦点改变
9) ProgressBar进度条
Max最大进度,Progress默认进度
setProgress()设置进度