第一天

来源:互联网 发布:mac 的破折号 编辑:程序博客网 时间:2024/06/11 00:15

1.1G-4G的介绍

  1. G generation
  2. 1G 大哥大 只能进行通话 不能发短信
  3. 2G wap.baidu.com 支持上网 彩信业务
  4. 3G 沃 www.baidu.com 7.2M/s
  5. 4G lte long time evolution 100M/s
  6. 主要区别 速率的不同
  7. 5G 华为 大公司卖标准 小公司卖产品 arm:并不生产处理器 10G/s

2.Android操作系统介绍

安迪鲁宾研发

3.Android历史介绍

Android版本对应api级别 3.0 ---112.3----102.2 ---8

4.Android系统架构(重点)

  • 第一层:应用层Application(开发者开发)
  • 第二层:应用框架层Application Framework(API)
  • 第三层:Android底层类库层 Libraries、Dalvik虚拟机(C,C++开发,很多库是谷歌那过来别人的东西进行改进后直接只用的
  • 第四层:linux内核层 linux kernel

    Android试运行在Linux内核基础之上的。 比如:系统应用闹钟,在闹钟被触发要响铃的时候,首先应用层的闹钟应用调用了应用框架层的API,API再调用第三层的类库层,类库层再调用最底层的音频驱动,驱动来控制硬件发声。

5.两种虚拟机的不同 (重点)

#一:架构不同:JVM使用栈架构;
  • JVM把所有的指针(内存地址)都保存在了栈里边;
  • Dalvik使用的是寄存器,数据是加载到CUP的寄存器上的。
    • Dalvik把所有的指针(内存地址)都保存在了寄存器中。也就是说所并不是把数据(例如图片)放入了寄存器。
二:JVM加载的.class文件,
  • .java被编译成.class文件,然后直接运行。或者把所有的.class文件打包成.jar包后再运行。每一个.class文件都包含了一个文件头信息
  • Dalvik加载的是.dex文件,对内存的分配情况做了优化。

    • .java被被编译成.class后,再把所有的.class文件编译成一个.dex文件,然后再运行。
      把所有的.class文件编译成一个.dex文件后,最起码少了很多个文件头信息。
  • jvm: sun oracle

  • dvm: 谷歌

    jar包和.apk都可以用压缩文件来打开

Android的新虚拟机ART
    Dalvik:在应用每次运行的时候,字节码都需要通过即时编译器转换为字节码,然后再运行,极大的拖慢了应用的运行效率    ART:应用在第一次安装的时候,字节码会预先编译成机器码,然后保存到本地,使之成为真正的本地语言,应用的启动和运行速度会显著提升ART目前不稳定,所以很多厂商把ART给去掉了。开启ART:进入开发者模式,选择运行环境切换即可。(会重启手机)

6.SDK下载

day01资料目录中有下载的截图SDK:Software Development Kit,软件开发工具包SDK包含以下内容:    Eclips+ADT插件(最新的开发工具变成了Android studio)    Android SDK    Android Platform-tools    最新的Android开发平台    最新的模拟器镜像其中后四条是无论用什么开发工具(Intelij、Android studio、eclipse)都必须要使用的。www.android-doc.comAndroid中文API完全翻版英文版,但是汉化率不高

6.1SDKManger的使用

  • 可以在里面管理SDK版本的下载和卸载。
  • 双击打开SKDManager,
  • Tools目录下的AndroidSDK Tools是SDK工具集,必须下载安装,下载后保存在tools目录里边包含了模拟器和9.path工具;
  • AndroidSDK Platform-tools是SDK平台工具集,也是必须下载安装,下载后保存在Platform-tools目录里边包含了ADB工具。
  • Android4.3(API 18)目录下:
  • SDK Platform:SDK平台,在每一个安卓版本中都有一个SDK Platform,只有把对应的SDK Platform下载下来才可以使用当前的版本开发,下载后保存在platforms目录中;
  • Documentation for Android SDK帮组文档;
  • 所有带Intel或者ARM的都是指使用哪个CPU架构。下载下来后保存在system-images目录下。
  • sources for Android SDK:Android API源码,下载后保存在sources目录中;
  • Extras目录:
  • Android Support Library:安卓支持类库,下载后保存在extras目录中;
  • HAXM:英特尔加速器,解决模拟器运行慢的问题,下载后需要单独安装;双击即可。
  • 安装过程中遇到了 is not trun on,需要去bios里边开启改功能,遇到了is not support说明你的电脑不支持,就放弃吧。
  • SDK目录
    • add-ons:存放高级应用的API的文件
    • build-tools:构建工具
    • docs:开发文档
    • extras:存放依赖的第三方的包
    • platforms:各个平台的文件
    • adb:android debug brigde android调试桥
    • sources:API的源代码文件
    • system-images:系统的镜像文件
    • tools:工具文件

7.模拟器的简介及创建

  • Keybord: Hardware keybord present:模拟器上的返回键是实体按键,一般要勾上,否则模拟器上想返回就只能用快捷键了

  • Skin: Dispaly a skin with hardware controls:皮肤,勾上。

  • Front Camera:模拟器的前置摄像头不能用
  • Back Camera:None,不能用,Emulated:虚拟摄像头,可以获取到摄像头的属性,不能拍照,Webcam:调用电脑的摄像头,可以拍照;
  • memory options:RAM:模拟器运行内存;VM Heap:模拟器堆内存大小
  • Internal Storage:手机自带存储空间大小;必须填写
  • SD Card:模拟器内存卡空间大小,不填认为没有;
  • Emulation Options:Snapshot:存储快照,类似于Windows的休眠功能;Use Host GPU:使用本地的GPU,勾上的话模拟器运行会快,但是这两个一般都不选择勾上。

8启动模拟器:

  • Scale display to real size:对模拟器进行缩放显示Screen Size不用管;Monitor dip:输入不同的数值,Scale会显示出来以当前的多少倍进行了缩放。
  • Wipe user data:勾上的话每次启动该模拟器都会恢复出厂设置;

  • VGA 480* 640

  • QVGA 240*320
  • HVGA 320*480
  • WQVGA 240*400
  • FWVGA 480*854
  • WVGA 480*800
  • AVD: Android virtual Device

8.创建部署Android项目

DDMS:Device Definition Monition Service 

9.Android项目目录结构

  • src:项目的java代码
  • gen
    • buildConfig:自动生成,应用是否可以debug,不要更改;
    • R:保存项目中使用的资源的id,自动生成,不要更改;
  • Android.jar:导入这个包,应用才可以使用Android的api,在创建目录的时候选择的编译版本即是此对应包;
  • libs:存放第三方jar包
  • assets:资源文件夹,存放视频或者音乐等较大的资源文件,这里边的资源并不在R文件中生成ID,使用IO流来使用;
    例如file://android_asset/xxx.3gp
  • bin:存放应用打包编译后的文件
  • res:资源文件夹,在这个文件夹中的所有资源,都会有资源id,读取时通过资源id就可以读取,注意文件名称不能一样,哪怕后缀名称不一样也不行,即不能出现xx.jpg和xx.png的情况。因为R文件读取的是文件名而不是包含后缀的文件名。
  • layout:布局文件夹,保存布局文件,Android中所有布局文件都是xml文件
  • menu:菜单配置文件夹,保存菜单的配置文件,决定菜单的样式
  • values
    • strings:字符串资源文件,用来定义字符串资源的
    • dimens:长度资源文件,用来定义长度资源
    • style:样式和主题资源文件

10.清单文件

  • package:应用在系统中的唯一识别
    • versionCode:应用的版本号,系统、应用市场识别;
    • versionName:公司内部识别号码,随意定义
  • application节点下的label是应用管理程序里边显示出来的应用名字,icon是应用管理程序里边显示出来的图标
  • activity(应用的入口)节点下的label是应用的名字,更改了它,手机上应用的名字就变了,同样这个icon才是应用的图标;
  • project.properties 项目环境信息,更改里边的数值就是更改了编译版本(必须下载了改版本的platform),与项目目录结构的Android.jar是对应的。一般是不需要修改此文件,

11.应用的安装过程

  • 第一步:把APK文件复制(下载)到手机里边
  • 第二步:系统安装APK
  • 第三部:系统自动删除复制到手机里边的APK文件

打包过程

  • 一:编译Java文件,打包资源文件;
  • 二:生成APK文件
    • 编译.dex文件
    • 打包未编译的资源文件;
    • 打包清单文件
  • 三:签名文件

把Android的应用程序打包成一个.apk文件,.apk文件可以安装在手机或者模拟器上。如果是签名打包,是在打包的过程中,对文件进行了加密。
投放到Android市场上的应用软件必须签名。

aapt: Android application package tools 打包apk文件

签名:

adb :Android debug bridge

安装路径

  • 第三方应用保存路径:data/app
  • 系统应用保存路径:system/app
  • data/data/包名文件夹:系统为每一个应用提供的一个专属空间

12.DDMS的使用

13.ADB进程&指令

— 常见命令:adb devices  列出所有的设备adb shell 挂载到linux的空间 可以执行liux指令adb  install xxx.apk 如果有多个设备,我们可以指定设备   adb install –s  emulator-5554 D:/xxx.apkadb shell 挂载到linux空间adb push 把文件推到手机里  adb pull 把文件从手机里拉出来ctrl + F11 横竖屏的切换 

14.电话拨号器(重点)

开发项目的步骤:1、理解需求,弄明白需求后在写代码;2、在Android工程中设计UI界面;3、代码实现业务逻辑;

电话拨号器的代码:

    //初始化布局文件中的控件    et_phone = (EditText) findViewById(R.id.et_phone);    Button bt_call  = (Button) findViewById(R.id.bt_call);    //获得EditText控件里面的数据    bt_call.setOnClickListener(new OnClickListener() {        @Override        public void onClick(View v) {            //拨打电话号码            //获取数据框中的电话号码            String phone = et_phone.getText().toString().trim();            //创建一个拨打电话的意图            Intent intent = new Intent();             //设置拨打电话号码的动作            intent.setAction(Intent.ACTION_CALL);            //设置拨打的电话号码            intent.setData(Uri.parse("tel://"+phone));            //开启拨打电话的意图            startActivity(intent);        }    });

15.四种点击事件

 (1)采用内部类的方式去实现OnClickListener  (2)匿名内部类 (3)当前类imp OnClickListener  (4)onclick  1、设置按钮的单击事件的监听器,创建匿名内部类    bt_call.setOnClickListener(new OnClickListener() {        @Override        public void onClick(View v) {            //拨打电话号码            String phone = et_phone.getText().toString().trim();            Intent intent = new Intent();             intent.setAction(Intent.ACTION_CALL);            System.out.println("phone="+phone);            intent.setData(Uri.parse("tel://"+phone));            startActivity(intent);        }    });2、创建一个内部类private class MyOnClickListener implements OnClickListener{    @Override    public void onClick(View v) {        //拨打电话号码        String phone = et_phone.getText().toString().trim();        Intent intent = new Intent();         intent.setAction(Intent.ACTION_CALL);        System.out.println("phone="+phone);        intent.setData(Uri.parse("tel://"+phone));        startActivity(intent);              }}//别忘记给按钮添加一个单击事件的监听器bt_call.setOnClickListener(new MyOnClickListener());3、在布局文件中给按钮添加一个单击事件的响应方法,然后在代码中实现这个方法(1)在布局文件中给按钮添加一个单击事件的响应方法    <Button    android:layout_width="match_parent"   android:layout_height="wrap_content"   android:text="拨打"   android:id="@+id/bt_call"   android:onClick="call"  />(2)在代码中实现这个方法//view 表示的是按钮这个视图public void call(View view){    //拨打电话号码    String phone = et_phone.getText().toString().trim();    Intent intent = new Intent();     intent.setAction(Intent.ACTION_CALL);    System.out.println("phone="+phone);    intent.setData(Uri.parse("tel://"+phone));    startActivity(intent);      }

16.五种布局

  1. 线性布局(重点) 分水平和垂直2种
  2. 相对布局:各个组件都是按照相对位置来摆放。
  3. 帧布局: 一层一层绘制
  4. 表格布局
  5. 绝对布局 已经被谷歌废弃

  6. 工作中常用的就是各种布局的嵌套使用

0 0
原创粉丝点击