android helloworld程序

简介:

1、单击菜单 File > New > Project 弹出的窗口选择创建一个新的 Android 项目。

在安装好的Eclipse插件的新建项目,如图所示:

 

 

2、并在创建 Android 项目的对话框里填写项目的详细信息,确认无误后按下 finish 按钮一个工程就被顺利的创建成功了。

项目结构图示 :

 

 

简单介绍一下几个比较重要的目录。
(1)src 目录用于存放代码。
(2)gen 目录用于存放对应该资源文件的代码。
(3)res 目录用于存放资源文件。
(4)res\layout 目录用于存放布局描述文件。
(5)res\values 目录用于存放常量定义文件。

 

src里cn.wangmeng.test下有一个helloworld,他的名字就来自于我们新建项目的时候填写的Acivity name, 这个HelloWorld就继承自Activity(Android Framework里面最重要的一个类,详细信息可以参考 -> (Activity ), 我们简单地理解为它是一个UI的容器,直接跟用户打交道最前端的类。 还有一个R.java,这个类是系统根据res文件夹中的内容自动为你生成的,我们先讲一下res文件夹,res是resources的缩写,顾名思义,你程序中所需要的文字,图片,布局文件等等资源都是放在这个文件夹下面的,你现在看到这个文件夹下面有 
drawable - 这个是放图片的 
layout - 这个是放布局文件的 
values - 下面放字符串(strings.xml ) 最后是AndroidManifest.xml. 你每次添加一个Acivity都需要在这个文件中描述一下,整个项目的结构都由这个文件控制。 布局是由XML控制的,内容如下:

  • <?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"
  • />
  • <Button android:id="@+id/button"
  • android:text="@string/click_me"
  • android:layout_width="wrap_content"
  • android:layout_height="wrap_content">
  • </Button>
  • </LinearLayout> 所有的android程序都是用XML布局的,而且布局分为很多种,布局中有两个元素,一个是文本显示框,一个是按钮,一般LinearLayout,还有相对布局,这是官方提供的布局图:

 

 

 

strings.xml是存放我们常用的常量,在JAVA里面用Resources.getText()获取,在UI里android:text="@string/click_me"获取,演示内容如下:

  • <?xml version="1.0" encoding="utf-8"?>
  • <resources>
  • <string name="hello">Hello World, helloworld!</string>
  • <string name="app_name">helloworld</string>
  • <string name="click_me">click_me</string>
  • </resources> 我们在按钮添加了一个简单的响应事件,代码如下:
  • package cn.wangmeng.test;
  • import android.app.Activity;
  • import android.app.AlertDialog;
  • import android.os.Bundle;
  • import android.view.View;
  • import android.view.View.OnClickListener;
  • import android.widget.Button;
  • public class helloworld extends Activity {
  • /** Called when the activity is first created. */
  • @Override
  • public void onCreate(Bundle savedInstanceState) {
  • super.onCreate(savedInstanceState);
  • setContentView(R.layout.main);
  •  
  • Button button=(Button)findViewById(R.id.button);
  • button.setOnClickListener(new OnClickListener()
  • {
  • public void onClick(View v) {
  • openDialog();
  • }
  • }
  • );
  • }
  • private void openDialog(){
  • AlertDialog.Builder builder = new AlertDialog.Builder(this);
  • builder.setTitle("Hello");
  • builder.setMessage("Hello World \n");
  • builder.setNegativeButton("OK",null);
  • builder.show();
  • }
  • }

    最后运行结果如下:

 

 

Run As Android Application,点击右侧的Home键,进入主界面,点击主界面中间的按钮,出现应用列表,运行Hello, Android应用即可。(请耐心等候运行结果,时间会比较长)

 

 

 

PS:

Android工程结构

src:源代码,我们的代码。

gen:Android开发工具所生成的文件,我们不能编辑这个文件。

R.java,标识程序中使用的各种资源。没有被此文件标识的资源,不会被打包到APK文件中。

assets:应用系统需要使用到的文件,比如mp3、视频...。这些文件会被原样打包到APK中。

res:资源目录,向此目录添加资源时,会被R.java自动记录。

drawabel-?dpi:图标文件(*.png*.jpg)

layout:界面布局文件(main.xml)WEB应用中的HTML类同

values:软件上所需要显示的各种文字。可以存放多个*.xml文件,还可以存放不同类型的数据。比如arrays.xmlcolors.xmldimens.xmlstyles.xml...

AndroidManifest.xml:项目的总配置文件,记录应用中所使用的各种组件。如果应用中使用到手机中的功能,需要在此声明使用权限。

default.properties:记录项目中所需要的环境信息,比如Android的版本等。

AndroidManfest.xml分析

manifest

根节点,描述了package中所有的内容

xmlns:android

包含命名空间的声明。

xmlns:android=http://schemas.

android.com/apk/res/android,使得

Android中各种标准属性能在文件中使用,

提供了大部分元素中的数据

Package

声明应用程序包

application

包含package中application级别组件声

明的根节点。此元素也可包含application

的一些全局和默认的属性,如标签、icon、

主题、必要的权限,等等。一个manifest

能包含零个或一个此元素(不能大余一个)

android:icon

应用程序图标

android:label

应用程序名字

Activity

用来与用户交互的主要工具。Activity是用

户打开一个应用程序的初始页面,大部分

被使用到的其他页面也由不同的activity所

实现,并声明在另外的activity标记中。

注意,每一个activity必须有一个<activity>

标记对应,无论它给外部使用或是只用于

自己的package中。如果一个activity没有

对应的标记,你将不能运行它。另外,

为了支持运行时查找Activity,可包含一个

或多个<intent-filter>元素来描述activity所支持的操作

android:name

应用程序默认启动的activity

intent-filter

声明了指定的一组组件支持的Intent值,从

而形成了IntentFilter。除了能在此元素下指

定不同类型的值,属性也能放在这里来描

述一个操作所需的唯一的标签、icon和其他信息

action

组件支持的Intent action

category

组件支持的Intent Category。这里指定

了应用程序默认启动的activity

uses-sdk

该应用程序所使用的sdk版本相关

 

Android程序运行过程

程序的运行由主配置文件开始AndroidManifest.xml

 

 
  1. <?xml version="1.0" encoding="utf-8"?> 
  2.    
  3. <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
  4.    
  5. package="com.changcheng.android" 
  6.    
  7. android:versionCode="1" 
  8.    
  9. android:versionName="1.0"> 
  10.    
  11. <!--  
  12.    
  13. @drawable/icon:  
  14.    
  15. @代表R.java  
  16.    
  17. drawable是R.java的静态内部类  
  18.    
  19. icon是drawable的常量,指定图片资源的ID。  
  20.    
  21. --> 
  22.    
  23. <application android:icon="@drawable/icon" android:label="@string/app_name"> 
  24.    
  25. <!--  
  26.    
  27. .HelloWorld指向package="com.changcheng.android"下面的HelloWorld类。  
  28.    
  29. 我们可以在此添加子包.sub.xxxClass,但不能添加上级包。  
  30.    
  31. --> 
  32.    
  33. <activity android:name=".HelloWorld" 
  34.    
  35. android:label="@string/app_name"> 
  36.    
  37. <!-- 意图过滤,程序加载由此开始向外。 --> 
  38.    
  39. <intent-filter> 
  40.    
  41. <action android:name="android.intent.action.MAIN" /> 
  42.    
  43. <category android:name="android.intent.category.LAUNCHER" /> 
  44.    
  45. </intent-filter> 
  46.    
  47. </activity> 
  48.    
  49. </application> 
  50.    
  51. <!-- 本程序使用AndoridSDK的最低版本 --> 
  52.    
  53. <uses-sdk android:minSdkVersion="7" /> 
  54.    
  55. </manifest> 

接下来从HelloWorld类开始:

 

 
  1. package com.changcheng.android;  
  2.    
  3.    
  4.    
  5. import android.app.Activity;  
  6.    
  7. import android.os.Bundle;  
  8.    
  9.    
  10.    
  11. /**  
  12.    
  13. * 我们的HelloWorld类,继承自Activity类。  
  14.    
  15. *  
  16.    
  17. */  
  18.    
  19. public class HelloWorld extends Activity  
  20.    
  21. {  
  22.    
  23. /** Called when the activity is first created. */  
  24.    
  25. @Override  
  26.    
  27. public void onCreate(Bundle savedInstanceState) {  
  28.    
  29. // 在此方法中完成界面的绘制  
  30.    
  31. super.onCreate(savedInstanceState);  
  32.    
  33. // 显示R.java文件中的layout静态内部类的main常量。它指向mail.xml  
  34.    
  35. setContentView(R.layout.main);  
  36.    
  37. }  
  38.    
  39. }  

然后再我们再看看mail.xml

 

 
  1. <?xml version="1.0" encoding="utf-8"?> 
  2.    
  3. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  4.    
  5. android:orientation="vertical" 
  6.    
  7. android:layout_width="fill_parent" 
  8.    
  9. android:layout_height="fill_parent" 
  10.    
  11. > 
  12.    
  13. <!--  
  14.    
  15. 文本视图控件  
  16.    
  17. android:layout_width="fill_parent" ,它的父窗口是屏幕,所以宽度为整个屏幕。  
  18.    
  19. android:layout_height="wrap_content" ,它的高度为它所包含的内容高度。如果内容中有一行,就是一行的高度。  
  20.    
  21. android:text="@string/hello",它包含(显示)的文本内容,指向R.java中string静态内部类的常量hello所指向的文本资源ID,文本资源文件是strings.xml。  
  22.    
  23. --> 
  24.    
  25. <TextView 
  26.    
  27. android:layout_width="fill_parent" 
  28.    
  29. android:layout_height="wrap_content" 
  30.    
  31. android:text="@string/hello" 
  32.    
  33. /> 
  34.    
  35. </LinearLayout> 

再看看Strings.xml:

 

 
  1. <?xml version="1.0" encoding="utf-8"?> 
  2.    
  3. <resources> 
  4.    
  5. <string name="hello">HelloWorld,Hello World!</string> 
  6.    
  7. </resources> 

现在让我们看看掌管资源的主文件R.java

 

 
  1. package com.changcheng.android;  
  2.    
  3.    
  4.    
  5. public final class R {  
  6.    
  7. public static final class attr {  
  8.    
  9. }  
  10.    
  11. // 图片资源  
  12.    
  13. public static final class drawable {  
  14.    
  15. public static final int icon=0x7f020000;  
  16.    
  17. }  
  18.    
  19. // 界面布局资源  
  20.    
  21. public static final class layout {  
  22.    
  23. public static final int main=0x7f030000;  
  24.    
  25. }  
  26.    
  27. // 字符串资源  
  28.    
  29. public static final class string {  
  30.    
  31. public static final int app_name=0x7f040001;  
  32.    
  33. public static final int hello=0x7f040000;  
  34.    
  35. }  
  36.    
  37. }  

R.java文件中的所有资源ID全部是自动生成的,我们不可以手动编辑。当我们添加一个图片时,ADT插件,会以图片的名称为常量的名称,然后自动生成对应的资源ID。当我们向strings.xml中添加一个字符串时,ADT插件会以符串的名称为常量的名称,然后自动生成对应的资源ID

 

R.java文件不需要我们手动编辑,我们只需要在需要使用到资源的地方引用这个文件里标识的资源即可!


本文转自linzheng 51CTO博客,原文链接:http://blog.51cto.com/linzheng/1081806


相关文章
|
9月前
|
数据采集 编解码 Ubuntu
Android流媒体开发之路二:NDK C++开发Android端RTMP直播推流程序
Android流媒体开发之路二:NDK C++开发Android端RTMP直播推流程序
218 0
|
6月前
|
存储 传感器 定位技术
《移动互联网技术》 第四章 移动应用开发: Android Studio开发环境的使用方法:建立工程,编写源程序,编译链接,安装模拟器,通过模拟器运行和调试程序
《移动互联网技术》 第四章 移动应用开发: Android Studio开发环境的使用方法:建立工程,编写源程序,编译链接,安装模拟器,通过模拟器运行和调试程序
77 0
|
6月前
|
Java Android开发 开发者
1024程序节|Android框架之一 BRVAH【BaseRecyclerViewAdapterHelper】使用demo
BRVAH是一个强大的RecyclerAdapter框架(什么是RecyclerView?),它能节约开发者大量的开发时间,集成了大部分列表常用需求解决方案。为什么会有它?请查看「Android开源框架BRVAH由来篇」该框架于2016年4月10号发布的第1个版本到现在已经一年多了,经历了800多次代码提交,140多次版本打包,修复了1000多个问题,获得了9000多star,非常感谢大家的使用以及反馈。
147 0
|
XML Java Android开发
Android Studio开发APP启动程序时开屏简单动画效果快速有效解决方案
Android Studio开发APP启动程序时开屏简单动画效果快速有效解决方案
1337 0
Android Studio开发APP启动程序时开屏简单动画效果快速有效解决方案
|
4月前
|
网络协议 Android开发 虚拟化
Android Studio无法运行程序调试程序出现Unable to connect to ADB.Check the Event Log for possible issues.Verify th
Android Studio无法运行程序调试程序出现Unable to connect to ADB.Check the Event Log for possible issues.Verify th
63 0
Android Studio无法运行程序调试程序出现Unable to connect to ADB.Check the Event Log for possible issues.Verify th
|
6月前
|
测试技术 开发工具 数据库
《移动互联网技术》第十一章 Android应用工程案例: 掌握Android系统的需求分析和设计以及 Android项目的程序测试和版本管理方法
《移动互联网技术》第十一章 Android应用工程案例: 掌握Android系统的需求分析和设计以及 Android项目的程序测试和版本管理方法
71 0
|
8月前
|
XML Java Android开发
#4,Android Studio Android程序结构 工程目录介绍 文件作用 运行配置文件AndroidManifest.xml
#4,Android Studio Android程序结构 工程目录介绍 文件作用 运行配置文件AndroidManifest.xml
|
8月前
|
存储 Android开发 开发者
#2,Android新建第一个程序 Hello Android 模拟手机
#2,Android新建第一个程序 Hello Android 模拟手机
|
8月前
|
Android开发
Android JetPack组件之ViewModel状态的保存(程序在后台被系统杀死数据也存活)
Android JetPack组件之ViewModel状态的保存(程序在后台被系统杀死数据也存活)
100 0
|
9月前
|
编解码 Java 程序员
Android入门教程 (二) 第一个App HelloWorld
Android入门教程 (二) 第一个App HelloWorld
301 0