TabWidget类似于Android中查看电话薄的界面,通过多个标签切换显示不同的内容。要使用这一效果,首先熟悉TabHost,它是一个用来存放多个Tab标签的容器。使用TabHost,首先要通过getTabHost方法来获取TabHost对象,然后通过addTab方法来向TabHost中添加Tab,捕捉事件要设置事件监听setOnTabChangedListener。
TabWidget的具体实现:(此例只是演示TabWidget的使用,并未具体实现其功能)
页面设计代码:
主页面:(TabHost在java代码中实现,因此主页面无TabHost的设置)
<RelativeLayout 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" >
</RelativeLayout>
铃声设置页面:
<RelativeLayout 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=".RingActivity" >
<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="56dp"
android:layout_marginTop="128dp" >
<RadioButton
android:id="@+id/laz"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/laz" />
<RadioButton
android:id="@+id/l"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/l" />
<RadioButton
android:id="@+id/z"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/z" />
<RadioButton
android:id="@+id/j"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/j" />
</RadioGroup>
</RelativeLayout>
时间设置页面:
<RelativeLayout 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=".TimeActivity" > <TimePicker android:id="@+id/time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="49dp" /> <RadioGroup android:id="@+id/radioGroup1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginLeft="56dp" android:layout_marginTop="200dp" > <RadioButton android:id="@+id/laz" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/laz" /> <RadioButton android:id="@+id/l" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/l" /> <RadioButton android:id="@+id/z" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/z" /> <RadioButton android:id="@+id/j" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/j" /> </RadioGroup> </RelativeLayout>
声音设置页面:
要使用的文字string.xml:<RelativeLayout 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=".SoundActivity" > <TextView android:id="@+id/q" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginLeft="80dp" android:layout_marginTop="109dp" android:text="@string/q" android:textSize="20sp" /> <TextView android:id="@+id/y" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/q" android:layout_below="@+id/q" android:layout_marginRight="80dp" android:layout_marginTop="32dp" android:text="@string/y" android:textSize="20sp" /> <SeekBar android:id="@+id/seekBar1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignRight="@+id/q" android:layout_below="@+id/q" android:layout_marginLeft="90dp" android:layout_marginTop="32dp" /> <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@+id/q" android:layout_marginLeft="16dp" android:layout_toRightOf="@+id/q" android:src="@drawable/icon" /> <ImageView android:id="@+id/imageView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/seekBar1" android:layout_below="@+id/seekBar1" android:layout_marginTop="44dp" android:src="@drawable/down" /> <ImageView android:id="@+id/imageView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@+id/imageView2" android:layout_toRightOf="@+id/y" android:src="@drawable/up" /> <ImageView android:id="@+id/imageView6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/imageView1" android:layout_alignTop="@+id/imageView5" android:src="@drawable/vibrate" /> <ImageView android:id="@+id/imageView4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/imageView2" android:layout_marginTop="22dp" android:layout_toLeftOf="@+id/imageView2" android:src="@drawable/icon" /> <ImageView android:id="@+id/imageView5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/q" android:layout_alignTop="@+id/imageView4" android:src="@drawable/mute" /> </RelativeLayout>
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">Scene_Mode</string> <string name="action_settings">Settings</string> <string name="q">情景模式:</string> <string name="title_activity_ring">响铃方式</string> <string name="laz">铃声和振动</string> <string name="l">铃声</string> <string name="z">振动</string> <string name="j">静音</string> <string name="y">音量:</string> <string name="title_activity_time">时间</string> <string name="title_activity_sound">声音</string> </resources>
在AndroidManiFest.xml中设置:<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="bzu.wwj.scene_mode" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="8" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="bzu.wwj.scene_mode.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="bzu.wwj.scene_mode.RingActivity" android:label="@string/title_activity_ring" > </activity> <activity android:name="bzu.wwj.scene_mode.TimeActivity" android:label="@string/title_activity_time" > </activity> <activity android:name="bzu.wwj.scene_mode.SoundActivity" android:label="@string/title_activity_sound" > </activity> </application> </manifest>
java代码:(内容有不同的设计,利用Intent在同一个页面实现)package bzu.wwj.scene_mode; import android.os.Bundle; import android.app.TabActivity; import android.content.Intent; import android.view.Menu; import android.widget.TabHost; public class MainActivity extends TabActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); //获取TabHost TabHost tabHost = getTabHost(); //设置首登页面并在页面设置TabHost getLayoutInflater().inflate(R.layout.activity_main, tabHost.getTabContentView()); //设置转向 Intent RingIntent = new Intent(); RingIntent.setClass(this, RingActivity.class); //为TabHost添加标签 TabHost.TabSpec tab01 = tabHost.newTabSpec("tab01") .setIndicator("铃声设置",getResources().getDrawable(R.drawable.icon)).setContent(RingIntent); //添加Tab tabHost.addTab(tab01); Intent TimeIntent = new Intent(); TimeIntent.setClass(this, TimeActivity.class); TabHost.TabSpec tab02 = tabHost.newTabSpec("tab02") .setIndicator("时间设置",getResources().getDrawable(R.drawable.timeprofile)).setContent(TimeIntent); tabHost.addTab(tab02); Intent SoundIntent = new Intent(); SoundIntent.setClass(this, SoundActivity.class); TabHost.TabSpec tab03 = tabHost.newTabSpec("tab03") .setIndicator("声音设置",getResources().getDrawable(R.drawable.addprofile)).setContent(SoundIntent); tabHost.addTab(tab03); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
铃声设置java代码:时间设置java代码:package bzu.wwj.scene_mode; import android.os.Bundle; import android.app.Activity; import android.view.Menu; public class RingActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ring); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.ring, menu); return true; } }
package bzu.wwj.scene_mode; import android.os.Bundle; import android.app.Activity; import android.view.Menu; public class TimeActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_time); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.time, menu); return true; } }
声音设置java代码:
package bzu.wwj.scene_mode; import android.os.Bundle; import android.app.Activity; import android.view.Menu; public class SoundActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sound); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.sound, menu); return true; } }