Android学习笔记(1)-Hello world

 

1.最简单的HelloWorld

安装了SDK后,直接生成一个Android Project,一句代码不用写,就能跑出一个最简单的HelloWorld例程。我们看一下它的代码:

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来作为ButtonID,它的引用名是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中有两个函数:onCreateOptionsMenuonOptionsItemSelected,显示,这个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一样,很方便的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值