安卓基础知识学习(内容太多只阐述知识点
基础部分三部分:配置文件,布局,java代码
前期主要学习一下布局,以及基本的控件使用
- 配置文件 AndroidManifest.xml
- 包名
- SDK依赖信息
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="23" /> - 权限依赖
- application
- 基本
<application
主题
android:name="com.androidcaiyijiu.view.CaiYiJiuApplication"
android:allowBackup="true"
android:icon="@drawable/app_icon" 图标
android:label="@string/app_name" 名称
android:theme="@style/ActivityTheme" > - activity 就是配置展示页面
- service 类似定时任务
- intent-filter
- receiver
- 基本
- colors.xml 全局颜色配置(values目录下)
- strings.xml 全局字符配置(values目录下)
- menu 目录
- layout 目录(布局文件)
- drawable 图片,公共样式配置
- anim(目录) 动画
- 点击效果
- 左右滑动特效
- 渐变特效
布局
着重说明一点布局元素,都会有对应的java类来处理- 线性布局 LinearLayout 布局之间可以相互套用
- 垂直 元素沿着垂直方向分布
- 水平 元素沿着水平方向分布
- 相对布局 RelativeLayout 简单理解就是每个展示元素(比如一个输入框)可以参考当前元素位置放在该元素的上下左右位置
- 线性布局 LinearLayout 布局之间可以相互套用
activity(组件) 尽量使用模板模式做出一个基类
- infoQ activity是什么
答:可以简单理解为controller每个跳转页面的入口 - activity 是怎么做到让一个页面展示出来的
答:安卓自身提供 Activity 的这个基类然后其他activiy继承该类
在用户自定义的activity的类中绑定对应自己的布局文件,然后进行一些初始化操作(比如定义名称,定义操作的事件等),接下来可想而知页面自然也会被展示出来。
顺便说下开发过程一般会进行一下操作:initView(初始化页面元素), initData(初始化数据),initEvent(初始化点击事件),initAdapter(初始化适配器例如PageAdpter,ListAdapter)
- activity 生命周期(理解生命周期很重要)
- 启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。
- 当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行(刷新页面可以复写该方法)。
- 当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态。
- 当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态。
- 用户后退回到此Activity:系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。
- 当前Activity处于被覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回当前Activity:再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。
- 用户退出当前Activity:系统先调用onPause方法,然后调用onStop方法,最后调用onDestory方法,结束当前Activity。
- scope
- 配置
- 使用
- infoQ activity是什么
service(组件)后台服务
配置
<service
android:name="com.igexin.sdk.PushService"
android:exported="true"
android:label="NotificationCenter"
android:process=":pushservice" >
</service>
使用
receiver(组件)广播
配置
<receiver
android:name="com.igexin.getuiext.service.PayloadReceiver"
android:exported="false" >
<intent-filter>
<action android:name="com.igexin.sdk.action.7fjUl2Z3LH6xYy7NQK4ni4" />
<action android:name="com.igexin.sdk.action.Z1ForLlTKx7WkJomDdNCG6" />
</intent-filter>
</receiver>
使用
ContentProvider(组件)数据共享
常用类
Intent
InfoQ:intent是什么?
答:组件之间的交互者可以类比servlet的request,可以携带参数怎么使用(简单的activity跳转例子)
` Intent intent = new Intent(AccountBalanceActivity.this,WithdrawActivity.class);
startActivity(intent);
view 基类
- TextView 文字
- ImageView 图片
- ClearEditText 输入框
- ScrollView 滚动条
- Fragment(类比html中的frame)
- LinearLayout 线性
- RelativeLayout 相对布局
- adapter
- ListView (列表展示下滑刷新,分页加载)
- ViewPager (翻页)常见的考试试题
- ImageLoder 异步图片加载
- Toast 提示信息
- SQLiteOpenHelper 数据库操作(Sqlite)
- Notificaiton 通知栏
- 安卓打包上线
- 混淆
- 签名
- 加密
- 版本升级
- 第三方SDK引入
- 百度地图
- 微信分享
- 微博分享
- 支付宝
- 百度分析
- 友盟数据统计
- 百度推
- 极光推
开发框架
- andBase 国产比较全面
- MVP模式 (详情请在 github 搜索 TheMVP)
- HTTP请求框架(详情请在 github 搜索 android-async-http)
- 直播技术:http://lib.youkuaiyun.com/base/liveplay
- RxJava 线程切换 : https://github.com/evant/gradle-retrolambda
学习目标
- 能够知道自定义系统图标
- 能够正常启动activity
- 能够使用点击事件
- 能够使用service
- 能够学会使用基本控件 输入框,图片,下拉列表,Fragment布局等;能够使用工具类完成APP接口调用;了解adapter原理,回调原理,线程机制。
- 能够学会打包签名