智能移动设备软件开发复习-第二天

写在前面:仅供参考,一般是自己留着看的,如有错误,敬请指正。
这次的更新接着上次的博客,智能移动设备软件开发复习-第一天

第2章 Android UI开发
  • RadioButton为单选按钮,它需要与RadioGroup配合使用,提供两个或多个互斥的选项集。 RadioGroup是单选组合框,可容纳多个RadioButton,并把它们组合在一起,实现单选状态。其他的属 性都是通用的,但是RadioButton有一个特有的属性checked,当该属性设置为true,按钮会默认选中。
    radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener(){
    	@override
    	public void onCheckedChanged(RadioGroup group,int checkedId){
    		//判断点击的是哪一个RadioButton
    		if(checkedId == R.id.rbtn){
    			textView.setText("您的性别是:男");
    		}
    		else{
    			textView.setText("您的性别是:女");
    		}
    		}
    	}
    });
    
  • ImageView是视图控件,它继承自View,其功能是在屏幕中显示图像。
    //法一
    android:background="@drawable/bg"
    //法二
    android:src="@android:drawable/sym_def_app_icon"
    
    两种方法的区别在于background会根据ImageView控件大小进行伸缩,而src是前景,以原图的大小进行显示。
第3章 Activity
  • Activity的创建
    在程序的包名处单击右键,选择[New] -> [Activity] ->[Empty Activity]

  • Activityd的生命周期方法、
    1️⃣onCreate()方法:在Activity创建时调用,通常做一些初始化设置

    @Override
    protected void onCreate(Bundle savedInstanceState){
    	super.onCreate(savedInstanceState);
    	setContentView(R.layout.activity_main);
    }
    

    2️⃣onStart()方法:在Activity即将可见时调用

    @Override
    protected void onStart(){
    	super.onStart();
    }
    

    3️⃣onResume()方法在Activity获取焦点开始与用户交互时调用

    @Override
    protected void onResume(){
    	super.onResume();
    }
    

    4️⃣onPause()方法在当前Activity被其他Activity覆盖或锁屏时调用

    @Override
    protected void onPause(){
    	super.onPause();
    }
    

    5️⃣onStop()方法在Activity对用户不可见时调用

    @Override
    protected void onStop(){
    	super.onStop();
    }
    

    6️⃣onDestroy()方法在Activity销毁时调用

    @Override
    protected void onDestroy(){
    	super.onDestroy();
    }
    

    7️⃣onRestart()方法在Activity从停止状态再次启用时调用

    @Override
    protected void onRestart(){
    	super.onRestart();
    }
    
    • 当第一次运行程序时,在LogCat中观察,可以发现程序启动后依次调用了onCreate()、onStart()、onResume()。此时应用程序处于运行状态,等待与用户进行交互。
    • 接下来单击模拟器上的"返回"按钮,程序则会依次调用onPause()、onStop()、onDestroy()方法。当调用了onDestroy()方法后,Activity被销毁清理出内存。
    • onRestart()方法在有多个Activity进行切换的时候就可以看到onRestart()方法的执行。
  • Activity的启动模式

    • Android中,采用任务栈的形式来管理Activity。通常一个应用程序对应一个任务栈,默认情况下每启动一个Activity都会入栈,并处于栈顶位置,用户操作的永远是栈顶的Activity。无论开启多少个Activity,最后开启的Activity都会被压入栈的顶端并且获得焦点,而之前开启的Activity仍然保存在栈中,但已经被停止了。系统会保存Activity被停止时的状态,当用户单击"返回"按钮时,当前Activity弹出,恢复之前的界面状态。
    1. standard模式
      standard是Activity的默认启动模式,特点就是每启动一个Activity就会在栈顶创建一个新的实例。(闹钟程序通常采用这种模式)
    2. singleTop模式
      singleTop会判断要启动的Activity实例是否位于栈顶,如果位于栈顶则直接复用,否则要创建新的实例。(浏览器的书签通常采用这种模式)
    3. singleTask模式
      与singleTop的区别在于singleTop在创建一个Activity时会检查栈顶是否已经存在当前的Activity,而singleTask则会检查整个栈中是否存在当前的Activity实例,如果存在则直接使用,并把当前Activity之上的所有实例全部出栈,否则会重新创建一个实例。这样保证了整个应用程序中的Activity的唯一性。(浏览器主界面通常采用这种模式)
    4. singleInstance模式
      singleInstance模式是4个启动模式中最特殊的一个,主要目的是为了在不同程序中共享一个Activity实例。启动时分为两种情况,一种是要启动的Activity不存在,则系统会创建一个新的任务栈,然后再创建Activity实例。一种是要启动的Activity已存在,无论当前Activity在哪个程序的哪个任务栈中,系统都会把Activity所在的任务栈转移到前台,从而使Activity显示。(来电界面通常采用这种模式)
  • Activity之间的跳转

    • Intent简介
    1. 显示意图
      Intent intent = new Intent(this, Activity.class);
      startActivity(intent);
      
      其中第一个参数为Context表示当前的Activity对象,这里直接用this即可,第二个参数Class表示要启动的目标Activity。
    2. 隐式意图
      Intent intent = new Intent();
      intent.setAction("action");//此处的action为想设置的任意action
      startActivity(intent);
      
      隐示意图相比显示意图来说不指定目标组件,而是通过这只action和category等属性信息,系统根据这些信息进行分析,寻找目标Activity。
      只有上述的代码还不行,还需要在目标Activity的清单文件中配置<intent-filter>,指定当前Activity能够响应的action和category
      <intent-filter>
      		<action android:name="action"/>
      		<category android:name="category"/>
      </intent-filter>
      
  • Activity中的数据传输

    • 数据发送

      Intent intent = new Intent(this, Activity.class);
      intent.putExtra("data", "Hello World!");
      startActivity(intent);
      

      第一个参数用于后面从intent取值,第二个参数是数据的内容

    • 数据接收

      Intent intent = getIntent();
      String data = intent.getStringExtra("data");
      

      getIntent()获取Intent对象,然后调用getStringExtra(),根据传入的键值,获取传递进来的数据。
      如果传递的数据为整数类型时,则使用getIntExtra()方法,以此类推。

    • 数据回传
      在数据回传中,如何开启另一个Activity

      Intent intent = new Intent(this, Activity.class);
      startActivityForResult(intent,1);
      

      startActivityForResult()方法接收两个参数,第一个参数是intent对象,第二个参数是请求码,用来判断数据的来源,输入一个唯一的值即可。
      如何在另一个Activity中回传数据

      Intent intent = new Intent();
      intent.putExtra("data", "Hello World!");
      setResult(1,intent);
      

      通过setResult()方法来向上一个Activity回传数据,其中第1个参数用于向第一个Activity返回处理结果,称为resultCode,主要是在有多个Activity回传数据时,如何甄别是谁返回的数据。第二个参数是把带有数据的intent传递回去。
      第一个Activity重写onActivityResult()方法来得到返回的数据。

      protected void onActivityResult(int requestCode, int resultCode,Intent data){
      	super.onActivity(requestCode, resultCode, data);
      	if (requestCode == 1){
      		if (resultCode == 1){
      			String string = data.getStringExtra("data");
      		}
      	}
      }
      

      在Activity中,通过实现onActivityResult(int requestCode,int resultCode, Intent data)方法来获取返回的数据。该方法有3个参数,第1个参数requestCode表示在当前Activity启动第二个Activity时传递的请求码;第二个参数resultCode表示在Activity返回数据时传入的结果码;第3个参数data表示携带返回数据的Intent。

      注:putExtra()中的第二个参数也可以传输别的类型的数据,例如ItemInfo,但是当回传后的数据接收就需要getSerializableExtra()方法来获取,通过Serializable接口来接收,而且之前还得有(ItemInfo)来转化类型

      ItemInfo info = (ItemInfo) data.getSerializableExtra("data");
      

      balabala写了一大堆,完成这些已经是2020/12/21日,复习效率有点低,完成软件工程基础的实验报告去了,明天回来接着更:)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值