Android笔记——我的Android课的开始

时间:2022-04-25 03:41:28

android 最底层的是什么?

Android笔记——我的Android课的开始  

             硬件

介于硬件与软件之间的一个交互,你猜猜需要什么?

软件的上面一层便是各种的类库

硬件与软件之间的交互,就是需要驱动的进行。

1.android系统架构

1.Linux内核层,android系统是基于linux2.6内核的

2.系统运行库层,这一层通过一些c/c++库来为android系统提供了主要的特性支持

3.应用框架层,这一层提供了构建应用程序时可能用到的各种api

4.应用层,所有安装在手机上的应用都是属于这一层

2.android的四大组件:Activity活动,Service服务,BroadcastReceive广播接收器,ContentProvider内容提供者。

3.创建一个helloworld的android应用程序

目录分析:

1.src:放置我们所有Java代码的地方

2.gen:这个目录是自动生成的,主要有一个R.java文件,在你的项目中添加的任何资源都会在其中生成一个相应的资源id。这个文件永远不要手动去修改它。

3.assets:主要可以存放一些随程序打包的文件,在你的程序运行时,可以动态的读取这些文件的内容。另外,如果你的程序中使用到了WebView加载本地网页的功能,所有网页相关的文件也都存放在这个目录下。

4.bin:它主要包含了一些在编译时自动产生的文件。

5.libs:如果你的项目中使用到第三方jar包,就需要把这些jar包都放在libs目录下面,放在这个目录下面的jar包都会自动添加到构建路径里去。

6. res:所有用到的图片,布局,字符串等资源都放在这个目录下面

7.AndroidMainfest.xml:这是android项目的配置文件,程序中定义的所有四大组件都需要在这个文件中注册。另外还可以在这个文件里给应用程序添加权限的声明,也可以重写指定你创建时指定的程序最低兼容版本和目标版本。

8.project.properties:这个文件非常地简单,就是一行代码指定编译程序时所使用的SDK版本。

4.使用Android的日志工具Log

Log.v()这个方法用于打印那些最琐碎的,意义最小的日志。对应级别verbose,是android日志里面级别最低的一种

Log.d()打印一些调试信息,这些信息有助于调试程序和分析问题对应级别是debug

Log.i()用于打印应一些比较重要的数据,这些数据应该是你非常想看到的,可以帮助你分析用户行为的那种,对应级别为info

Log.w()打印警告信息,提示程序在这个地方可能会有潜在的风险,最好去修复一下,这些出现警告的地方,对应级别为war

Log.e()用于打印程序中的错误信息,这一般代表你的程序出现了严重的问题,必须尽快的修复,对应级别为error

日志的具体在后面的文章中说明。

 一、JDK(不用安装)
1.拷贝
      D:\Java\jdk1.8.0_91
2.配置环境变量
      JAVA_HOME=D:\Java\jdk1.8.0_91
      CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\jre\lib\rt.jar
      PATH=D:\Java\jdk1.8.0_91\bin;原来的
3.校验
      随便目录运行  java -version

二、运行eclipse ADT  (不用安装)
1.配置一个环境变量ANDROID_HOME=D:\Java\adt-bundle-windows-x86_64-20140702\sdk
2.直接运行eclipse.exe

三、下载海马模拟器 
 
四、Hello word
1、运行Eclipse,点击DDMS等待
2、运行海马模拟器
3、在java的文件中New一个Android application progect项目
4、在src目录下打开ManinActivity.java文件,在第一个方法onCreate()中写入

//定位textView 这个控件
TextView tv1=(TextView) this.findViewById(R.id.textView1);
tv1.setText("你好,Android1班");

5、如果海马模拟器的Android版本与Android项目不一致,打开AndroidManifest.xml,“android:minSdkVersion="17”’”17改成自己需要的版本
Android笔记——我的Android课的开始
 
6、在项目名右键Run AS的一个选项,运行

7.分析

接下来我们一起分析一下 HelloWorld 项目究竟是怎么运行起来的吧。首先打开

AndroidManifest.xml 文件,从中可以找到如下代码:

<activity

android:name="com.test.helloworld.HelloWorldActivity" android:label="@string/app_name" >

<intent-filter>

<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />

</intent-filter> </activity>

这段代码表示对 HelloWorldActivity 这个活动进行注册,没有在 AndroidManifest.xml 里注册的活动是不能使用的。其中 intent-filter 里的两行代码非常重要,<action android:name= "android.intent.action.MAIN" />和<category android:name="android.intent.category.LAUNCHER" />

表示 HelloWorldActivity 是这个项目的主活动,在手机上点击应用图标,首先启动的就是这个活动。

