Gallery3d 学习笔记(12)

从今天开始我们就开始研究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这个应用来打开,真是把人家一脚踢开,还要将他的油水榨干啊!


视频播放器就不说了,后面开始,还是按照我们原来的方法来研究 数据流程 消息流程 刷新流程,界面切换流程来研究下吧。    




你可能感兴趣的:(Gallery3d 学习笔记(12))