Android应用组件学习笔记

Activity

 作为和用户之间交互的UI组件,Activity组件无疑在Android的UI组件中占据着重要位置。在通常状态下,Activity作为一个全屏的窗口出现,也可以作为其他的应用的子Activity出现。


activity间的切换

在activity和activity之间借助intent组件进行,下面是一个最简单的调用。

//设置调用的activity
Intent in=new Intent(context, BluetoothOppBtErrorActivity.class);
//设置标志位
in.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//设置标题
in.putExtra("title",context.getString(R.string.unknown));
//设置显示内容
in.putExtra("content",context.getString(R.string.unknown_file_desc));
//启动Activity,不需要返回数据
context.startActivity(in);

在被调用的Activity中,处理数据的方法如下

protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    Intent intent = getIntent();
    String mErrorTitle = intent.getStringExtra("title");
    mErrorTitle = intent.getStringTitle("content");
    ......
}

在泛化Activity类时,必须实现Activity::onCreate()和Activity::onPalse()两个方法。另外通过一个Activity调用另一个Activity时,如果不需要返回数据,则通过Context.startActivityForResult()方法来处理,常见的方法如下

Intent intent =new Intent();
intent.SetClass(this,CreatePlaylist.class);
startActivityForResult(intent,NEW_PLAYLIST);

在被调Activity中,处理完请求后,可以通过如下方法向调用的Activity返回数据

setResult(RESULT_OK,(new Intent()).setData(uri));

对于返回的数据,调用Activit将在其onActivityResult方法中处理,过程如下

public void onActivityResult(int requestCode,int resultCode,Intent intent){
    switch(reuestCode){
        case NEW_PLAYLIST:
            URI uri = intent.getData();
        }
    }
}

标题栏的定制

    为了隐藏标题栏,可以在Java代码中实现,也可以在AndroidMenifest.xml文件中实现。
两者的不同之处在于
    用java实现,会在程序开始的时候出现标题栏,而后隐藏。而在Manifest中修改则会把标题栏当作属性来隐藏。并且一直都隐藏标题栏。

java实现方法

public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    requestWindwoFeature(Window.FEATURE_NO_TITLE);
    //必须放在requestWindowFeature()后边
    setContentView(R.layout.main);
}

AndroidManifest.xml实现方法

<activity android:name=".graphics.FrameBufferObjectActivity"
    android:label="Graphics/OpenGL ES/Frame Buffer Object"
    android:theme="@android:style/Theme.NoTitleBar"
    android:configChanges="orientation|keyboardHidden">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.SIMPLE_CODE"/>
    </intent-filter>
</activity>

自定义标题栏的方法

public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
    setContentView(R.layout.main);
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.custom_title);
......
}

希望同时隐藏标题栏和状态栏的方法

<activity android:name=".graphics.FrameBufferObjectActivity"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
    android:launchMode="singleTask"
    android:configChanges="orientation|keyboardHidden">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>

猜你喜欢

转载自blog.csdn.net/github_27314097/article/details/45669003