第一章 开始启程,你的第一行Android代码

说明:本笔记节奏,严格按照图书章节,望见谅,所以代码会上传github,特别简单,我会省略!

android的由来,android的历史,以及它的野史,请百度,谷歌

     对于这种知识,个人认为知道就好
........................
.......................

Android 系统架构

 Android 可以大致分为四层架构,五块区域。

1. Linux内核层 

  Android系统是基础Linux2.6内核的,这一层为android设备的各种硬件提供了底层的驱动,如显示 驱动,音频驱动,照相机驱动,蓝牙驱动,wi-fi驱动,电源管理器等。

2. 系统运行库层 

  这一层通过一些c/c++库来为android系统提供主要的特性支持。如SQLIte库提供了数据库的支持,OpengGL|ES库提供了3D绘图的支持,Webkit库提供了浏览器内核的支持等。

  同样在这一层还有android运行时库,主要提供一些核心库,能够容许开发者使用java语言来编写应用。另外android运行时中还包含Dalvik虚拟机,它使得每个android应用都能运行在独立的进程中,并且拥有自己的Dalvik虚拟机实例。相对于java虚拟机,Dalvik是专门为移动设备定制的,它针对手机memory,cpu性能做出了优化处理。

3. 应用框架层 

  这一层主演是提供了构建应用程序时可能用到的各种API,android自带的一些核心应用就是使用这些API完成的,开发者也可以通过使用这些API来构建自己的应用程序。

4. 应用层

  所有安装在手机上的应用程序都是属于这一层,如系统自带的联系人,短信等程序,或者从第三方市场下载的app。

Android已发布的版本

   由于android版本发展太迅速!这里不做具体说明,从2008年9月,谷歌正式发布Android系统1.0系统, 到写笔记这一天是Android 6.0

Android应用开发特色

1. 四大组件

  Android系统的四大组件分别是活动(Activity),服务(Service),广播接收器(Broadcast Receiver)和内容提供者(ContentProvider),其中活动是所以android应用程序的门面,凡是在应用中你看到的东西,都是放在活动中的。而服务就比较低调,你无法看到它,但它一直在后台默默地运行,即使用户退出了应用,服务仍然是可以继续运行的,广播接收器可以容许你的应用接收各处的广播消息,比如电话,短信等,当然你的应用同样也可以向外发出广播消息。内容提供器则为应用程序之间共享提供了可能,比如你想要读取系统电话本的联系人,就需要通过内容提供器来实现。

2. 丰富的系统控件

  Android系统为开发者提供了丰富的系统控件,使得我们可以很轻松地编写好看的界面,当然也也可以自定义控件。

3. SQLite数据库

 Andriod系统自带了这种轻量级,运算速度快的嵌入式关系型数据库。它支持标准的SQL语法,还可以通过Android封装好的API进行操作,让存储和读取数据变得方便。

4. 地理位置定位 

  移动设备和PC相比起来,地理位置定位可以算是很大的一个亮点,现在的Android手机都内置了GPS,走到哪里都可以定位自己的位置,再结合功能强大的地图功能,LBS这一领域潜力无限。

5. 强大的多媒体

  Android系统还提供了丰富的多媒体服务,如音乐,视频,录音,拍照等等,这一切都可以在程序中通过代码进行控制,让你的应用变得丰富多彩。

6. 传感器

   Android手机都会有内置多种传感器,如加速传感求,方向传感器等等,这也算是移动设备的一大亮点。通过灵活的使用这些传感器,可以做出很多在pc上根本无法实现的应用。

手把手带你搭建开发环境

本书采用android studio 2.0进行开发,大家可以参看 Android Studio入门到精通 http://blog.csdn.net/yanbober/article/details/45306483

第一个Andriod程序

 书上的例子,Hello World! 如有需要请下载:https://github.com/RelocationTime/First_Row_Code.git

1.3.3 分析你的项目

由于本人使用的是android studio 2.0作为开发工具,所以不对eclipse + adt  做 介绍,但是我会介绍一下一个主要的目录及文件。
1. src
 这个目录是放置我们所有的Java代码的地方,它这这里的含义和普通的java项目下的src目录是完全一样的
2. libs
   这里放置的是所有用到的libs,以后的各种开源库都放置在其中。
3. res
   这里面放置,我们项目里,所有要用到的资源,包括图片,各种布局,动画,选择器等等
