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


相关文章
|
6月前
|
设计模式 算法 前端开发
Android面经分享,失业两个月,五一节前拿到Offer,设计思想与代码质量优化+程序性能优化+开发效率优化
Android面经分享,失业两个月,五一节前拿到Offer,设计思想与代码质量优化+程序性能优化+开发效率优化
|
6月前
|
Linux Android开发
测试程序之提供ioctl函数应用操作GPIO适用于Linux/Android
测试程序之提供ioctl函数应用操作GPIO适用于Linux/Android
101 0
|
存储 传感器 定位技术
《移动互联网技术》 第四章 移动应用开发: Android Studio开发环境的使用方法:建立工程,编写源程序,编译链接,安装模拟器,通过模拟器运行和调试程序
《移动互联网技术》 第四章 移动应用开发: Android Studio开发环境的使用方法:建立工程,编写源程序,编译链接,安装模拟器,通过模拟器运行和调试程序
180 0
|
Java Android开发 开发者
1024程序节|Android框架之一 BRVAH【BaseRecyclerViewAdapterHelper】使用demo
BRVAH是一个强大的RecyclerAdapter框架(什么是RecyclerView?),它能节约开发者大量的开发时间,集成了大部分列表常用需求解决方案。为什么会有它?请查看「Android开源框架BRVAH由来篇」该框架于2016年4月10号发布的第1个版本到现在已经一年多了,经历了800多次代码提交,140多次版本打包,修复了1000多个问题,获得了9000多star,非常感谢大家的使用以及反馈。
239 0
|
2月前
|
存储 Java Android开发
探索安卓应用开发:构建你的第一个"Hello World"应用
【9月更文挑战第24天】在本文中,我们将踏上一段激动人心的旅程,深入安卓应用开发的奥秘。通过一个简单而经典的“Hello World”项目,我们将解锁安卓应用开发的基础概念和步骤。无论你是编程新手还是希望扩展技能的老手,这篇文章都将为你提供一次实操体验。从搭建开发环境到运行你的应用,每一步都清晰易懂,确保你能顺利地迈出安卓开发的第一步。让我们开始吧,探索如何将一行简单的代码转变为一个功能齐全的安卓应用!
|
5月前
|
安全 Java Android开发
05. 【Android教程】Android 程序签名打包
05. 【Android教程】Android 程序签名打包
58 1
|
2月前
|
IDE Java 程序员
安卓应用开发入门:打造你的第一个“Hello World”
【9月更文挑战第11天】在编程的世界里,每一个初学者的旅程都从一个简单的“Hello World”开始。本文将带领安卓开发的新手们,通过简单直观的方式,一步步构建出自己的第一个安卓应用。我们将探索安卓工作室(Android Studio)的安装、项目的创建,以及如何运行和调试你的应用。无论你是编程新手还是想扩展技能的老手,这篇文章都将为你打开一扇通往安卓世界的大门。
141 7
|
2月前
|
IDE Java API
安卓应用开发入门:打造你的第一个"Hello World"
【9月更文挑战第11天】在探索安卓开发的海洋中,每个开发者的航行都从简单的"Hello World"开始。本文将作为你的航标,引导你驶向安卓应用开发的精彩世界。我们将一起启航,通过浅显易懂的语言和步骤,学习如何构建并运行你的第一个安卓应用。无论你是编程新手还是希望扩展技能的老手,这篇文章都将为你提供所需的知识和信心。准备好了吗?让我们揭开安卓开发的神秘面纱,一起创造些令人兴奋的东西吧!
|
3月前
|
XML IDE Java
安卓应用开发入门:打造你的第一个“Hello World”
【8月更文挑战第31天】 在安卓的浩瀚宇宙中,每一个新星都从一句简单的问候开始闪耀。本文将作为你的航标,引导你探索安卓开发的银河系。无论你是初心者还是资深开发者,构建第一个“Hello World”应用总是令人兴奋的里程碑。通过这篇文章,我们将一起搭建起通往安卓开发世界的桥梁。让我们摒弃复杂的术语,用最简单直白的语言,一步步地走过这段旅程。准备好了吗?让我们一起开启这段冒险吧!
|
4月前
|
Oracle Java 关系型数据库
Android studio 安装以及第一个程序
Android studio 安装以及第一个程序
113 0