小米开源文件管理器MiCodeFileExplorer-源码研究(9)-入口分析

AndroidManifest.xml是Android应用程序最重要的配置文件。


入口文件和intent-filter
<application
        android:icon="@drawable/icon"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Holo.Light"
        android:uiOptions="splitActionBarWhenNarrow">
        <activity
            android:name="net.micode.fileexplorer.FileExplorerTabActivity"
            android:configChanges="screenSize|keyboardHidden"
            android:screenOrientation="sensor"
            android:uiOptions="splitActionBarWhenNarrow">
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>      
        </activity>
</application>




Intent和IntentFilter,昨天才复习了下,大致的意思是:Intent意图,作为一种编程模式,实现程序解耦,
而IntentFilter可以过滤Intent。
android.intent.action.MAIN表明是“入口”,
android.intent.category.LAUNCHER表明“决定应用程序是否显示在程序列表里”。


还配置了2个Activity和1个Service。
<activity android:name=".SearchActivity" >
</activity>


 <activity
            android:label="@string/menu_setting"
            android:launchMode="singleTop"
            android:name=".FileExplorerPreferenceActivity"
            android:theme="@android:style/Theme.Holo.Light.NoActionBar" >
        </activity>


<service android:name=".FTPServerService" />






程序启动之后,进入FileExplorerTabActivity的界面。
onCreate函数里,完成ViewPager和TabsAdapter2个关键对象的构造。
最重要的是TabsAdapter。


还是用自己理解来表述这个问题吧~
FileExplorerTabActivity这个Activity就是“Controller”控制器。
ViewPager这个View就是“View”视图。
TabsAdapter就是Model,提供数据~


mTabsAdapter = new TabsAdapter(this, mViewPager);
		mTabsAdapter.addTab(bar.newTab().setText(R.string.tab_category),
				FileCategoryActivity.class, null);
		mTabsAdapter.addTab(bar.newTab().setText(R.string.tab_sd),
				FileViewActivity.class, null);
		mTabsAdapter.addTab(bar.newTab().setText(R.string.tab_remote),
				ServerControlActivity.class, null);
		bar.setSelectedNavigationItem(PreferenceManager
				.getDefaultSharedPreferences(this).getInt(INSTANCESTATE_TAB,
						Util.CATEGORY_TAB_INDEX));




Tab类型的适配器,增加了3个选项,分别是FileCategoryActivity分类浏览、
FileViewActivity文件管理、ServerControlActivity远程管理。
其中前2个主要是小米自身的实现,后1个用到了刚刚配置的FTPService,主要代码是另外一个开源产品SwiFTP。


然后就是相关事件的绑定和切换了,Tab切换由TabActivity自身响应,其它相关事件由FileCategoryActivity等响应。


总结
   Android、Swing、Windows、Web,可视化界面开发GUI类型的应用程序开发,流程类似。
   1.做好程序配置~
     .xml、.properties、.conf、.ini等
   2.启动流程,初始化~
     一种类型的应用程序,启动流程基本是固定的~
标准往往是强势的一个公司制定的~
身为程序员,只能按照标准一步步来哦~
   3.展示界面
     Android:移动端
Windows/Swing:PC端
Web:Web
   4.响应事件
     Web端:URL超链接点击、JS按钮等
Android/Windows/Swing:按钮点击等

 


参考资料:
1.http://liuzhichao.com/p/506.html
2.http://zhidao.baidu.com/link?url=vkiGaNN8R2s5-SCBQYtL1pGJxMTOJTjXcp97rFBQ8arJo9gmwoRFSfbfQw06JJ6QfkwgVZGSnqN3cNi5ZYqYhK

原文地址:https://www.cnblogs.com/qitian1/p/6462632.html