第三章 Activity

内容较多,伴随考研复习,更新较慢,还望谅解。

一、Activity的创建

Android移动应用基础学习——第三章Activity_第1张图片

  • @override oncreate方法创建:oncr+(alt+?)

    Android移动应用基础学习——第三章Activity_第2张图片
    Android移动应用基础学习——第三章Activity_第3张图片

习题:Activity通过(  setContentView())方法可以设置它的布局文件Activity的布局文件放在哪个目录下(res/layout)

二、Activity的生命周期

短信内容的保存

Android移动应用基础学习——第三章Activity_第4张图片

视频播放器

Android移动应用基础学习——第三章Activity_第5张图片

游戏使用

Android移动应用基础学习——第三章Activity_第6张图片
Android移动应用基础学习——第三章Activity_第7张图片

  • 完整生命周期:oncreate–onstart–onresume–onpause–onstop–ondestory
  • 可视生命周期:onstart–onresume–onpause–onstop
  • 前台生命周期:onresume–onpause

横竖屏切换

Android移动应用基础学习——第三章Activity_第8张图片

习题:Activity获取焦点时执行方法是(onresume())Activity销毁时执行执行方法是(ondestroy())

三、Activity的存活案例

Android移动应用基础学习——第三章Activity_第9张图片

习题:Android使用( 任务栈 )的方式来管理Activity的实例

四、Android中的任务栈

栈:后进先出 队列:先进先出

  • 什么是任务栈

Android移动应用基础学习——第三章Activity_第10张图片

  • 任务栈清空,应用程序完全退出
  • 发送邮件的任务栈应用:

Android移动应用基础学习——第三章Activity_第11张图片

  • 进程与线程

Android移动应用基础学习——第三章Activity_第12张图片

  • 应用程序

在这里插入图片描述

习题:Android采用(任务栈)的方式来管理Activity的实例

五、Activity四种启动模式

  • 设置启动模式(默认为standard)
    在这里插入图片描述

  • standard启动模式

在这里插入图片描述

  • singleTop启动模式

Android移动应用基础学习——第三章Activity_第13张图片

  • singleTask启动模式

Android移动应用基础学习——第三章Activity_第14张图片

  • singleInstance启动模式

      (一个应用程序一般只有一个任务栈,但是当启动模式是singleInstanc时,就会有多个任务栈)

Android移动应用基础学习——第三章Activity_第15张图片

习题:1、当Activity的启动模式指定为( singleTask ),每次启动该Activity时,系统首先会检查栈中是否存在该活动的实例,如果发现已经存在则直接使用该实例,并将当前Activity之上的所有Activity出栈,如果没有发现则创建一个新的实例2、( singleTop )启动模式与standard类似,不同的是,当启动的Activity已经位于栈顶时,则直接使用它不创建新的实例

六、显式意图和隐式意图

  • 显示意图(知道激活组件的名称)与隐式意图(描叙一个对应的动作)

Android移动应用基础学习——第三章Activity_第16张图片

  • 两种意图的使用场景

在这里插入图片描述

习题:1、Intent intent = new Intent();intent.setAction("cn.itscast.xxx");startActivity(intent);采用的是(隐式意图)启动Activity2、没有明确指定组件名的Intent称为(隐式意图)

七、打开照相机案例

  • 显式意图

Android移动应用基础学习——第三章Activity_第17张图片

  • 隐式意图

Android移动应用基础学习——第三章Activity_第18张图片

习题:1、下列能打开系统相机的方法是(隐式意图)

八、数据传递方式

Android移动应用基础学习——第三章Activity_第19张图片

习题1、Android中Intent传递类对象时,该类对象需实现(Serializeable接口)或Parcelable接口2、下列选项中不能通过Intent传递的是(对象obj)

九、用户注册案例

Android移动应用基础学习——第三章Activity_第20张图片