4. AndroidManifest.xm
 这个目录,个人觉得是最重要的,是整个项目的配置文件,四大组件都需要注册,但在AS中会自动注册,不需要我们手动注册,还可以给应用程序添加权限声明,指定最低 兼容版本和目标版本,这个目录需要大家用心多多体验!
以上四个是AS 和 Eclipse都有的,其他不做介绍,要是深入学习AS, 请百度http://blog.csdn.net/yanbober/article/details/45306483
开始简单分析代码:
package com.example.rescue.firstcode; //1

import android.support.v7.app.AppCompatActivity; //2
import android.os.Bundle; ///2.1

public class MainActivity extends AppCompatActivity { //3

    @Override
    protected void onCreate(Bundle savedInstanceState) { //4
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); //5
    }
}

详细讲述,以后将不做说明:

// 1 : 为我们的包定义

// 2:是我们代码中用到的类,进行导入

// 3 : 是我们的主类,java语法不会,请绕行,extends 继承的是Activitiy的子类,书上是继承Activity,这里用到的是AS环境下,本质上是一样的,都是Activity的子类

// 4 : 是我们必须重写的方法

// 5 : 是我们设置页面所显示的布局, 可以理解为显示的是什么界面放在我们的手机页面中,R.layout.activity_main, 是什么?下面我们介绍

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.rescue.firstcode.MainActivity">  // 1

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tv"
        android:text="Hello World!" /> // 2
</RelativeLayout>

进行个人认识,进行讲解:

 xml语言不会,请自行百度,大家只要知道,开始标签,结束标签,属性它的本质认识,就可 以,比如RelativeLayout这个标签,必须有自己的开始和结束标签 ,以及它的属性<–

android:layout_width=”match_parent”

android:layout_height=”match_parent” ><–/>

对书上的认识点,清楚之后,请看我的总结

1. 每个组件必须指定它的宽高

2. 为什么有的属性定义为”@+id/tv”,有点却是”@id/tv”

认识: @+:是自己的属性标签,请记住是自己的,针对自己做的标示,而@/是引用的标示,意思就是,它不是自己的,是引用别人的,注意是别人的!这下大家应该知道@+和@/的原理吧,这是我自学过程中,不懂的地方

3. id 请不要用数字,特殊符号,大写字母,我说的是最好

4. xmlns:android=”http://schemas.android.com/apk/res/android”是什么意思?它是xml的域名空间,大家深入学习一下xml知识,就懂了,我只是提示一下

前行必备,掌握日志工具的作用

  日志很重要,很重要,很重要

  通过上一节的学习,大家应该成功创建自己的第一个程序了,对目录结构,运行流程也有一定的认识了, 也许会有一点不懂,但没关系,慢慢来,随着代码的不断练习,你会熟练的,加油!

日志的介绍

Log.v()

 v:verbose :冗长地,啰唆地,累赘地,是它的英文意思,也是它的等级,是最低的,打印的东西,就是冗长地,啰唆地,累赘地

Log.d()

 d: debug :调试信息; 除虫; 诊断; 是它的英文意思,比verbose高一级,用于打印一些调试信息,很有用。

Log.i()

 i : info;信息的英文意思,打印的比较重要,可以帮助你分析用户行为的那种,比debug高一级。

Log.w()

 w : warn: 警告的英文意思,这个是提示程序在这个地方会有潜在的风险,最好修复一下警告的地方,比info高一级.

Log.e()

 e: error:错误的意思,这个是必须处理的任务,是出现了严重的问题,导致程序无法运行

注意事项:

1. 如何eclipse logcat下方打印不出来,肯定是设备失去焦点,或者模拟器掉线了

 解决: 进入DDMS视图,在Devices窗口中点击当前设备,就可以

 

2. [2016-01-06 14:11:18 - Note] The connection to adb is down, and a severe error has occured.

[2016-01-06 14:11:18 - Note] You must restart adb and Eclipse.

[2016-01-06 14:11:18 - Note] Please ensure that adb is correctly located at ‘D:\Users \LYP\AppData\Local\Android\sdk\platform-tools\adb.exe’ and can be executed.

这个问题很常见,本质上是adb设备的端口被占用,解决方法,可以看我的另一个博客:blog.csdn.net/android_lyp/article/details/50469031

3.为什么使用Log, 而不使用System.out

 其实我一开始是,特别喜欢使用syso,因为我java基础很好,善于调试,但是慢慢的,我喜欢上了LogCat,理由很简单,LogCat强大,会比syso好太多,大家慢慢使用,就会有深刻的认识

