android知识大纲

适合初学者

只要有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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值