MainActivity.java中

  import android.os.Bundle;    import android.app.Activity;    import android.content.Intent;    import android.view.Menu;    import android.view.View;    import android.widget.EditText;    import android.widget.RadioGroup;        public class MainActivity extends Activity {         private EditText et_username;    private EditText et_pwd;    private RadioGroup rg;            @Override        protected void onCreate(Bundle savedInstanceState) {                 super.onCreate(savedInstanceState);            setContentView(R.layout.activity_main);          //找到我们关系的控件            et_username = (EditText) findViewById(R.id.et_username);            et_pwd = (EditText) findViewById(R.id.et_pwd);            rg= (RadioGroup) findViewById(R.id.rg);                        }        public void click(View View) {         // TODO Auto-generated method stub            String username=et_username.getText().toString().trim();        String pwd=et_pwd.getText().toString().trim();        int getCheckedRadioButtonId=rg.getCheckedRadioButtonId();        //定义一个变量,来判断是男是女        int sex=0;        switch (getCheckedRadioButtonId) {         case R.id.rb_male:    sex=1;    break;            case R.id.rb_female:    sex=2;    break;    }        //将数据传输到第二个页面,通过意图把数据传递过去        Intent intent=new Intent(this,second_main.class);        //携带数据        intent.putExtra("name", username);        intent.putExtra("pwd", pwd);        intent.putExtra("sex", sex);        //开启意图        startActivity(intent);            }        }    

second_main中

   import android.app.Activity;    import android.content.Intent;    import android.os.Bundle;    import android.widget.EditText;    import android.widget.RadioGroup;    import android.widget.TextView;    public class second_main extends Activity {         @Override    protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);    //加载布局    setContentView(R.layout.secondanli);    //找到我们关心的控件    TextView tv_name = (TextView) findViewById(R.id.tv_name);    TextView tv_pwd = (TextView) findViewById(R.id.tv_pwd);    TextView tv_sex= (TextView) findViewById(R.id.tv_sex);        //获取开启此activity的意图对象    Intent intent =getIntent();        //获取携带来的数据    String name=intent.getStringExtra("name");    String pwd=intent.getStringExtra("pwd");    int sex=intent.getIntExtra("sex", 0);    //展示到控件上    tv_name.setText(name);    tv_pwd.setText(pwd);    switch (sex) {         case 1:tv_sex.setText("男");    break;             case 2:            tv_sex.setText("女");    break;    }    }    }
  习题:        两个RadioButton要实现单选需要包裹在(RadioGroup)中

十、回传数据

Android移动应用基础学习——第三章Activity_第21张图片

  • 开启新的activity获取返回值

Android移动应用基础学习——第三章Activity_第22张图片

  • onActiciytyResult()方法使用
    Android移动应用基础学习——第三章Activity_第23张图片
    Android移动应用基础学习——第三章Activity_第24张图片Android移动应用基础学习——第三章Activity_第25张图片
习题1、下列不是onActivityResult()方法参数的是(result)2onActivityResult()方法有三个参数,其中(resultCode)表示在返回数据时传入结果码

十一、装备选择案例

Android移动应用基础学习——第三章Activity_第26张图片Android移动应用基础学习——第三章Activity_第27张图片
Android移动应用基础学习——第三章Activity_第28张图片

  • 实现装备回收案例:

MainActivity.java中

package com.example.zhuangbeixuanze;import com.example.domain.Info;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.text.style.UpdateAppearance;import android.view.Menu;import android.view.View;import android.widget.ProgressBar;import android.widget.TextView;public class MainActivity extends Activity {     private ProgressBar pb1;private ProgressBar pb2;private ProgressBar pb3;private TextView tv_life;private TextView tv_atk;private TextView tv_quick;@Overrideprotected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 找到我们关心的控件pb1 = (ProgressBar) findViewById(R.id.progressBar1);pb2 = (ProgressBar) findViewById(R.id.progressBar2);pb3 = (ProgressBar) findViewById(R.id.progressBar3);tv_life =(TextView)findViewById(R.id.tv_life);tv_atk =(TextView)findViewById(R.id.tv_atk);tv_quick =(TextView)findViewById(R.id.tv_quick);//初始化进度条的最大值pb1.setMax(1000);pb2.setMax(1000);pb3.setMax(1000);}//点击按钮跳转到shop页面public void click1(View v) {     Intent intent= new Intent(this,ShoppingActivity.class);//开启一个页面并且要开启这个页面的startActivityForResult(intent,1);}//當我們開啓activity關閉使用的方法@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {     if(resultCode==10){     //代表數據來源於shopping activityInfo info=(Info)data.getExtras().get("info");//更新u iupdateProgressBar(info);}super.onActivityResult(requestCode, resultCode, data);}//u iprivate void updateProgressBar(Info info) {     //获取当前进度int progress1=pb1.getProgress();int progress2=pb2.getProgress();int progress3=pb3.getProgress();//更新进度pb1.setProgress(progress1+info.getLife());pb2.setProgress(progress2+info.getAttack());pb3.setProgress(progress3+info.getQuick());//更新一些text view的值tv_life.setText(pb1.getProgress()+"");tv_atk.setText(pb2.getProgress()+"");tv_quick.setText(pb3.getProgress()+"");}}

ShoppingActivity中

   package com.example.zhuangbeixuanze;    import com.example.domain.Info;    import android.app.Activity;    import android.content.Intent;    import android.os.Bundle;    import android.view.View;    import android.view.View.OnClickListener;    import android.widget.RelativeLayout;    import android.widget.TextView;    public class ShoppingActivity extends Activity implements OnClickListener{         private Info info;    @Override    protected void onCreate(Bundle savedInstanceState) {         // TODO Auto-generated method stub    super.onCreate(savedInstanceState);    //加载布局    setContentView(R.layout.activity_shop);    findViewById(R.id.rl).setOnClickListener(this);    //初始化顯示數據    info=new Info("金劍", 20, 100, 20);    //找到控件數據    TextView tv_name = (TextView) findViewById(R.id.tv_name);    TextView tv_life = (TextView) findViewById(R.id.tv_life);    TextView tv_attack = (TextView) findViewById(R.id.tv_attack);    TextView tv_speed= (TextView) findViewById(R.id.tv_speed);    //初始化數據,展示到控件上    tv_attack.setText("攻擊力"+info.getAttack());    tv_life.setText("生命值"+info.getLife());    tv_speed.setText("速度"+info.getQuick());    tv_name.setText(info.getName());    }    @Override    public void onClick(View v){         // 具體判斷點擊的是誰    switch (v.getId()) {         case R.id.rl:    //獲取當前數據,把info數據返回    Intent intent=new Intent();    intent.putExtra("info",info);    //把結果返回給調用者(main activity)    setResult(10, intent);    //關閉當前頁面,通過on activity result方法返回    finish();    break;    default:    break;    }    }    }
习题ProgressBar设置当前进度的方法是(setProgress())

更多相关文章

  1. android 快速滚动条设置(像新浪微博,滚动的时候会出现悬浮的滚动
  2. picasso-强大的Android图片下载缓存库
  3. 如何使用Android MediaStore裁剪大图片
  4. android 5.0新特性学习--Drawable Tinting(为图片资源着色)
  5. android中Matrix之一(图片二维转动)
  6. android(drawable文件夹)图片适配
  7. Android UI基础教程 目录
  8. 关于android示例程序(bitmapfun)——高效加载图片的坑爹地方
  9. android强大的图片下载和缓存库Picasso

随机推荐

  1. SQL Server误区30日谈 第16天 数据的损坏
  2. SQL Server误区30日谈 第17天 有关页校验
  3. SQL Server误区30日谈 第15天 CheckPoint
  4. SQL Server误区30日谈 第14天 清除日志后
  5. SQL Server误区30日谈 第13天 在SQL Serv
  6. SQL Server误区30日谈 第12天 TempDB的文
  7. SQL Server误区30日谈 第11天 镜像在检测
  8. SQL Server误区30日谈 第10天 数据库镜像
  9. SQL Server误区30日谈 第9天 数据库文件
  10. SQL Server误区30日谈 第8天 有关对索引