Android:程序架构
Activity:
一个Activity为一个界面,对应一个继承android.app.Activity
的子类。
为了显示,可以加载一个layout.xml文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<Button
android:id="@+id/button_exit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_exit" />
</LinearLayout>
Activity类:
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//隐藏标题栏
//加载layout.xml文件
//获取按钮
//定义按钮点击事件
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
Button button = (Button)findViewById(R.id.button_exit);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:10086"));
startActivity(intent);
}
});
}
//获取menu.xml并加载菜单项
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
//定义菜单项的选择事件
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.add_item:
Toast.makeText(MainActivity.this, "you selected add", Toast.LENGTH_SHORT).show();
break;
case R.id.delete_item:
Toast.makeText(MainActivity.this, "you selected delete", Toast.LENGTH_LONG).show();
break;
default:
break;
}
return true;
}
}
定义菜单项xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.atest.MainActivity" >
<item
android:id="@+id/add_item"
android:orderInCategory="100"
android:title="@string/add_item"
app:showAsAction="never"/>
<item
android:id="@+id/delete_item"
android:orderInCategory="101"
android:title="@string/delete_item"
app:showAsAction="never"/>
</menu>
另外,所有应用中用到的字符串数据定义在value文件夹下的xml中:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">TEST</string>
<string name="hello_world">Hello world!</string>
<string name="add_item">add</string>
<string name="delete_item">delete</string>
<string name="button_exit">exit</string>
<color name="red">#FF0000</color>
</resources>
应用中的所有Activity都需要在AndroidManifest.xml中定义:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.atest"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="22" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".OtherActivity"
android:label="@string/activity_title" >
<intent-filter >
<action android:name="android.intent.action.View"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="http"/>
</intent-filter>
</activity>
</application>
</manifest>