Activity

1.Activity 在应用中提供了一个可交互的窗口。该窗口经常是填满整个屏幕的,但也可以比屏幕小并且置于其他窗口上方。

2.一个应用可以由多个 Activity 组成,每个Activity都可以启动别的Activity。当一个新的Activity启动时,先前的一个Activity被stop,但系统会在“返回栈(backstack)”中保存。

3.当一个新的Activity启动时,它被压入返回栈并获得用户焦点;当按下返回按钮时,它从栈中弹出(并销毁),先前的Activity则继续。

4.创建一个Activity:必须创建一个Activity(或者Activity已存在的子类)的子类。在子类中实现各种生命周期之间切换的回调方法。

两个最重要的回调方法:

onCreate():在Activity被创建时调用。在实现中可以初始化Activity的主要组件。最重要的是调用setContentView()来定义该Activity的布局;

onPause():当用户离开当前Activity事被调用。通常用来提交需要被保存的更改。

实现用户界面:

通过继承View类来实现用户界面。

在mainfest文件中生命Activity,格式如下:

<manifest ... >
  <application... >
      <activityandroid:name=".ExampleActivity" />
      ...
  </application... >
  ...
</manifest >

<activity>包含在<application>中,可以包含<intent-filter>和<meta-data>。

<activity>可以包含多种属性,如android:theme等,其中android:name属性是必须的。

使用intent 过滤器:通过指定<intent-filter>来声明其他的应用程序怎样激活它。

当新建应用时,main Activtiy中自动包含了以下intent过滤器:

<activity android:name=".ExampleActivity"android:icon="@drawable/app_icon">
   <intent-filter>
        <actionandroid:name="android.intent.action.MAIN" />
       <category android:name="android.intent.category.LAUNCHER"/>
   </intent-filter>
</activity>

<action>元素指明这个是应用的主入口,<category>指明这个Activity应被列入系统的应用列表。

如果无需其他应用来启动这个Activity,那么intent-filter只需包含上述内容即可。

但如果要让该Activity响应其他应用传来的隐式的intent的话,就必须添加额外的intent-filter

5.启动Activity:通过调用startActivity(),并传入描述你要启动的Activity的Intent。

Intent可以明确指定要启动的activity。如:

Intent intent = new Intent(this, SignInActivity.class);

startActivity(intent);

也可以只指定要执行的操作,然后由系统选择一个应用。如:

Intent intent = new Intent(Intent.ACTION_SEND);

intent.putExtra(Intent.EXTRA_EMAIL, recipientArray);

startActivity(intent);

6.启动Activity来得到一个结果:调用startActivityForResult()来启动其他Activity,然后实现onActivityResult()方法,当所请求的Activity结束时,它会返回一个Intent到  onActivityResult()方法中。如:

private void pickContact() {
    // Create anintent to "pick" a contact, as defined by the content provider URI
    Intent intent =new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
   startActivityForResult(intent, PICK_CONTACT_REQUEST);
}

@Override
protected void onActivityResult(int requestCode, intresultCode, Intent data) {
    // If therequest went well (OK) and the request was PICK_CONTACT_REQUEST
    if (resultCode== Activity.RESULT_OK && requestCode == PICK_CONTACT_REQUEST) {
        // Perform a query to the contact's contentprovider for the contact's name
        Cursorcursor = getContentResolver().query(data.getData(),
        newString[] {Contacts.DISPLAY_NAME}, null, null, null);
        if(cursor.moveToFirst()) { // True if the cursor is not empty
            intcolumnIndex = cursor.getColumnIndex(Contacts.DISPLAY_NAME);
            Stringname = cursor.getString(columnIndex);
            // Dosomething with the selected contact's name...
        }
    }
}

7.关闭一个Activity:调用finish()方法,也可以调用finishActivity()来关闭先前启动的Activity。

8.Activity生命周期:

看几种情况:

1.该Activity第一次被启动时,依次调用onCreate()->onStart()->onResume();

2.按返回键时,依次调用onPause()->onStop()->onDestroy();

3.当直接进去其他程序而未退出时(比如按电话键直接进入电话程序)时,依次调用onPause()->onStop(),而不调用onDestroy();

4.返回到该Activity时,依次调用onRestart()->onStart()->onResume();

可以总结如下:

  • 使用onCreate()方法来实例化需要在应用中用到的object;
  • 当activity在前台时,使用onResume()来运行services或者代码段;
  • 当activity不在前台时,使用onPause()来停止运行services或者代码段;
  • 在activity被销毁之前,使用onDestroy()来释放资源;


9.为Activity设置风格和主题:

通常的Activity都是占满整个屏幕的。但也可以设置成对话框模式,如弹出窗口等。只需在 AndroidManifest.xml 文件中更改Activity的android:theme属性即可。如:

    <?xml version=“1.0“ encoding=“utf-8“?>  
    <manifest xmlns:android=“http://schemas.android.com/apk/res/android“  
        package=”net.learn2develop.Activity101”  
        android:versionCode=”1”  
        android:versionName=”1.0” >  
        <uses-sdk android:minSdkVersion= ”14” />  
        <application  
            android:icon=”@drawable/ic_launcher”  
            android:label=”@string/app_name”    
            android:theme=”@android:style/Theme.Dialog”>  
             <activity  
                android:label=”@string/app_name”  
                android:name=”.Activity101Activity” >  
                <intent-filter >  
                    <action android:name=”android.intent.action.MAIN”  />  
                    <category android:name=”android.intent.category.LAUNCHER” />  
                </intent-filter>  
             </activity>  
        </application>  
    </manifest>  

效果如图:



10.隐藏Activity的标题:

只需要在OnCreate()方法中添加如下代码:

    public void onCreate(Bundle savedInstanceState) {  
             super.onCreate(savedInstanceState);  
             //---hides the title bar---          
            requestWindowFeature(Window.FEATURE_NO_TITLE);  
            setContentView(R.layout.main);  
        }  

效果如图:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值