安卓基础知识超强总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 入门
1.1 android linux 2.2 4.5 4层 linux library framework applicaiton applications
1.2 ide adt (eclipse + adt + sdk (源码 例子 support tool ))
1.3 hellowrold MainActivity extends Activity onCreate() setContentView
res drawable layout values strings.xml layout main.xml
1.4 R res
1.5 清单文件 包名
1.6 dalvik dex 基于寄存器
2 知识点的总结
Activity
Service
ContentProvdier
BroadcastReceiver
四大组件
1 XXX extends XXXX 2 在清单中配置
Activity onCreate() onStart() onRstart() onResume() onPause() onStop() onDestory()
1 显示
控件
View TextView Button EidtText ImageView ProgressBar SeekBar CheckBox WebView loadURI();
ViewGroup ListView ScrollView Spinner AutoCompleteTextView MultiAutoCompleteTextView + 五大布局(线程 相对 表格 帧 绝对)
findViewById() view.findViewById();
2 数据
et.setText()
lv.setAdapter() Adapter --》 BaseAdaper(getCount() getItem() getView()) --> SimpleAdapter ArrayAdapter LayoutInflater
3 监听
lv.setOnXXXListener();
iv.setOnTouchListener() 涂鸦
4 特色
menu
对话框Dialog AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setXx() builder.create(); dialog.show();
ProgressDailog
5 获取数据
1文件
1.1 普通文件 java io mode 文件操作模式 private append wr ww linux文件统一 -(文件\文件夹) ---(自身) ---(同组) ---(其他) (rwx)
openFileInput() openFileOutput() getFileDirs() getCacheDirs()
只有在自己的地盘才有权限
sdcard Environment.getXXX() 写权限 StateF (获取sdcard可用空间+总空间)
1.2 xml Xml.newXXXer();
1.2.0 xml的格式 文档开始、结束 标签的开始、结束 文本节点 属性 dom sax pull
1.2.1 解析xml parser.setInput(); parser.getEventType() parser.next() parser.getName() parser.nextText() parser.getAttrubuteValue();
1.2.2 生成xml seriaizer.setOutput() seriaizer.startDocument() .endDocument() startTag() endTag() text() attribute()
2SharedPreference 首选项 保存软件的配置信息 /data/data/packagename/share_prefs/config.xml
4内容提供者 ContentProvider 对外暴露数据
4.1 init 初始化 1 XX extends ContentProvider 2 配置
4.2 访问 ContentReolver cr.query() update() delete() insert() Uri
4.3 匹配 static UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH);
static{
matcher.addURI(authority,path,code);
}
query(uri){
int code = matcher.match(uri);
switch(code){
}
}
4.4 监听内容提供者数据的变化
4.4.1 发出改变通知 getContext().getContentResolver().notify(uri,null);
4.4.2 监听改变 getContentResolver.registerContentObserver(uri,boolean,obsever);
private class MyContentObserver extends ContentObserver {
MyContentObserver(Handler handler){}
onChange(){}
}
4.5 工具类: ContentUris withAppendId() parserId()
5网络 http get post 权限 internet
5.1 URL HttpURLConnection
5.2 HttpClient HttpClient client = new DefaultHttpClient();
5.2.1 get HttpGet request = new HttpGet(path);
5.2.2 post HttpPost request = new HttpPost(path);
NameValuePair nvp = new BaiscNameValuePair();
nvp.put(key,value);
UrlEncodeFormEntity entity = new UrlEncodeFormEntity(List
request.setEntity();
5.2.3 分段请求 响应码 206 HttpHead
5.2.4 执行请求
HttpResponse response = client.execute(request);
if(response.getStateLine().getStateCode() == 200|| 206){
InputStream is = response.getEntity().getContent();
}
5.3 耗时的操作
new Thread(){
run(){
todo
}
}.start();
5.4 子线程和主线程通信
Handler mHandler = new Handler(){
handleMessage(Message msg){
switch(mgs.what){
}
}
};
Message msg = Message.obatin();
msg.what
msg.obj;
mHandler.sendMessage(msg);
Service 服务 后台运行没有界面 执行耗时的操作 单例 但是要开线程
1 init 初始化 1.1 MyService extends Service 1.2 注册
2 启动方式:2.1 startServie() stopService() onCreate() onStart() onDestory()
2.2 bindService() unbindService() onCreate() onBind() onUnbind() onDestory()
3 bindService ServiceConnection onBind() -->IBinder 调用服务里面的方法
3.1 本地 1 定义一个接口 2 MyService private class MyBinder extends Binder implements 接口
3.2 其他应用程序的
aidl 解决跨进程访问的问题 需要带包复制
1 定义一个接口
2 把.java修改为.aidl 去掉public
3 MyService private class MyBinder extends Stub
4 Activity Stub.asInterface(IBinder);
aidl里面可能要传递对象
1 MyBean implments Parcalable
2 编写aidl描述文
件
package com.itcast.service.domain;
parcelable Student;
ContentProvdier
BroadcastReceiver
1 广播
sendBroadcast(intent);
分类:
1 有序广播 可以中断 有接收的优先级别 -1000 ~ 1000 (如果指定了广播接收者这样的广播是无法中断)
2 无序广播 不能被中断
2 广播接收者 接收广播 (权限)
2.1 init 1 MyReceiver extends BroadcastReceiver onReceive() 2 注册 2.1 java registerRceiver(receiver,intentflilter) 2.2 清单
2.2 响应 onReceive()方法被激活
2.2.1 中断广播 absortBroadcast()
2.2.2 获取|修改数据 getResultData() setResultData()
2.2.3 激活一个Activity|Service startService() :如果有耗时的操作不能在广播接受者里面执行
intent.setFlag(Intent.FLAG_NEW_TASK);
startActivity(intent);
例子:短信 外拨电话
细小的知识点:
1 组件的激活(Activity service BroadcastReceiver ContentProvdier)
ContentProvdier 系统开机就激活
Activity service BroadcastReceiver 都是通过intent来激活
startActivity(intent) startActivityForResult() onActivityResult() setResult(resultcode,intent) 设置返回数据 finish(); 关闭当前的Activity
startService() bindService()
sendBroadcast()
2 组件之间传递数据 intent
intent.putExtra(key,value)
intent.putExtras(Bundle);
对象
MyBean implements Parcelable
3 获取数据
getIntent(); intent.getAction() intent.getXXXX(key);
特色开发
1 多媒体(图片、音频、视频)
1.1 Bitmap
1.1.1 加载图片 BitmapFactory.decodeFile(path);
1.1.2 加载大图片BitmapFactory.decodeFile(path,Options); getWindowManager().getDefaultDisplay(); InJustDecodeBound = true|false;
InSampleSize = scale;
1.1.3 涂鸦
iv.setOnTouchListener(new OnTouchListener(){
onTouch(MotionEvent event){
switch(event.getAction()){
case MotionEvent.down move up;
return true;
}
}
})
Bitmap bit = Bitmap.create(w,h,config);
Canvas canvas = new Canvas(bit);
Paint p = new Paint();
canvas.drawBitmap();
canvas.drawLine();
1.1.4 加水印
canvas.drawText()
press(CompressFormat.JPG,100,stream);
1.1.5 旋转 移动 缩放 倒影 镜面
matrix.setScale() setTransalte() setRotate()
setScale() postTransalte()
canvas.drawBitmap(matrix);
1.1.6 颜色 rgba
ColorMatrix matrix = new ColorMatrix();
matrix.setXXX();
ColorMatrixColorFilter filter = new ColorMatrixColorFilter(matrix);
paint.setColorFilter(filter);
canvas.drawBitmap(paint);
1.2 音频
1.2.1 录音 MediaRecorder
1.2.2 播放 MediaPlayer
1.3 视频
MediaPlayer + SurfaceView
2 硬件
2.1 相机 Camera + SurfaceView
2.2 传感器 SensorManager + Sensor
设计
1 动画
Tween scale alpha rotate translate set interceptor 动画插入器
frame 图片集合
2 样式 控件
res/values/styles.xml