已經做過一個Android版音樂播放器,模仿音樂播放器項目(見http://www.linuxidc.com/Linux/2012-02/53967.htm),這個播放器基本功能已經實現,但是最大的問題是播放代碼放在了activity中處理的,當推出音樂播放界面的時候,音樂是需要繼續播放,當帶過來電話時音樂需要暫停,打完電話繼續播放,所以以前的版本還是有很大問題的,今天決定一步一步實現一個功能齊全的播放器,把播放控制代碼放在service中。
首先來實現這樣一個簡單的界面:
新建一個android項目,如圖所示:
把項目中用到的圖片拷貝到drawable目錄下,編寫main.xml
- <?xml version="1.0" encoding="utf-8"?>
- <TabHost xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@android:id/tabhost"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent" >
-
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical"
- android:padding="5dp" >
-
- <TabWidget
- android:id="@android:id/tabs"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content" />
-
- <FrameLayout
- android:id="@android:id/tabcontent"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:padding="5dp" />
- </LinearLayout>
-
- </TabHost>
編寫MainActivity類
- public class MainActivity extends TabActivity {
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- requestWindowFeature(Window.FEATURE_NO_TITLE);
- this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
- WindowManager.LayoutParams.FLAG_FULLSCREEN);
- setContentView(R.layout.main);
-
- Resources res = getResources();
- TabHost tabHost = getTabHost();
- TabHost.TabSpec spec;
- Intent intent;
- intent = new Intent().setClass(this, ListActivity.class);
- spec = tabHost.newTabSpec("音樂").setIndicator("音樂",
- res.getDrawable(R.drawable.item))
- .setContent(intent);
- tabHost.addTab(spec);
-
- intent = new Intent().setClass(this, ArtistsActivity.class);
- spec = tabHost.newTabSpec("藝術家").setIndicator("藝術家",
- res.getDrawable(R.drawable.artist))
- .setContent(intent);
- tabHost.addTab(spec);
-
- intent = new Intent().setClass(this, AlbumsActivity.class);
- spec = tabHost.newTabSpec("專輯").setIndicator("專輯",
- res.getDrawable(R.drawable.album))
- .setContent(intent);
- tabHost.addTab(spec);
- intent = new Intent().setClass(this, SongsActivity.class);
- spec = tabHost.newTabSpec("最近播放").setIndicator("最近播放",
- res.getDrawable(R.drawable.album))
- .setContent(intent);
- tabHost.addTab(spec);
-
-
- tabHost.setCurrentTab(0);
-
- }
- }
注意這裡要繼承的是TabActivity,關於TabHost的用法不做過多介紹,官網有。最後分別建立其他用到的activity和使用的xml布局文件,不要忘記在manifest中注冊,
這樣上面的主界面就完成了。