您的位置:首页 > 移动开发 > Android开发

认识 Android 中的 Activity 组件-------活动

2016-03-09 18:57 267 查看
一、开发步骤:

创建活动

创建布局

在活动中注册布局

在AndroidManifest文件中注册活动

注意:在代码中访问资源文件,我们是通过使用R资源类中定义的资源文件类型和资源文件名称来访问的。具体格式为:R.资源文件类型.资源文件名称。

有两个R文件:我们使用本地的R文件,注意不要导入错误。

import com.example.activetest.R; //导入本地的R

Android SDK 还会自动提供一个android 包下的R文件。

二、隐藏标题栏应用

protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE); //隐藏标题栏
setContentView(R.layout.second_layout);
}


requestWindowFeature(Window.FEATURE_NO_TITLE)的意思就是不在活动中显示标题栏,注意这一句代码一定要在setContentView()之前执行,否则将会报错。

三、在活动中使用Toast

Toast是Android系统提供的一种非常好的提醒方式,在程序中可以使用它将一些短小的信息通知给用户,这些信息会在一段时间后自动消失,并且不会占用任何屏幕空间。

Toast.makeText(FirstActivity.this, "You click the button1", Toast.LENGTH_SHORT).show();


通过静态方法makeText()创建出一个Toast对象,然后调用show()将Toast显示出来。

makeText()接收三个参数:

第一个参数Context,也就是Toast要求的上下文。

第二个参数就是Toast显示的文本内容

第三个参数就是Toast显示的时长。Toast.LENGTH_SHORT、Toast.LENGTH_LONG

四、在活动中使用Menu:只有按下Menu键才会显示

<?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
android:id="@+id/remove_item"
android:title="remove"
/>

</menu>


在活动中重写 onCreateOptionsMenu()方法。通过getMenuInflater()方法获得MenuInflater对象,在调用inflate()方法就可以创建当前活动的菜单。

public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
getMenuInflater().inflate(R.menu.main,menu);
return true;
}

public boolean onOptionsItemSelected(MenuItem item){
switch(item.getItemId()){
case R.id.add_item:
Toast.makeText(this, "You clicked Add", Toast.LENGTH_SHORT).show();
break;
case R.id.remove_item:
Toast.makeText(this, "You clicked remove", Toast.LENGTH_SHORT).show();
break;
default:
}
return true;

}


五、销毁一个活动:调用finish()

六、Intent

Intent是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同的组件之间传递数据。Intent一般可以用于启动活动、启动服务、以及发送广播等场景。

1、使用显示Intent

Intent intent=new Intent(FirstActivity.this,SecondActivity.class );
startActivity(intent);


2、使用隐式Intent:指定了一系列更为抽象的action和Category等信息,然后交由系统去分析这个Intent,并帮助我们找出合适的活动去启动。

<activity android:name="com.test.activitytest.SecondActivity">

<intent-filter >
<action android:name="com.test.activitytest.ACTION_START" />
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.MY_CATEGORY"/>
</intent-filter>
</activity>


每个Intent中只能指定一个action,但可以指定多个category。

3、更多隐式Intent的用法

Intent intent=new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));


Intent的action是Intent.ACTION_VIEW,这是Android系统内置动作,其常量值是android.intent.action.VIEW。通过Uri.parse()方法,将一个网址字符串解析成一个Uri对象,再调用Intent的setData()方法将这个Uri对象传递进去。

4、向下一个活动传递数据。

.putExtra()方法:传递数据

.getStringExtra:获得数据

5、返回数据给上一个活动

七、活动的启动模式

1. standard模式

它是活动默认的启动模式,在不进行显示制定的情况下,所有活动都会自动使用这种启动模式。每次通过此模式来启动activity时,android总会为目标activity启动一个新的实例。

2. singleTop模式

它和standard模式有点类似,但是又一点是不同的:此模式下当将要被启动的activity已经位于Task栈顶时,系统不会重新创建目标activity实例,而是复用已有的activity实例。

如果将要被启动的activity没有位于Task栈顶时,此时系统会重新创建目标activity的实例,并将它加载到Task栈顶上。

3. singleTask模式

使用这种加载模式的activity在同一个Task内只有一个实例,当系统采用此singleTask模式启动activity时,可以分为三种情况:

如果将要启动的activity不存在,系统将会创建目标activity实例,并将它加入到Task栈顶。

如果将要启动的activity已经位于Task栈顶,此时与singleTop模式的行为相同。

如果将要启动的activity已经存在,但没有位于Task栈顶,系统将会把位于该activity上面的所有activity移出Task栈,从而使得目标activity转入栈顶。

4. singleInstance模式

此加载模式下,无论从哪个Task中启动目标activity,只会创建一个目标activity实例,并会使用一个全新的Task栈来装载该activity实例。当系统采用singleInstance模式启动activity时,可以分为两种情况:

如果将要启动的activity不存在,系统会先创建一个全新的Task、再创建目标activity的实例,并将它加入新的Task的栈顶。

如果将要启动的activity已经存在,无论它位于哪个应用程序中,无论它位于哪个Task中,系统将会把该activity所在的Task转到前台,从而使用该activity显示出来。

tips:需要指出的是,采用singleInstance模式加载activity总是位于Task栈顶,采用singleInstance模式加载activity所在Task只包含该activity。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: