小米开源文件管理器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
小米开源文件管理器MiCodeFileExplorer-源码研究(9)-入口分析的更多相关文章
- 小米开源文件管理器MiCodeFileExplorer-源码研究(0)-初步研究
2011年对着书本Android应用开发揭秘,写了2个月的HelloWorld. 现在想复习并深入,我没有耐心再去一点点地敲代码了. 4年前自己是个学生,实习,现在有工作,只能业余时间研究. ...
- Android开源项目 Universal imageloader 源码研究之Lru算法
https://github.com/nostra13/Android-Universal-Image-Loader universal imageloader 源码研究之Lru算法 LRU - Le ...
- 小米开源文件管理器MiCodeFileExplorer-源码研究(1)-2个模型Model
上篇说到,把小米的Java代码整理成了5个包,其中1个是net.micode.fileexplorer.model.这个包就2个模型类,最基本了,FileInfo和FavoriteItem. pack ...
- 小米开源文件管理器MiCodeFileExplorer-源码研究(5)-AsyncTask异步任务
说明:本文的文字和代码,主要来自于网上的2篇文章. 第4篇的时候,提到了异步任务AsyncTask. 网上找了2篇文章学习下,copy网友的代码,稍微改了几个字,运行成功了. 在开发Android移动 ...
- 开源播放器ijkplayer源码结构
ijkplayer核心源码主要在ijkmedia文件夹下ijkplayer.ijksdl及ijkutils. 注:tag k0.3.1 player: remove ijkutil android相关 ...
- 小米开源文件管理器MiCodeFileExplorer-源码研究(6)-媒体文件MediaFile和文件类型MimeUtils
接着之前的第4篇,本篇的2个类,仍然是工具类.MediaFile,媒体文件,定义了一大堆的常量,真正的有用的方法就几个.isAudioFileType.isVideoFileType之类的. Mime ...
- 小米开源文件管理器MiCodeFileExplorer-源码研究(2)-2个单实例工具类
从本篇开始,讲解net.micode.fileexplorer.util工具包中的类.这个包下的类,功能也比较单一和独立.很多代码的思想和实现,可以用于JavaWeb和Android等多种环境中. 一 ...
- 小米开源文件管理器MiCodeFileExplorer-源码研究(3)-使用最多的工具类Util
Util.java,使用最广泛~代码中很多地方,都写了注释说明~基本不需要怎么解释了~ package net.micode.fileexplorer.util; import java.io.Fil ...
- 小米开源文件管理器MiCodeFileExplorer-源码研究(8)-文件排序工具类FileSortHelper
FileSortHelper的核心功能就是,对文件集合FileInfo排序.FileInfo有若干字段,根据字段定义了4种比较器Comparator.调用示例:Collections.sort(Lis ...
随机推荐
- [HAOI2016]找相同字符 广义后缀自动机_统计出现次数
题目描述:给定两个字符串,求出在两个字符串中各取出一个子串使得这两个子串相同的方案数.两个方案不同当且仅当这两个子串中有一个位置不同. 输入输出格式输入格式:两行,两个字符串 s1,s2,长度分别为n ...
- php八大设计模式之单例模式
单例模式的好处: 实例化后只得到一个对象,减少内存的开销. 实现单例模式: 提供一个私有的属性用来存储实例后的对象. 禁止外部实例化对象,提供公共的的方法,返回实例化后的对象. 避免继承此类,然后重写 ...
- js001 ---- async
Node.js异步流,详细见https://caolan.github.io/async/docs.html#parallel 1, async 用的比较多的是 waterfall, 瀑布流, 就是每 ...
- bzoj 1588 [HNOI2002] 营业额统计 链表和Splay
来自HNOI 2002营业额的统计一题,这题以前是用链表水过的,最近看见许多splay的题,赶紧张一下知识. 题目大意就是对于一个序列,输出每个元素与它之前元素的差的最小值的和.先说链表的方法吧. 大 ...
- luoguP1462通往奥格瑞玛的道路(二分答案+spfa)
题意 给出n个点m条边的无向图. 每条边有两个权值a,b; 问在保证从1到n的路径a权值和小于x时,路径上b权值最大值最小为多少. (n≤10000,m≤50000,x≤1000000000) 题解 ...
- CSU 1446 Modified LCS 扩展欧几里得
要死了,这个题竟然做了两天……各种奇葩的错误…… HNU的12831也是这个题. 题意: 给你两个等差数列,求这两个数列的公共元素的数量. 每个数列按照以下格式给出: N F D(分别表示每个数列的长 ...
- volatile的含义
从词面上来讲.volatile的意思是易变的,也就是说.在程序执行的过程中,有一些变量可能会被莫名其妙的改变,而优化器为了节约时间.有时候不会重读这个变量的真实值,而是去读在寄存器的备份,这种话,这个 ...
- HIT 2255 Not Fibonacci(矩阵高速幂)
#include <iostream> #include <cstdio> #include <cstring> using namespace std; cons ...
- 公司采购 流程flowable例子
Name: Flowable BPMN 2.0 designer Location: http://flowable.org/designer/update/ 业务描述:1. 公司采购,因为办公用品价 ...
- HDU 4372 Count the Buildings
Count the Buildings Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Othe ...