Activity是用户可以看得到的界面,在第一个Android项目初学者之Android HelloWorld项目中,我们使用ADT自动生成的活动,本篇我们介绍手动生成活动。
1、手动创建Activity
(1)新建项目
新建项目TestActivity,过程与第一个项目一样,只是在下图步骤中,不要选择 Create Activity,如下:
直接点击finish结束。
(2)新建活动类MyActivity
在src目录下,新建package:com.yy.testActivity,在该包下,新建类MyActivity,使之继承Activity(因为Activity是所有活动的基类)。同时重写onCreate方法,如下:
package com.yy.testactivity;
import android.app.Activity;
import android.os.Bundle;
/**
* 手动创建活动
* @author yy
*
*/
public class MyActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
(3)新建布局文件
为了能够看到activity界面,我们需要创建一个布局文件,在文章Android 开发目录结构中,介绍了资源文件放在res下,并且不同的资源放在不同的文件夹下,布局文件放在layout目录下,因此在该目录下,新建 Android XML Flle:activity_my.xml,如下:
点击Finish,看到如下配置内容:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
</LinearLayout>
activity_my.xml有两种视图:用户界面视图、代码视图,我们可以在该布局文件中,添加一个按钮:可以在用户界面中拖拽一个Button,生成代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="myButton" />
</LinearLayout>
其中android:id 表示定义按钮的id标识,layout_width标识宽度,match_parent表示与父元素同等宽度,layout_height表示高度,wrap_content表示能够包含里面的内容即可。text是显示内容。
(4)加载自定义布局
当定义完布局文件后,需要在活动中进行加载,否则在模拟器中是看不到的,加载很简单,在onCreate方法中添加如下代码:
package com.yy.testactivity;
import android.app.Activity;
import android.os.Bundle;
/**
* 手动创建活动
* @author yy
*
*/
public class MyActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//加载自定义布局文件:R是com.example.testactivity.R
setContentView(R.layout.activity_my);
}
}
(5)注册活动
所有的活动需要在AndroidManifest.xml中进行注册才能生效,如下:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.yy.testactivity"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<!-- register activity -->
<activity
android:name=".MyActivity"
android:label="This is MyAcitivity Label" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
其中在manifest标签中定义了package:com.yy.testactivity。活动的注册是在application中,使用activity标签。其中android:name指定具体活动,这里直接是.MyAcitity或者com.yy.testactivity.MyActivity。android:lable指定活动中标题栏的内容。
(6)效果展示
2、隐藏标题栏
在上图的展示中,看到标题栏占据了屏幕的一部分,可以选择隐藏,修改代码如下:
打开活动类MyActivy,在onCreate方法中作如下修改:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//隐藏标题栏
requestWindowFeature(Window.FEATURE_NO_TITLE);
//加载自定义布局文件:R是com.example.testactivity.R
setContentView(R.layout.activity_my);
}
再次查看效果,如下:
3、Toast的使用
在活动中可以使用Toast将一些信息通知给用户,这些信息显示时间短。我们可以为布局文件中的Button添加点击事件,当点击时,给用户提示响应信息。在活动类MyActivity.java中,依次进行如下修改操作:
(1)获取Button
获取Button View对象,我们通过findViewById方法。
//获取View--Button
Button button1 = (Button) findViewById(R.id.button1);
(2)添加点击事件
当获取Button对象后,我们可以为其添加点击事件,使用Listener对点击事件进行监听。
//监听点击事件
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
//使用Toast提示用户信息
Toast.makeText(getApplicationContext(), "你点击了我,请一笑而过!", Toast.LENGTH_SHORT)
.show();
}
});
Toast的makeText方法有三个参数:第一个是上下文、第二个为提示的信息、第三个为显示事件长短(LENGTH_SHORT、LENGTH_LONG)。
(3)效果展示
上述操作完毕后,完整代码如下:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//隐藏标题栏
requestWindowFeature(Window.FEATURE_NO_TITLE);
//加载自定义布局文件:R是com.example.testactivity.R
setContentView(R.layout.activity_my);
//获取View--Button
Button button1 = (Button) findViewById(R.id.button1);
//监听点击事件
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
//使用Toast提示用户信息
Toast.makeText(getApplicationContext(), "你点击了我,请一笑而过!", Toast.LENGTH_SHORT)
.show();
}
});
}
4、活动中使用Menu
(1)新建menu文件
在res目录下,新建menu文件夹,然后在menu目录下,新建Android XML File:menu_my.xml,如下图:
在menu_my.xml中,添加如下代码:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/add_item"
android:title="Add">
</item>
<item
android:id="@+id/modify_item"
android:title="Modify">
</item>
<item
android:id="@+id/delete_item"
android:title="Delete">
</item>
<item
android:id="@+id/search_item"
android:title="Search">
</item>
</menu>
即增加了四个item:Add、Modify、Delete、Search。
(2)重写onCreateOptionsMenu方法
打开MyActivity.java活动类,重写方法onCreateOptionsMenu方法,如下:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//添加自定义菜单
getMenuInflater().inflate(R.menu.menu_my, menu);
return super.onCreateOptionsMenu(menu);
}
其中inflate方法有两个参数:第一个要加载的菜单文件、第二个表示第一个参数的菜单要加载到哪个menu当中去。
(3)查看效果
重新发布,在模拟器中,我们点击MENU按钮,会看到如下界面:
(4)添加菜单响应事件
打开活动类MyActivity.java,重写菜单的选择方法,如下:
/**
* 添加菜单响应事件
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
//获取菜单id
int itemId = item.getItemId();
switch(itemId){
case R.id.add_item:
Toast.makeText(getApplicationContext(), "你点击了 Add Item", Toast.LENGTH_SHORT)
.show();
break;
case R.id.modify_item:
Toast.makeText(getApplicationContext(), "你点击了 Modify Item", Toast.LENGTH_SHORT)
.show();
break;
case R.id.delete_item:
Toast.makeText(getApplicationContext(), "你点击了 Delete Item", Toast.LENGTH_SHORT)
.show();
break;
case R.id.search_item:
Toast.makeText(getApplicationContext(), "你点击了 Search Item", Toast.LENGTH_SHORT)
.show();
break;
default:
}
return super.onOptionsItemSelected(item);
}
(5)查看效果
5、销毁一个活动
如何销毁当前活动,Activity类提供了一个方法:finish( ),我们继续修改上述代码,当点击按钮Button时,销毁当前活动,如下:
(1)修改onCreate方法
//监听点击事件
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
//使用Toast提示用户信息
/*Toast.makeText(getApplicationContext(), "你点击了我,请一笑而过!", Toast.LENGTH_SHORT)
.show();*/
//销毁当前活动
finish();
}
});
(2)查看效果
当点击按钮后,当前应用程序会退场,表示当前活动已销毁。
总结:本文介绍了活动Activity的手动创建、自定义布局以及在活动中的加载、活动的注册、标题栏的显示与隐藏、
Toast的使用、活动中使用Menu以及活动的销毁等内容。