一、开发步骤:
- 创建活动
- 创建布局
- 在活动中注册布局
- 在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。