android知识大纲
来源:互联网 发布:淘宝介入买家都能赢吗 编辑:程序博客网 时间:2024/05/21 06:56
适合初学者
只要有activity中有
<intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter>
就会生成一个快捷图标,并且是activity的入口。
所以如果想要改写图标的名字 在 activity中加入lable 即可。如果想该图标 只要加上ico 即可
页面间的跳转都是用 Intent
○ 在意图过滤其中 完全匹配才可以跳转 如果有多个action 和多个date只要与其中一个匹配就可以了。 ○ 显示跳转 setClass /setClassName ○ 隐示跳转 setAction () action在activity 的清单文件中设置 ■ action ■ category 默认为Default ■ data (activity中数据传递) ● scheme 前缀: (例如 打电话 Uri.parse="tel:110")就是前缀包括冒号 ● mainType 定义数据类型 如果时图片 img text/password (如果 scheme 和type 都有 在匹配的时候必须使用 setDataAndType()) ■ 跳转代码中 要写上 setAction 和setCategory (系统会自动添加默认的Category 如果不是默认的 就要写上。) ■ 只有都匹配才会跳转 ■ 数据之间的获取 被跳转的 可以getIntent 调用getDate
在指定类名时如果包名在与应用包名一致 可以写成 .类名 但是在显示跳转的时候必须写全。
startActivity 在显示跳转的时候 会在所有的应用清单文件中去找有没有一个activity的一个action与之匹配
隐士 和显示 的应用场景
○ 显示 在同一个应用中的的跳转 ○ 隐式 启动不同应用
activity的生命周期
○ oncreate 创建一般进行一些初始化 ○ onstart 被用户可见 但是没有交点 (不能交互) ○ onResume 获得焦点 即 前台应用 ○ onPause 失去焦点但是依然可见 ○ onstop 不可见 即 后台 ○ on destory 销毁 点击返回 ○ 注意:在内存不够时会自动杀死 后台程序。
Activity 的启动模式
○ task stack 任务栈 ○ 1.singleTop 如果栈顶时该activity 就不会在创建只有不是的才会创建。 ○ 2.singleTask 不再栈顶但是之前有调用过 则返回 ○ singleInstance : 该activity 启动时会在一个新的任务栈中启动(一个栈中只有它和在一个项目中的非singleinstace activity ) 只要时单例 就会在新的栈中启动。 如果不是单例 不同的应用调用 会创建多个。 ○ 如果是有很多地方会调用的activity会用单例。
横竖屏切换 会自动调用生命周期方法 如果想让不掉用 可以在清单文件中activity中 configChange=”orientation|keyboardHidden|screeSize” (横竖屏切换宽高改变不要理会)
○ 写死横屏 screeOrientation="landscape" ○ 写死竖屏 screeOrientation=“protrait”
activity返回时返回数据
■ 前提启动 ■ 该活动的时候要使用startActivityForResult(int) ○ 返回方会在销毁之前吧数据返回给调用自己的activity不管你怎么销毁。 ○ intent data=new intent(); ○ data.putExtra(); ○ setResult(0,data); ○ finish() 销毁 当前 相当于点击返回 返回点击也是调用这个方法 可以复写一个返回的方法,来改变。(返回键盘点击触发的方法是 onBackPressed()) ■ 接收方 重写 onActivityResult(int ,int intent Data)
四大组件都是要在清单文件中进行配置的。四大组件都是一个类。
广播接收者
○ 创建类 继承 BroadcastRceiver ○ 注册 <receiver></> ○ 接收的类型 ■ <intent-filter><action android:name=" .action."/></> 这里的action都定义好了。接收的是别人的广播 接收的action 和广播的action 必须匹配。 ○ 在打电话 接收可以获得打出去的电话号码 getResultdate
SharePreferences sp=getSharedPreferences(“ip”,MODE_PRIVE) 将数据保存在本地下次可以直接用。 sp.edit().putString(“ipNumber”,string).commit(); 获取的时候 ip相当于文件名 context.getSharedPreFerences(“ip”,context.MODE_PRIVE).getString(“ipNumber”);
广播的工作过程 打电话 将电话号码广播 接收者拦截修改 再次广播 。(这里的广播接收者肯定有先后顺序 也不是传统的广播 和网页中的过滤器一样 do.chain())
广播是通过intent 实现发送的。所以内容在intent zhong
广播接收者4.0至少要启动一次才会起作用 (点击图标) 手动关闭以后广播接收者不会起作用。、
startActivity 有一个设置 setFlag 是 创建一个任务中来存放 activity 一般用于广播接收者 启动一个项目 因为现在还没有一个任务栈可以放activity (如果不是开机启动是另一个程序发送广播呢启动还要用这个码。)
勒索软件可以通过其他的广播来停止。
软件图标是因为activity中有inter-filter 如果删除就没有图标了。
服务
○ 进程优先级 empty background service visible 前台进程 ○ 服务依赖于进程 并且不是独立的进程而是依赖于创建服务的进程。 ○ 系统如果将服务杀死 在内存充足的时候会再次重启。
绑定服务的执行流程
○ bindService 一旦执行会调用 onBind 方法 就会返回 IBinder对象(中间对象用于调用服务中的方法的)如果服务还没开起 会先调用 create()方法
startService 和 bindService 都会调用create 之间的区别是:
○ start 开启一个服务进程。bind不是。 ○ bind 与当前的 activity的生命周期一致。 ○ 所以一般在bind 之前要调用start unbind destory
广播接收者有两种 注册方法
○ 清单文件中 (解除方法为1.删除应用2.手动到设置中停止。) ○ 动态注册 (一般oncreat方法中 比如服务开启时监听广播 或者 应用开启时在Mainactivity 中oncreat) ■ 一些广播接收只能在代码中注册 ● 屏幕锁屏和解锁 ● 电量改变
服务的分类
○ 本地服务 ○ 远程服务 ■ (如果调用其他程序服务 没有启动服务怎么办?)//脑残问题 远程调用是通过 绑定得到对象 调用的方法 bind 如果服务不存在会创建。
样式表 (按钮 字体 文本框)
○ style.xml ○ 在values 中更改
<style name=""><item name="android:layout_width">wrap_content<item>........</>
○ 继承 ■ <style name="" parent=""> 继承方法<item 加上自己的新样式 相同的样式会覆盖。 ■ <style name=" a.b"> b 继承了a 在使用的时候 style="@stle/a.b"
多媒体编程
○ 图片大小的计算 ■ bmp 位图 bitmap ■ 图片的大小=图片的总像素*每个像素占用的大小 ■ jpg 有损压缩 把相邻的颜色用一个标示 bmp 无损压缩 ○ 加载图片 ■ Bitmap bm=bitmapFactory.decodeFile();一个路径 ■ iv.setImageBitMap(bm) ■ 加载图片时 会把所有的颜色信息存储在内存中 是以 ARGB保存的 ■ 图片的缩放 因为手机屏幕就那么大没必要加载很多的像素 ● 手机 320*480 ● 图片 2400*3200 ● 2400/320=7 3200/480=6 缩放大的应为缩放小的有一边是超过的。 ● Options opt=new Options(); //解析图片时需要用到的参数都封装在这个对象里的 ● opt.inJustDecodeBounds=true // 不会为请求的图片申请内存 去保存像素信息 但是请求了图片的属性信息 从而进行缩放(但是 Bitmap 返回的是null) ○ opt.outWidth opt.outHeight ○ 获取屏幕的宽高 ■ Display dp=getWindowManager().geDefaultDisplay(); ■ dp.getWidth(); dp.getHeight(); ○ opt.inSampleSize ○ opt.inJustDecodeBounds=false 这样就请求图片了。 ■ 图片更改 ● bitmap 是只读的不能更改。
触摸监听
○ setOntouchListener(new OnTouchListenner(){ onTouch(View v,MotionEvent event)}) ○ event.getAction 可以获得动作 ■ DOWN 触摸 ■ MOVE 滑动 ■ UP 离开 ■ event.getX() getY ()获得坐标 ○ onTouch方法返回 如果是false 触摸事件不处理 true 触摸事件全部手工处理 false的话会传递给 调用触摸事件的父节点 (imageview 在 Linlayout里面 如果想给 Linlayout处理 就设置为false) ○ 图片画 copy.drawLine ○ 设置透明 copy.setFixel(x,y,Color.TRANSPARENT)
sd卡每次启动的时候会遍历一边,把所有多媒体文件都 在数据库中保存索引。(文件按的路径 大小 长度 艺术家)
图库系统中的图库 音乐 视频 是从数据库中 读取的(mide库中的索引)每次打开图库。。显示的是数据库中的数据 而sd卡遍历 只有收到广播 重启手机。
○ Intent intent =new Intent(); ○ intent.setAction(Intent.ACTION_MEDIA_MOUNTED) ○ intent.setDate(Uri.fromFile(Enviroment.getExternalStorageDirectory())) ○ sendBroadcast() 发送无序广播
获取sd卡路径
○ Enviroment.getExternal
获取文件的路径
○ 文件默认的路径是 date/date/包名/files/ ○ Context.getFileDir 返回的就是默认路径。
消息队列 刷新UI 消息给主线程处理 //static 如果其他地方要用
○ 消息处理器 队列主线程中都有所以只要发送过去就行了 ○ Hander hander=new Hander(){//用handler 来发消息 ○ public void handleMessage(android.os.Message msg){ ○ Bundle b=msg.getDate(); ○ bundle.get ○ } ○ } ○ handler.obtainMessage(); ○ msg.obj 或者 传递 new Bundle() put ○ handler.sendmessage();
数据库的操作
○ extends SQLiteOpenHelper{ ○ ○ } ○
类容提供者
○ 为了访问系统数据库(为了吧私有数据暴露给其他数据 其他程序只要访问类容提供者就好了) ○ 系统中的数据必须使用类容提供者。(短信 联系人) ○ 自定义类容提供者 ■
帧动画
○ 放在drawable 文件中 ○ 配置xml 文件 ○ imageView 中显示动画 ○ iv.setBackgroundResource(R.drawable.frameimation) ○ (animationdrawable)iv.getBackGround
bat windows 下的批处理文件 。sh 是linux 中的处理文件
JNI
○ 堆栈 数据结构 ■ 栈 int i person p; 指针 ● 存储 静态内存 static 全局 ● 先进先出 ● 由操作系统自动分配 ■ 堆 malloc / new 空间大 ● 动态内存 ● 队列 先进先出 ● 又程序员 分配释放 ○ 交叉编译 ■ 源代码 编译 链接 可执行程序 ■ 交叉编译就是 模拟其他频台的特性 ○ 交叉编译工具链 ■ 多个工具的集合 ○ 常见工具 ■ NDK:开发JNI 模拟其他平台编译代码 ■ CDT:C/C++ ■ cygwin:linux和 windows ○ 使用C写的方法 ■ c源代码放在 JNI 文件中 ■ 在本地定义一个方法;public native String func(); 没有方法体。方法体由 C实现。 ■ c代码 ■ 类型 要参考 NDK 中的 转换类型 String - jstring
0 0
- Android知识大纲
- android知识大纲
- android知识大纲
- spring知识大纲
- 测试管理全书知识大纲
- 图像处理知识复习大纲
- JavaWeb会话Session知识大纲
- Android学习大纲
- Android Box培训大纲
- Android Box培训大纲
- Android 学习大纲
- Android基础知识大纲
- Android学习大纲
- Android系统安全大纲
- Android 整体大纲
- Android学习大纲--知识点
- Android 视频基础知识大纲
- 系统构架师必备知识大纲
- jQuery中click和原生onclick的区别
- Linux驱动修炼之道-SPI驱动框架源码分析(上)
- handler/handlerThread使用2
- Seeder自动填充测试数据
- 推荐系统中显性反馈数据和显性反馈数据的比较
- android知识大纲
- Ruby爬虫header发送cookie,nokogiri解析html数据
- 背包问题
- 解决ArrayList线程不安全
- Java并发编程:如何创建线程?
- 愿世界对我温柔以待
- React Navigation--Stack Navigator 详细的例子
- qml 截屏功能
- DDL、DML、视图、序列、索引、导入导出、pl/sql简述(Oracle之一)