Android学习笔记(三):Andriod程序框架
修改Eclipse的字体,我希望大一些,反正22寸的显示屏:
Window->Preferences->General->Apprearance->Colors and Fonts -> Java -> Java Editor Text Font(...) -> Edit
在此次,我们先创建一个Hello,Android的程序,并既而讨论Andriod的程序架构。
1、创建project:File > New > Project > Andriod > Andriod Project
2、如图填入poject信息:
- Project Name:这是project的名字,同时根据这个名字在workspace中自动生成相关目录(见location)。
- Application Name:这个映用的名字,加载在Andriod设备中,图标上显示的映用名称。
- package Name:这是java的package的名称,这里,我使用了com.wei.learning.helloandriod。为了避免名称冲突,采用了标准的namespace的方式。
- Create Activity:这是Andriod的Activity子类的名称,一个Anctivity是一个可执行的类,相当于main。
- Min SDK Version,这是表明该映用能够兼容的最小的API版本号,这里选择了7,也就是可支持Andriod 2.1以上的版本。通常选择Build Target的编译版本一致。Andriod是前向兼容的,以本例子为例,可以在Andriod 2.2的平台上跑,但是如果我们在Build Target中选择了2.2,不能保证则会2.1的平台上跑。
如果我们不是用Eclipse,我们也可以用命令行生成project,如下:
android create project /
--package com.wei.learning.helloandroid /
--activity HelloAndroid /
--target 2 /
--path <path-to-your-project>/HelloAndroid
3、写我们的Hello,Andriod例子
在HelloAndriod/src/com/wei/learning/helloandriod/中是我们的源代码文件,这里只有一个,HelloAndriod.java,内容如下:
package com.wei.learning.helloandriod;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;//在Eclipse中可以简单采用Shift+Ctrl+O可以自动根据内容生成所需要的import的package。public class HelloAndriod extends Activity { //一个Activity是实体用于处理用户操作,一个映用可以多个分割的activities,但同一时刻用户主能与其中一个互动
/** Called when the activity is first created.
* 这里的注释采用javadoc的标准写法,以便生成我们的API的HTML文档。
* OnCreate()用于初始化和UI的建立。*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/* View是在UI layout中使用的元素,包括button等等,这里使用TextView。创建对讲后,设置文本内容,最后使用setcontentView()来将tv对象防止在activity UI中。*/
TextView tv = new TextView(this);
tv.setText("Hello, Andriod!");
setContentView(tv);
//setContentView(R.layout.main);
}
}
4、javadoc的注释
javadoc的注释方式已经忘得差不多,需要复习一下。
/** ...... */ 注释若干行,并写入 javadoc 文档,命令行为:javadoc -d 文档存放目录 -author -version 源文件名.java,在Eclipse中Porject-> Generate Javadoc...
在/** */里面是可以使用HTML的脚本,例如<li>,<br>等等。可以在类,方法之前加入注释说明。例子如下:
/**
* 方法/类的简述.
* <p>详细说明第一行<br>
* 详细说明第二行
* @param ,用于参数描述
* @return ,描述返回之没有返回值
*/@author 标明开发该类模块的作者
@version 标明该类模块的版本
@see 参考转向,也就是相关主题
@param 对方法中某参数的说明
@return 对方法返回值的说明
@exception 对方法可能抛出的异常进行说明
@author 作者名
@version 版本号
5、运行
菜单Run > Run,或者直接按三角图标,选择”Andriod Application“,将会启动模拟器,由于我们设置为2.1的编译环境,将会启动我们创建的VM2.1来运行。结果如下左边图,按右边返回键,可以见右图,图标等信息已将安装。
6、project的相关内容
我们先将例子跑起来,回过头,我们认真看看Andriod project的结构,如图所示。图中所见的结构同我们在project目录,目录有:
AndroidManifest.xml bin/ gen/ res/ assets/ default.properties proguard.cfg src/
gen/
gen/下面有一个重要的文件R.java,这个文件由系统为一些资源自动生成唯一标识的ID,想象以前的VC中也有类似的文件。R相当于resourse。
assets/
放入project所需的内容,例如图片。
res/
我们在res/中加入某些资源,例如一个图标,会在gen/下的R.java中生成一个ID,而assets下的资源将不会,需要通过路径来进行访问。res/drawable/中用于存放image,对于图标,提供h,m,l三个分辨率,以适用不同分辨率的设备。
在res/layout/下的xml文件,用于管理我们的UI,对于一个复杂的UI,如果需要改动一点,有时都不知从何开始,因此Andriod提供了Andriod XML文件。在Andriod的plugin自动生成了main.xml,我实验了一下,修改无效,只是提供信息,这是因为我们在程序用对相关组件进行了code,在本例子中如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
</LinearLayout>
xml是树状接口,首先描述Layout,然后在Layout中描述各个View和Layout,也就是layout可以嵌套。,只要是View的继承类即可,包括自己定义的。如上所示的就是我们这个例子的一个View的描述。
andriod:这是XML中的定义,说明使用xmlns:andriod作为其namespace。andriod:layout_width 由于例子中只有唯一的元素,可以占用全屏,使用fill_paren。
如果我们希望可直接通过修改XML来进行布局,而不是通过在源代码中进行code。
1) 在main.xml中的TextView中修订为:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/textview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
保存后,我们查看R.java文件,增加了textview的ID。为了和原来的区别,我们修改text内容,在res/values/strings.xml中,修改:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, I/'m your friend!</string>
<string name="app_name">Hello,Andriod</string>
</resources>
让这些内容有效,修改HelloAndriod.java的内容,如下:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); //原来是传递一个View对象,现在是传递R.layout.main,R的定义见R.java,而R.layout.main就是对应res/layuot/main.xml。
}
我们在main.xml中增加以下的属性
android:layout_weight="2"
android:textSize="25pt"
android:gravity="center_horizontal"
android:background="#999999"
android:textColor="#aa5533"
其中gravity有以下的选项:top,bottom,left,right,center_vertical,center_horizontal,center,fill_vertical,fill_horizontal,fill,执行如图。
libs/
如果需要使用第三方的JAR,这放置在此。在这个例子中没有。
AndridoManifest.xml
Mandifest这个名字很熟悉,是我们将java程序压缩为jar包,并生成可执行文件的时候需要使用的一个文件。在这里描述应用的内容,有点向linux rpm中的*.spec文件。表明应用的名称,版本,图标位置,最低版本要求等等。在Eclipse中点击后,可以有图形话界面解释。这是文件的部分内容:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.wei.learning.helloandriod"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="7" /><application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".HelloAndriod"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity></application>
在这里icon为:@drawable/icon,就是在res/drawable/中名字为icon的image。而@string/app_name,表示在res/values/strings.xml中的定义名字为app_name的字符串,在这个例子中文"Hello,Andriod"。activity这里表明的activity的执行目标的类名称。
如果我们需要给我们的应用设定用户的许可,例如允许使用GPS,可以加上<uses-permission android:name="android.permission.ACCESS_GPS /">
每一个Activity都需要在Andriodmanifest.xml文件进行注册。一个映用有多个Activity,里面的类名".HelloAndriod",注意是有一个".",它和package结合起来就是一个完整的类命。而后面<intent-filter>...</intent-filter>中有android.intent.action.MAIN,表明这是应用启动时需要启动的Activity。
转载于:https://www.cnblogs.com/Tammie/archive/2012/06/13/2547723.html
Android学习笔记(三):Andriod程序框架相关推荐
- Android学习笔记三
大神博客(必看)http://blog.csdn.net/huachao1001/article/list/1 1.Android校招笔记 http://huachao1001.github.io/i ...
- 微信小程序学习笔记( 小程序框架 )
必看 这个只是我的学习过程算是日记形式吧,过程是按微信的官方文档的循序来,从 指南中的小程序框架 开始,指南中这一节之前还有页面配置,目录结构,还有很多介绍,没有写但是是非常重要的,一定要看,像指南后 ...
- Android 学习笔记之Volley开源框架解析(一)
PS:看完了LGD的六场比赛...让人心酸... 学习内容: 1.Http请求的过程... 2.Volley的简单介绍... 1.Http请求... 这里只是简单的说一下Http请求的过程.. ...
- Android学习笔记(三)
ContentProvider简单介绍 ContentProvider是不同应用程序之间进行数据交换的标准API,当一个应用程序须要把自己的数据暴露给其它程序使用时.该应用程序便可通过提供Conten ...
- ANDROID 学习笔记(三) UI THREAD AsyncTask 使用
为什么80%的码农都做不了架构师?>>> 一般获取验证码,用户登录验证,上传头像,获取消息,发消息,评论 都可以使用 1.先上官网实例代码 private class Down ...
- Android学习笔记(三):android画图之paint
2019独角兽企业重金招聘Python工程师标准>>> * Paint类介绍 * * Paint即画笔,在绘图过程中起到了极其重要的作用,画笔主要保存了 ...
- Spring框架学习笔记(三)(AOP,事务管理)
Spring框架学习笔记(三) 九.AOP 9.1 AOP的注解配置 (1) 新建计算器核心功能(模拟:不能在改动核心代码) (2) 建立一个普通的Java类写增强代码(面向切面编程),使用Sprin ...
- Android学习笔记:Android基础知识点(不断更新中)
1.Android学习笔记:OkHttp 2.Android学习笔记:更新UI的方法(UI线程和非UI线程) 3.Android学习笔记:Volley 4.Android学习笔记:Handler 5. ...
- Android学习笔记 75. 单元测试
Android学习笔记 Android 开发者基础知识 (Java) -- Google Developers 培训团队 文章目录 Android学习笔记 Android 开发者基础知识 (Java) ...
- Android学习笔记第五篇--网络连接与云服务(一)
Android学习笔记第五篇–网络连接与云服务 第一章.无线连接设备 除了能够在云端通讯,Android的无线API也允许在同一局域网内的设备通讯,**甚至没有连接网络,而是物理具体相近,也可以相 ...
最新文章
- 巧用Eclipse中用户自定义包(User Libraries)
- Linux永久挂载新的硬盘
- 【06】sass编译工具(弃)
- jQuery 库 - 特性
- 修改linux最大连接数
- SAP BOPF和Spring框架里加了注解的控制器是如何被调用的
- 微信重大更新,电脑上也可刷朋友圈了!
- 听说,阿里“拆中台”了?
- html网页设计插入音乐,背景音乐是如何插入的?-网页设计,HTML/CSS
- 学计算机之路写一篇作文,写我的学艺之路作文
- 44 年前的今天,改变世界的 TA 诞生了!
- 华为机试HJ80:整型数组合并
- 与IDE相关的Attribute属性(C#)
- UE4编辑器ToolBar扩展
- 优秀数智生态伙伴|上海用诚软件廖晓军:以人才迭代推动云转型,实现专业化发展...
- 【小万出生记——第3篇】小万升级为家用服务机器人
- 【软件工程】决策表和决策树
- 基于jsp,javaweb、ssm教务管理系统
- Android 实现左右声道播放不同音乐
- python系统命令切换目录_windows cmd 指令 怎么切换目录
热门文章
- go语言csv包_玩转数据处理120题R语言版本
- java虚拟机规范这本书怎么样_JVM规范系列开篇:为什么要读JVM规范?
- 消息中间件:为什么我们选择 RocketMQ
- 参与 Apache 顶级开源项目的 N 种方式,Apache Dubbo Samples SIG 成立!
- 从零开始入门 K8s | 手把手带你理解 etcd
- ttl传输中过期的原因_Redis流行的原因
- centos mate桌面_CentOS 7安装桌面汇总
- linux 动态解析,Linux 动态函式库解析[转]Linux -电脑资料
- php双写绕过,高并发下缓存与数据库双写不一致解决方案
- C++新增头文件.h,静态库.lib