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
日志的具体在后面的文章中说明。
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
三、下载海马模拟器
//定位textView 这个控件
TextView tv1=(TextView) this.findViewById(R.id.textView1);
tv1.setText("你好,Android1班");
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
日志的具体在后面的文章中说明。
Android笔记——我的Android课的开始的更多相关文章
- Android笔记(六十三) android中的动画——逐帧动画( frame-by-frame animation)
就好像演电影一样,播放实现准备好的图片,来实现动画效果. 逐帧动画需要用到AnimationDrawable类,该类主要用于创建一个逐帧动画,然后我们把这个动画设置为view的背景即可. androi ...
- Android笔记:调试android程序
1.Debug 第一步: 添加断点 第二步: 右击项目→Debug As→Android Application //之后一个对话框出现,一会自动消失 第三步: 执行手机端操作,Eclipse 就会 ...
- Android笔记(七十三) Android权限问题整理 非常全面
Android权限系统非常庞大,我们在Android系统中做任何操作都需要首先获取Android系统权限,本文记录了所有的Android权限问题,整理一下分享给大家. 访问登记属性 android.p ...
- 【Android开发学习笔记】【第九课】重力感应
概念 使用重力感应技术的Android游戏已经屡见不鲜,不知道自己以后会不会用到,所以先研究了一下. 在网上学习了一下,貌似没有api,所以得自己去分析手机处在怎样状态下.注意: 下面提供的demo程 ...
- Android笔记——Android中数据的存储方式(三)
Android系统集成了一个轻量级的数据库:SQLite,所以Android对数据库的支持很好,每个应用都可以方便的使用它.SQLite作为一个嵌入式的数据库引擎,专门适用于资源有限的设备上适量数据存 ...
- Android笔记——Android中数据的存储方式(二)
我们在实际开发中,有的时候需要储存或者备份比较复杂的数据.这些数据的特点是,内容多.结构大,比如短信备份等.我们知道SharedPreferences和Files(文本文件)储存这种数据会非常的没有效 ...
- Android笔记:触摸事件的分析与总结----TouchEvent处理机制
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://glblong.blog.51cto.com/3058613/1559320 ...
- Android笔记一.深入理解Intent和IntentFilters(一)
深入理解Intent和IntentFiler(一) 转载请表明出处:http://blog.csdn.net/u012637501(嵌入式_小J的天空) 为了比較深刻的理解并灵活使用Inten ...
- Android OpenGL教程-第六课【转】
第六课 纹理映射: 在这一课里,我将教会你如何把纹理映射到立方体的六个面. 激动的时刻来了,加载图片了. 复习一下android加载图片的知识.放一个png到drawable里面. (图片文件名:ne ...
随机推荐
- 在 Mac OS X 上创建的 .NET 命令行程序访问数据库 (使用Entity Framework 7 )
var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...
- 黑马程序员_Java基础:JDK1.5后的新特性:自动拆装箱,以及注意事项
------- android培训.java培训.期待与您交流! ---------- 首先来看一段代码: Integer x = new Integer(4); Integer y = 4; 在JD ...
- Sprint回顾大揭秘——“宝典”来了
我始终记得当年我作为敏捷教练所做的第一次Sprint回顾,这一切都仿佛就发生在昨天.这家公司实行Scrum有好几年了,我自然而然地认为他们这群人是纪律严明并且成熟稳重的敏捷专家. 因此,当他们计划了一 ...
- 算法入门笔记------------Day4
1.WERTYU 输入一个错位后敲出的字符串,输出打字员本来想打出的字 #include<stdio.h> char *s="`1234567890-=QWERTYUIOP[]\ ...
- <Data Structure and Algorithm>排序算法
排序稳定:如果两个数相同,对他们进行的排序结果为他们的相对顺序不变.例如A={1,2,1,2,1}这里排序之后是A = {1,1,1,2,2} 稳定就是排序后第一个1就是排序前的第一个1,第二个1就是 ...
- JBOSS内存参数详解
JAVA_OPTS="$JAVA_OPTS -server -Xms1024m -Xmx1024m -Xss512k -XX:PermSize=128m -XX:MaxPermSize=25 ...
- oracl 创建用户
-- Create the user create user ADMIN default tablespace SYSTEM temporary tablespace TEMP profile ...
- android控件
---恢复内容开始--- (1)文字大小的类型 px.dip.sp.pt.in.mm (2)TextView控件 超链接显示 属性autoLink="all" (3)EditTex ...
- [java基础知识]java安装步骤
jre: java运行环境. jre = java虚拟机 + 核心类库(辅助java虚拟机运行的文件).如果只是运行java程序,只需要安装jre. jdk: java开发工具集 jd ...
- jquery ajax post 中文乱码解决
jquery ajax post 方式默认传递的是UFT-8字符,即使页面设置了gbk编码也无效.字符传到后台时如果后台设置的gbk或者其他编码,就会出现乱码.解决很容易,将后台页面设置成UTF-8编 ...