• 小米开源文件管理器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

  • 相关阅读:
    倒排索引
    线控的原理
    性格类型之ISFP艺术家型——有爱心的艺术工作者
    亚马逊面试题及解法
    关于过度设计的思考(zz)
    给Visual Studio 2010中文版添加Windows Phone 7模板
    MySQL性能优化zz
    上班玩游戏,老总是怎么知道的呢?
    基于AJAX的自动完成
    JavaScript在ASP.NET AJAX中的另类故事
  • 原文地址:https://www.cnblogs.com/qitian1/p/6462631.html
Copyright © 2020-2023  润新知