1、Task,任务
一个程序
对于用户来说就是一个应用程序(application),也就是一个任务
对于开发人员,设计开发的每一个页面(Activity)
一个Task可以由多个Activity组成,将Activity存储到栈中(后进先出),在栈顶的Activity获得焦点并显示,如果按回退键,栈顶的Activity从栈中弹出,并销毁,下一个Activity到达栈顶并显示,直到栈中没有Activity,Task结束
案例:回复邮件
a:登录email,A
b:进入收件箱,AB
c:打开邮件,ABC
d:回复邮件,打开写邮件,ABCD
e:发送邮件,关闭写邮件,ABC
f:按回退键,AB
g:再后退,A
h:退出Email,null
2、launchMode,启动模式
a:如何配置启动模式:
在清单文件中,Activity标签中添加属性
android:launchMode="standard"
b:
standard: 标准模式,每次都会创建新的Activity,每个页面的任务id(getTaskId)保持不变,但是Activity对象不同
singleTop:如果在栈顶存在Activity的实例,不会创建新的Activity实例,会重用该实例;如果不在栈顶,则会创建新的实例
singleTask:在一个任务中只能有一个Activity实例。如果栈中不存在,创建该Activity实例;如果在栈中存在,将Activity移到栈顶,其上的其他Activity将移除(销毁)
B:SingleTask
ABCD
AB
singleInstance:将Activity的实例放入新的栈
B:singleInstance
ACD:在一个栈中
B:单独一个栈
ABCD
按回退:DCAB
3、Intent属性
a:ComponentName,意图启动的组件的名称
b:Action:打开自定义的或者系统提供的意图
比如:打电话,发短信
c:Data:设置意图的数据
比如:设置电话号码
d:Extra:Intent传值时使用,putExtra,getExtra
e:type;设置数据的类型
f:category:组件启动的类型,是Action的附加信息
g:flag:设置启动模式
4、ProgressBar,进度条,常用水平,圆形
设置样式:
style="?android:attr/progressBarStyleHorizontal"
style="?android:attr/progressBarStyleLarge"
5.ProgressDialog,带进度条的对话框,必须使用java代码编写
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn1:// 打电话
Intent call = new Intent(Intent.ACTION_CALL);
call.setData(Uri.parse("tel:10086"));
startActivity(call);
break;
case R.id.btn2:// 发短信
Intent sms = new Intent(Intent.ACTION_SENDTO);
sms.setData(Uri.parse("smsto:10086"));
sms.putExtra("sms_body", "hello");
startActivity(sms);
break;
case R.id.btn3:// 打开网络图片
String url = "http://10.9.153.194:8080/day27/1.png";
Intent image = new Intent(Intent.ACTION_VIEW);
image.setData(Uri.parse(url));
startActivity(image);
break;
case R.id.btn4:// 打开电话本
Intent book = new Intent();
book.setAction(Intent.ACTION_GET_CONTENT);
book.setType("vnd.android.cursor.item/phone");
startActivity(book);
break;
case R.id.btn5:// home
Intent home = new Intent();
home.setAction(Intent.ACTION_MAIN);
home.addCategory(Intent.CATEGORY_HOME);
startActivity(home);
break;
case R.id.btn6:// 设置启动模式
Intent mode = new Intent();
mode.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);// //Intent.FLAG_ACTIVITY_CLEAR_TOP;//singleTask
mode.setClass(this, MainActivity.class);
startActivity(mode);
case R.id.btn7:// 选择图片
Intent icon = new Intent(Intent.ACTION_GET_CONTENT);
icon.setType("image/*");
startActivityForResult(icon, 1);
break;
}
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode == this.RESULT_OK) {
Uri uri = data.getData();// 本地图片的路径
if (uri != null)
iv.setImageURI(uri);// 显示选择的图片
}
}
案例二:
public void horizontal(View v) {
// 创建对话框
final ProgressDialog dialog = new ProgressDialog(this);
// 设置标题
dialog.setTitle("提示");
// 设置图标
dialog.setIcon(R.drawable.ic_launcher);
// 设置进度条样式
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
// 设置显示消息
dialog.setMessage("这是一个水平进度条");
// 禁用回退键
dialog.setCancelable(false);
// 设置进度条值是否精确,true, 不精确,模糊进度条,false,精确进度条
dialog.setIndeterminate(false);
// 添加按钮
dialog.setButton(DialogInterface.BUTTON_POSITIVE, "确定",
new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "确定", 1).show();
}
});
dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消",
new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
dialog.setButton(DialogInterface.BUTTON_NEUTRAL, "中立",
new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
// 更新进度
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
for (int i = 0; i <= 100; i++) {
dialog.setProgress(i);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}).start();
// 显示对话框
dialog.show();
}