其中有7個activity分別由7個文件組成,其中一個activity是以dialog形式顯示,它們是:
程序的入口,由四個tab組成:browse_menu藝術(shù)家,albums_menu專輯,tracks_menu歌曲,playlists_menu播放列表
2.ArtistAlbumBrowserActivity.java
5. PlaylistBrowserActivity.java
TabHost 對象用TabActivity.getTabHost()獲取。
內(nèi)容有引入所在的包,定義一個名稱和文件名相同的接口,
接口里寫明要提供服務(wù)的方法,并給參數(shù)注明in 還是out
二、 在同一包下建一繼承service類的類,實現(xiàn)aidl里的所有方法
三、在AndroidManifest.xml 文件中注冊 service
<service android:name="TestService" android:process=":remote" > <intent-filter> <action android:name="com.bravewly.ITestService" /> </intent-filter> </service>
重新從入口類,即,MusicBrowserActivity.java 分析Music。
主要是通過調(diào)用 MusicUtil.java 的 activateTab(Activity, int) 方法選擇啟動哪一個Activity
static void activateTab(Activity a, int id) { Intent intent = new Intent(Intent.ACTION_PICK); switch (id) { case R.id.artisttab: intent.setDataAndType(Uri.EMPTY, "vnd.android.cursor.dir/artistalbum"); break; case R.id.albumtab: intent.setDataAndType(Uri.EMPTY, "vnd.android.cursor.dir/album"); break; case R.id.songtab: intent.setDataAndType(Uri.EMPTY, "vnd.android.cursor.dir/track"); break; case R.id.playlisttab: intent.setDataAndType(Uri.EMPTY, MediaStore.Audio.Playlists.CONTENT_TYPE); break; case R.id.nowplayingtab: intent = new Intent(a, MediaPlaybackActivity.class); a.startActivity(intent); // fall through and return default: return; } intent.putExtra("withtabs", true); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);// 參數(shù)含義是:如果所要啟動的activity已經(jīng)啟動, // 則finish掉其上的所有activity a.startActivity(intent); a.finish(); /* * 該方法必須用于startActivity 和 finish 方法之后。 * 該方法作用:第一個參數(shù)為第一個Activity離開時的動畫,第二參數(shù)為所進入的Activity的動畫效果 */ a.overridePendingTransition(0, 0); }分析時遇到的問題:見代碼注釋