分享

android 源码 Music 学习过程(随笔版)(ing)

 昵称10504424 2013-02-19

2013.01.10 下午

整体分析:

由一个包,27个文件组成。

其中有7个activity分别由7个文件组成,其中一个activity是以dialog形式显示,它们是:

1. MusicBrowserActivity.java

程序的入口,由四个tab组成:browse_menu艺术家,albums_menu专辑,tracks_menu歌曲,playlists_menu播放列表

2.ArtistAlbumBrowserActivity.java

艺术家界面

3.AlbumBrowserActivity.java

专辑界面

4.TrackBrowserActivity.java

歌曲界面

5. PlaylistBrowserActivity.java

播放列表界面

6. MediaPlaybackActivity.java

正在播放界面

7.CreatePlayList.java

新建播放列表界面,一dialog的形式显示

遇到的问题

1. 什么是TAB,以及TAB相关的知识?

解: google一下得:

tab 其实是一个选线选项卡布局,依托于TabHost

。。。。。。

TabHost 对象用TabActivity.getTabHost()获取。

暂时先了解这么些吧。。。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2013.01.11 下午

1.android通讯机制 AIDL

一、在同一包下建一后缀为aidl文件,

内容有引入所在的包,定义一个名称和文件名相同的接口,

接口里写明要提供服务的方法,并给参数注明in 还是out

二、 在同一包下建一继承service类的类,实现aidl里的所有方法

三、在AndroidManifest.xml 文件中注册 service

形如:



然后就可以调用了,基本上就是这个流程。




---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2013.02.03 下午


重新从入口类,即,MusicBrowserActivity.java 分析Music。

看完该类后,简要总结一下该类的作用:

1. 该 Activity 其实没有自己的view显示,

主要是通过调用 MusicUtil.java 的 activateTab(Activity, int) 方法选择启动哪一个Activity

  1.     static void activateTab(Activity a, int id) {  
  2.         Intent intent = new Intent(Intent.ACTION_PICK);  
  3.         switch (id) {  
  4.             case R.id.artisttab:  
  5.                 intent.setDataAndType(Uri.EMPTY, "vnd.android.cursor.dir/artistalbum");  
  6.                 break;  
  7.             case R.id.albumtab:  
  8.                 intent.setDataAndType(Uri.EMPTY, "vnd.android.cursor.dir/album");  
  9.                 break;  
  10.             case R.id.songtab:  
  11.                 intent.setDataAndType(Uri.EMPTY, "vnd.android.cursor.dir/track");  
  12.                 break;  
  13.             case R.id.playlisttab:  
  14.                 intent.setDataAndType(Uri.EMPTY, MediaStore.Audio.Playlists.CONTENT_TYPE);  
  15.                 break;  
  16.             case R.id.nowplayingtab:  
  17.                 intent = new Intent(a, MediaPlaybackActivity.class);  
  18.                 a.startActivity(intent);  
  19.                 // fall through and return   
  20.             default:  
  21.                 return;  
  22.         }  
  23.         intent.putExtra("withtabs"true);  
  24.         intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);// 参数含义是:如果所要启动的activity已经启动,   
  25.                                                         // 则finish掉其上的所有activity   
  26.         a.startActivity(intent);  
  27.         a.finish();  
  28.   
  29.         /* 
  30.          *     该方法必须用于startActivity 和 finish 方法之后。 
  31.          *  该方法作用:第一个参数为第一个Activity离开时的动画,第二参数为所进入的Activity的动画效果 
  32.          */   
  33.         a.overridePendingTransition(00);        
  34.     }  
分析时遇到的问题:见代码注释

2. 连接











    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多