`

Android学习笔记(1)-永远不变的Hello World

阅读更多
Google的Android SDK发布也有一段时间了,一直想研究一下却苦于找不到时间。利用这个周未,开始强迫自己再次进入学习状态,原因很简单:我看好开放的gPhone。
SDK的下载与安装并不复杂,网上也有不少同学已经进入状态了,我就不再重复了吧。
今天主要讨论的,还是永远不变的话题:Hello World.
1.最简单的HelloWorld
安装了SDK后,直接生成一个Android Project,一句代码不用写,就能跑出一个最简单的HelloWorld例程。我们看一下它的代码:
< xmlnamespace prefix ="v" />public void onCreate(Bundle icicle) {
<        super.onCreate(icicle);
<        setTheme(android.R.style.Theme_Dark);
<        setContentView(R.layout.main);   
<}
看上去实在很简单,只有两句话而已。关键在这个R.layout.main上,凭直觉,这应该是定义的资源。的确,在R.java中只是定义了一个static int 而已,真正的资源描述在res/layout/main.xml文件里(注意:这里的R.java不要手工编辑,每次build project时它都会根据res下的资源描述被自动修改)。
<<?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 id="@+id/txt" 
<    android:layout_width="fill_parent"
<    android:layout_height="wrap_content"
<    android:text="Hello World"
<    />
<</LinearLayout>
这个文件很好读,一个描述了这是一个线性排列的布局,android:orientation=vertical表示所有组件将纵向排布。而经典的Hello World是用一个TextView来展示的。
由此,我们知道,Android的程序从一个Activity派生出来,并且从它的onCreate开始启动;Android里要显示的组件用XML文件描述而不用在代码中硬编码(这是一个好的习惯,我们应该从一开始就坚持下去);
2.让Button来说Hello World
上面的例子是ADT自动生成的代码,似乎与我们一点关系也没有。那我们来改一下代码,因为在windows平台上的Helloworld经常是由一个按钮触发的,所以,我们想第二个Helloworld应该是这样的:加一个按钮和文本输入框,单击按钮后在原来的TextView后面加上输入框中输入的文字。
第一步是,增加一个Button和一个EditText,与TextView一样,它们也在main.xml里描述一下:
< <EditText id="@+id/edt" 
<    android:layout_width="fill_parent"
<    android:layout_height="wrap_content"
<    android:text=""
<    />  
<<Button id="@+id/go"
<        android:layout_width="wrap_content" android:layout_height="wrap_content"
<        android:text="@string/go">
<        <requestFocus />
<    </Button>
这里有两个地方要注意:id=@+id/go,这表示需要一个唯一的UID来作为Button的ID,它的引用名是go。还有一个是android:text=@string/go表示这个按钮的文本不是直接写有main.xml里了,而是来源于另一个资源描述文件strings.xml里,本例中的strings.xml如下:
<<?xml version="1.0" encoding="utf-8"?>
<<resources>
<    <string name="app_name">helloTwo</string>
<    <string name="tit_dialog">提示</string>
<    <string name="msg_dialog">你好,中国</string>
<    <string name="ok_dialog">确定</string>
<    <string name="go">浏览</string>
<</resources>
然后,在代码里(onCreate函数中)我们加上以下代码(简单起见,用了嵌套类):
<Button btn = (Button)findViewById(R.id.go);
<        btn.setOnClickListener(new View.OnClickListener()
<        {
<            public void onClick(View v)
            {
<                EditText edt=(EditText)helloTwo.this.findViewById(R.id.edt);
<                TextView txt= (TextView)helloTwo.this.findViewById(R.id.txt);
<                txt.setText(getString(R.string.msg_dialog)+edt.getText());   
<            }
<        });
为铵钮增加一个onClick事件处理器,在点击事件中,设置txt的文本为R.string.msg_dialgo+edt.getText()。
这里的关键是两个函数的使用: findViewById(R.id.go)可以根据资源的名称加载View类型的资源,同样用函数getString(R.string.msg_dialog)可以加载字符串资源。
编译,run一下看看效果。
3. 再让菜单Say Hello
从API文档中我们看到Activity中有两个函数:onCreateOptionsMenu和onOptionsItemSelected,显示,这个OptionsMenu就是所谓的上下文菜单(在GPhone的模拟器上,有个键专用于弹出这个菜单)。下面我们就为这个HelloWorld例子加上一个菜单,并且让它可以Say hello。
这次,我们不涉及到资源的描述文件了,而是直接使用这两个函数来实现,其实代码也很简单,所以,我们再增加一个退出应用的功能(否则每次都是按取消键退出应用显示太不专业了)。
代码如下:
<  public boolean onCreateOptionsMenu(Menu menu)
<    {
<        super.onCreateOptionsMenu(menu);
<        menu.add(0,1,"say hello");
<        menu.add(0,2,"exit");
<        return true;
<    }
<    public boolean onOptionsItemSelected(Item item)
    {
<        super.onOptionsItemSelected(item);
<       
<        int id = item.getId();
        switch(id){
<        case 1:
<            AlertDialog.show(this,getString(R.string.app_name),
<                           getString(R.string.msg_dialog), getString(R.string.ok_dialog), true);
<            break;
<        case 2:
<            finish();
<            break;
<        }
在CreateOptionsMenu时,我们简单地增加两个菜单项,menu.add(组ID,项ID,显示文本),(注意:这里我直接将文字写在代码里,这并不提倡)。然后,在OptionsItemSelected事件中,我们根据选中的菜单项做相应处理,如果选中1,则弹出一个对话框显示资源文件中的“你好,中国”,如果选中2则退出应用。
AlertDialog.show是一个静态方法,类似于我们在WIN平台上经常使用的MessageBox一样,很方便的。
分享到:
评论

相关推荐

    android入门学习笔记-永远不变的helloworld、初识activity

    ### Android入门学习笔记知识点解析 #### 一、HelloWorld与Android SDK - **HelloWorld的重要性**:在软件开发领域,HelloWorld程序被视为一种仪式性的入门程序,用来验证环境配置是否正确,同时也帮助开发者熟悉...

    Android 学习笔记(1)--永远不变的Hello World

    【Android 学习笔记(1)--永远不变的Hello World】 Android 开发是移动应用开发领域的重要组成部分,尤其对于新手而言,"Hello, World!" 是入门的起点。在这个学习笔记中,我们将探讨如何创建第一个简单的 Android...

    spring-boot-01-helloworld.zip

    Spring Boot学习笔记-------(二)spring boot入门,配套例子代码,博客地址:https://blog.csdn.net/huaya1127/article/details/104130300

    云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-基于ssm的云的学习笔记系统-ssm-java代码

    云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-云的学习笔记管理系统java代码-云的学习笔记系统设计与实现-基于ssm的云的学习笔记系统-基于Web的云的学习笔记系统设计与实现-云的学习...

    学习笔记HTML-css-JS.zip

    学习笔记HTML-css-JS.zip学习笔记HTML-css-JS.zip学习笔记HTML-css-JS.zip 学习笔记HTML-css-JS.zip学习笔记HTML-css-JS.zip学习笔记HTML-css-JS.zip 学习笔记HTML-css-JS.zip学习笔记HTML-css-JS.zip学习笔记...

    Android学习笔记--Binder

    【Android学习笔记--Binder】 Binder是Android系统中的核心组件,它是Android系统实现进程间通信(IPC,Inter-Process Communication)的主要方式。Binder机制允许不同进程的组件之间进行数据交换和功能调用,就像...

    Griffon学习笔记1 - HelloWorld

    "Griffon学习笔记1 - HelloWorld"这篇博文可能是博主在介绍如何使用Griffon框架创建一个简单的"Hello, World!"应用程序,这通常是学习新开发工具的第一步。 1. **Griffon框架**:Griffon是由Pivotal Software开发的...

    云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-基于Web的云的学习笔记系统设计与实现-java代码

    云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-云的学习笔记管理系统java代码-云的学习笔记系统设计与实现-基于ssm的云的学习笔记系统-基于Web的云的学习笔记系统设计与实现-云的学习...

    Android学习笔记--Gson笔记

    这篇“Android学习笔记--Gson笔记”将深入探讨如何利用Gson来处理JSON数据,提升Android应用的数据解析效率。 一、Gson简介 Gson库能够将Java对象转换成对应的JSON字符串,反之亦然,这使得在Android应用中存储、...

    新版Android开发教程&笔记--基础入门

    新版Android开发教程&笔记--基础入门一 新版Android开发教程&笔记--基础入门二 新版Android开发教程&笔记三--环境搭建与解析 新版Android开发教程&笔记四--Dalvik ADB 新版Android开发教程+笔记五--模拟器、应用1、2...

    struts2学习笔记1-HelloWorld项目

    本篇学习笔记将引导我们从零开始,通过一个简单的"HelloWorld"项目,了解Struts2的基础知识。 首先,我们需要在本地环境中搭建Struts2的开发环境。这包括安装JDK、配置Java环境变量、下载Apache Struts2的最新版本...

    Android学习笔记

    Android学习笔记(1)-永远不变的Hello World Android学习笔记(2)-初识Activity Android学习笔记(3)-Activity的生命周期 Android学习笔记(4)-学习Intent的使用,

    (1)--HelloWorld

    ### Cocos2d-x初探学习笔记:HelloWorld详解 #### Cocos2d-x简介 Cocos2d-x是一款基于C++的开源游戏开发框架,它最初是从Cocos2d移植而来,支持跨平台的游戏开发,包括iOS、Android、Windows等多平台。Cocos2d-x因...

Global site tag (gtag.js) - Google Analytics