第一章结束

时间: 2024-11-01 23:31:07

第一章 开始启程,你的第一行Android代码的相关文章

第1章--开始启程,你的第一行Android代码

Android系统架构 1.Linux内核层(基于Linux2.6) 2.系统运行库层(通过一些C/C++库来为Android系统提供主要的特性支持,并且拥有一个自己的额Dalvik虚拟机实例) 3.应用框架层(提供各种API,Android自带的一些核心应用就是使用这些API完成的,开发者也可以通过使用这些API来构建自己的应用程序) 4.应用层(手机上的应用程序都属于这一层) Android应用开发特色 1.四大组件 活动(Activity):看得到的东西都放在活动里 服务(Service)

第一章,listview的简易用法(Android)

这篇文章主要是练习了安卓listview的arrayadapter和baseadapter的简单填充. 1.arrayadapter填充 布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_pare

第一章:线程三种常用模式(Callable代码)

小结难点: 关于Callable 流程 //一.创建执行服务 也是线程池 ExecutorService ser = Executors.newFixedThreadPool(线程数); //提交执行 Future<call方法返回的类型> fr = ser.submit(逻辑执行类); //执行结果 返回call方法执行的结果 Object o = fr.get(); //执行完成,立即关闭线程 ser.shutdownNow(); 原文地址:https://www.cnblogs.com/

20172327 2017-2018-2 《第一行代码Android》第一章学习总结

学号 2017-2018-2 <第一行代码Android>第一章学习总结 教材学习内容总结 - Android系统架构: 1.Linux内核层 Android系统是基于Linux内核的,这一层为Android设备的各种硬件提供了底层的驱动,如显示驱动,音频驱动,照相机驱动,蓝牙驱动,Wi-Fi驱动,电源管理等. 2.系统运行底层 - 通过一些C/C++库来为Android系统提供了主要的特性支持 库名 功能 SQLite库 提供数据库的支持 OpenGL/ES库 提供3D绘图支持 Webkit

《算法》第一章部分程序

? 书中第一章部分程序,加上自己补充的代码.包括若干种二分搜索和寻找图上连通分量数的两种算法. ● 代码,二分搜索 1 package package01; 2 3 import java.util.Arrays; 4 import edu.princeton.cs.algs4.StdRandom; 5 6 public class class01 7 { 8 public int binarySearch(int [] a, int target) // 非递归实现 9 { 10 int lp

OSGi原理与最佳实践:第一章 OSGi框架简介(2)

OSGi原理与最佳实践:第一章 OSGi框架简介(2) 由  ValRay 发布 已被浏览4884次 共有3条评论 已被3个人收藏 2013-08-16 21:23 顶(0) 踩(0) osgi原理与最佳实践 1.1.4 开发传统类型的应用 1.1.4.1 B/S 我们首先来看一下,如何基于 OSGi 来开发 B/S 结构的应用.B/S 结构应用程序的开发,可有两个选择:一个是在 OSGi 的框架中嵌入 Http 服务器,另外一个是在 Servlet 容器中嵌入 OSGi 框架.下面分别介绍这两

经典中的博弈:第一章 C++的Hello,World!

经典中的博弈:第一章 C++的Hello,World! 摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢! "程序设计要通过编写程序的实践来学习"-Brian Kernighan 1.1 程序 何为程序?简单的说,就是为了使计算机能够做事,你需要在繁琐的细节中告诉它怎么做.对于怎么做的描述就是程序.编程是书写和测试怎么做的过程.维基百科上说,一个程序就像一个用汉语(程序设计语言)写下的红烧肉菜谱(程序),用于指

第一章:Http概述

第一章:Http概述 引言 web浏览器.服务器和相关的web应用程序都是通过http相互通信的,http是现代全球英特网中使用的公共语言. 本章主要内容 1.web客户端与服务器是如何通信的 2.资源(表示web内容)来自何方 3.web事务(请求与响应)是怎样工作的 4.http通信所使用的报文(请求报文/响应报文) 5.底层TCP网络协议 6.不同的http协议变体 1.2web客户端与服务器 web内容都是存储在web服务器上的.web服务器所使用的是http协议,因此也经常称web服务

《Hadoop权威指南》笔记 第一章&第二章

? ? ? ? ? ? ? ? ? ? ? ? ? ? 使用MapReduce ? ? ? ? ? ? ? ? import java.io.IOException; // 是hadoop针对流处理优化的类型 import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; // 会继承这个基类 import org.apache