四种加载模式、Intent属性、ProgressBar、ProgressDialog

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();
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值