4337
- 收藏
- 点赞
- 分享
- 举报
Android学习笔记(1)-永远不变的Hello World
Android学习笔记(1)-永远不变的Hello World
Google的Android SDK发布也有一段时间了,一直想研究一下却苦于找不到时间。利用这个周未,开始强迫自己再次进入学习状态,原因很简单:我看好开放的gPhone。
SDK的下载与安装并不复杂,网上也有不少同学已经进入状态了,我就不再重复了吧。
今天主要讨论的,还是永远不变的话题: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下的资源描述被自动修改)。
androidrientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello World"
/>
这个文件很好读,一个描述了这是一个线性排列的布局,androidrientation=vertical表示所有组件将纵向排布。而经典的Hello World是用一个TextView来展示的。
由此,我们知道,Android的程序从一个Activity派生出来,并且从它的onCreate开始启动;Android里要显示的组件用XML文件描述而不用在代码中硬编码(这是一个好的习惯,我们应该从一开始就坚持下去);
2.让Button来说Hello World
上面的例子是ADT自动生成的代码,似乎与我们一点关系也没有。那我们来改一下代码,因为在windows平台上的Helloworld经常是由一个按钮触发的,所以,我们想第二个Helloworld应该是这样的:加一个按钮和文本输入框,单击按钮后在原来的TextView后面加上输入框中输入的文字。
第一步是,增加一个Button和一个EditText,与TextView一样,它们也在main.xml里描述一下:
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=""
/>
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="@string/go">
这里有两个地方要注意:id=@+id/go,这表示需要一个唯一的UID来作为Button的ID,它的引用名是go。还有一个是android:text=@string/go表示这个按钮的文本不是直接写有main.xml里了,而是来源于另一个资源描述文件strings.xml里,本例中的strings.xml如下:
helloTwo
提示
你好,中国
确定
浏览
然后,在代码里(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一样,很方便的。
好了,今天是第一天,先学到这里吧,下回我觉得我有必要仔细研究一个Activity的API了
ps:出处不详.
Google的Android SDK发布也有一段时间了,一直想研究一下却苦于找不到时间。利用这个周未,开始强迫自己再次进入学习状态,原因很简单:我看好开放的gPhone。
SDK的下载与安装并不复杂,网上也有不少同学已经进入状态了,我就不再重复了吧。
今天主要讨论的,还是永远不变的话题: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下的资源描述被自动修改)。
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
android:layout_height="wrap_content"
android:text="Hello World"
/>
这个文件很好读,一个
由此,我们知道,Android的程序从一个Activity派生出来,并且从它的onCreate开始启动;Android里要显示的组件用XML文件描述而不用在代码中硬编码(这是一个好的习惯,我们应该从一开始就坚持下去);
2.让Button来说Hello World
上面的例子是ADT自动生成的代码,似乎与我们一点关系也没有。那我们来改一下代码,因为在windows平台上的Helloworld经常是由一个按钮触发的,所以,我们想第二个Helloworld应该是这样的:加一个按钮和文本输入框,单击按钮后在原来的TextView后面加上输入框中输入的文字。
第一步是,增加一个Button和一个EditText,与TextView一样,它们也在main.xml里描述一下:
android:layout_height="wrap_content"
android:text=""
/>
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="@string/go">
这里有两个地方要注意:id=@+id/go,这表示需要一个唯一的UID来作为Button的ID,它的引用名是go。还有一个是android:text=@string/go表示这个按钮的文本不是直接写有main.xml里了,而是来源于另一个资源描述文件strings.xml里,本例中的strings.xml如下:
然后,在代码里(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一样,很方便的。
好了,今天是第一天,先学到这里吧,下回我觉得我有必要仔细研究一个Activity的API了
ps:出处不详.
我来回答
回答3个
时间排序
认可量排序
认可0
认可0
认可0
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币
Markdown 语法
- 加粗**内容**
- 斜体*内容*
- 删除线~~内容~~
- 引用> 引用内容
- 代码`代码`
- 代码块```编程语言↵代码```
- 链接[链接标题](url)
- 无序列表- 内容
- 有序列表1. 内容
- 缩进内容
- 图片![alt](url)
相关问答
-
2017-05-24 18:05:12
-
2017-11-23 11:30:47
-
2015-11-12 01:21:55
-
2012-11-27 20:39:59
-
2008-08-01 18:52:43
-
2012-11-27 20:03:33
-
2014-12-08 08:44:14
-
2012-11-27 20:07:15
-
2012-11-27 20:41:12
-
2020-12-07 11:41:37
-
2013-08-29 15:08:54
-
02018-12-19 16:17:42
-
2018-12-07 17:44:57
-
02008-11-12 19:40:51
-
2013-08-28 13:57:20
-
222019-08-20 16:57:22
-
2015-07-10 11:01:46
-
2013-08-25 11:17:43
-
2013-08-25 11:11:11
无更多相似问答 去提问
点击登录
-- 积分
-- E币
提问
—
收益
—
被采纳
—
我要提问
切换马甲
上一页
下一页
悬赏问答
-
5Hi3516CV610 如何使用SD卡升级固件
-
5cat /dev/logmpp 报错 <3>[ vi] [func]:vi_send_frame_node [line]:99 [info]:vi pic queue is full!
-
50如何获取vpss chn的图像修改后发送至vo
-
5FPGA通过Bt1120传YUV422数据过来,vi接收不到数据——3516dv500
-
50SS928 运行PQtools 拼接 推到设备里有一半画面会异常
-
53536AV100的sample_vdec输出到CVBS显示
-
10海思板子mpp怎么在vi阶段改变视频数据尺寸
-
10HI3559AV100 多摄像头同步模式
-
9海思ss928单路摄像头vio中加入opencv处理并显示
-
10EB-RV1126-BC-191板子运行自己编码的程序
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
提醒
你的问题还没有最佳答案,是否结题,结题后将扣除20%的悬赏金
取消
确认
提醒
你的问题还没有最佳答案,是否结题,结题后将根据回答情况扣除相应悬赏金(1回答=1E币)
取消
确认