那 HelloWorldActivity 具体又有什么作用呢?我在介绍 Android 四大组件的时候说过,

活动是 Android 应用程序的门面,凡是在应用中你看得到的东西,都是放在活动中的。因此你在图 1.15 中看到的界面,其实就是 HelloWorldActivity 这个活动。那我们快去看一下它的代码吧,打开 HelloWorldActivity,代码如下所示:

public class HelloWorldActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.hello_world_layout);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.hello_world, menu);

return true;

}

}

首先我们可以看到,HelloWorldActivity 是继承自 Activity 的。Activity 是 Android 系统提供的一个活动基类,我们项目中所有的活动都必须要继承它才能拥有活动的特性。然后可以看到 HelloWorldActivity 中有两个方法,onCreateOptionsMenu()这个方法是用于创建菜单的,我们可以先无视它,主要看下 onCreate()方法。onCreate()方法是一个活动被创建时必定要执行的方法,其中只有两行代码,并且没有Hello world!的字样。那么图1.15 中显示的Hello world! 是在哪里定义的呢?

其实 Android 程序的设计讲究逻辑和视图分离,因此是不推荐在活动中直接编写界面的,更加通用的一种做法是,在布局文件中编写界面,然后在活动中引入进来。你可以看到,在onCreate()方法的第二行调用了 setContentView()方法,就是这个方法给当前的活动引入了一个 hello_world_layout 布局,那 Hello world!一定就是在这里定义的了!我们快打开这个文件看一看。

布局文件都是定义在 res/layout 目录下的,当你展开 layout 目录,你会看到 hello_world_layout.xml 这个文件。打开之后代码如下所示:

<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=".HelloWorldActivity" >

<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" />

</RelativeLayout>

 
              Android项目的目录结构
Activity 应用被打开时显示的界面
src 项目代码
R.java 项目中所有资源文件的资源id
Android.jar Android的jar包,导入此包方可使用Android的api
libs 导入第三方jar包
assets 存放资源文件,比方说mp3、视频文件
bin 存放编译打包后的文件
res 存放资源文件,存放在此文件夹下的所有资源文件都会生成资源id
drawable 存放图片资源
layout 存放布局文件,把布局文件通过资源id指定给activity,界面就会显示出该布局文件定义的布局
menu 定义菜单的样式
String.xml 存放字符串资源,每个资源都会有一个资源id

   

    

          

  

1.android系统架构

1.Linux内核层,android系统是基于linux2.6内核的

2.系统运行库层,这一层通过一些c/c++库来为android系统提供了主要的特性支持

3.应用框架层,这一层提供了构建应用程序时可能用到的各种api

4.应用层,所有安装在手机上的应用都是属于这一层

2.android的四大组件:Activity活动,Service服务,BroadcastReceive广播接收器,ContentProvider内容提供者。

3.创建一个helloworld的android应用程序

目录分析:

src:放置我们所有Java代码的地方

gen:这个目录是自动生成的,主要有一个R.java文件,在你的项目中添加的任何资源都会在其中生成一个相应的资源id。这个文件永远不要手动去修改它。

assets:主要可以存放一些随程序打包的文件,在你的程序运行时,可以动态的读取这些文件的内容。另外,如果你的程序中使用到了WebView加载本地网页的功能,所有网页相关的文件也都存放在这个目录下。

bin:它主要包含了一些在编译时自动产生的文件。

libs:如果你的项目中使用到第三方jar包,就需要把这些jar包都放在libs目录下面,放在这个目录下面的jar包都会自动添加到构建路径里去。

res:所有用到的图片,布局,字符串等资源都放在这个目录下面

AndroidMainfest.xml:这是android项目的配置文件,程序中定义的所有四大组件都需要在这个文件中注册。另外还可以在这个文件里给应用程序添加权限的声明,也可以重写指定你创建时指定的程序最低兼容版本和目标版本。

project.properties:就是一行代码指定编译程序时所使用的SDK版本。

4.使用Android的日志工具Log

Log.v()这个方法用于打印那些最琐碎的,意义最小的日志。对应级别verbose,是android日志里面级别最低的一种

Log.d()打印一些调试信息,这些信息有助于调试程序和分析问题对应级别是debug

Log.i()用于打印应一些比较重要的数据,这些数据应该是你非常想看到的,可以帮助你分析用户行为的那种,对应级别为info

Log.w()打印警告信息,提示程序在这个地方可能会有潜在的风险,最好去修复一下,这些出现警告的地方,对应级别为war

Log.e()用于打印程序中的错误信息,这一般代表你的程序出现了严重的问题,必须尽快的修复,对应级别为error

日志的具体在后面的文章中说明。