从今天开始我们就开始研究Android 4.0里面的Gallery3d (Gallery2)
4.0的代码就庞大许多,而且现在的包名变成了com.android.gallery3d了,是真正的Android写的了。我们看下AndroidManifast.xml,
我们先看一个简单的Activity,熟悉下代码
<activity android:name="com.android.gallery3d.app.MovieActivity"
android:label="@string/movie_view_label"
android:configChanges="orientation|keyboardHidden|screenSize">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="rtsp" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:scheme="content" />
<data android:scheme="file" />
<data android:mimeType="video/mpeg4" />
<data android:mimeType="video/mp4" />
<data android:mimeType="video/3gp" />
<data android:mimeType="video/3gpp" />
<data android:mimeType="video/3gpp2" />
<data android:mimeType="video/webm" />
<data android:mimeType="video/avi" />
<data android:mimeType="application/sdp" />
</intent-filter>
<intent-filter>
!-- HTTP live support -->
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:mimeType="audio/x-mpegurl" />
<data android:mimeType="audio/mpegurl" />
<data android:mimeType="application/vnd.apple.mpegurl" />
<data android:mimeType="application/x-mpegurl" />
</intent-filter>
</activity>
是不是时曾相识的代码?就是上次我们看的播放视频的代码。
因为看过类似的代码,我就快点过
我发现android也不厚道,写的代码都这么的相似,2.3让人家写代码,4.0就抄袭改进人家的代码,把别人踢开了。
不过也可以解释为本身代码就是个空框架,没什么好改的
public class MovieActivity extends Activity {}
public class MoviePlayer implements
MediaPlayer.OnErrorListener, MediaPlayer.OnCompletionListener,
ControllerOverlay.Listener {}
不过播放器上的控制条,没有再像2.3那样使用Framework中的控制条,而是自己重新写了一个,实现播放控件和Framework的分离,我喜欢这个改进,松耦合
public class MovieControllerOverlay extends FrameLayout implements
ControllerOverlay,
OnClickListener,
AnimationListener,
TimeBar.Listener {}
基本的流程和2.3的播放器一模一样的。
Android 还做了一个无耻的事情,请看AndroidManifast.xml
<!-- we add this activity-alias for shortcut backward compatibility -->
<!-- Note: The alias must put after the target activity -->
<activity-alias android:name="com.cooliris.media.Gallery"
android:targetActivity="com.android.gallery3d.app.Gallery"
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity-alias>
就是说,如果新的Android 系统上没有com.cooliris.media.Gallery,而有应用发送Intent要求打开一个图片,那么就会打开com.android.gallery3d.Gallery目前这个Android这个应用来打开,真是把人家一脚踢开,还要将他的油水榨干啊!
视频播放器就不说了,后面开始,还是按照我们原来的方法来研究 数据流程 消息流程 刷新流程,界面切换流程来研究下吧。