程序员

深入剖析锤子onestep代码实现 - 上篇

2017-03-06  本文已影响0人  YY17

OneStep的四大功能

注: 区分下长按拖动与拖拽分享
长按拖动是指长按侧边栏图标时,拖动图标排序,拖拽分享,是在其它界面长按视图控件,如图片,产生系统级的拖拽事件,然后把其拖拽到侧边栏分享。

项目结构

初始一看以为,按MVC分层来放相关的类文件,其实不是,其实没有,就是简单归了下类。

\smartisan\packages_apps_OneStep
│ Android.mk
│ AndroidManifest.xml
├─assets
│ └─calendar
├─res
│ ├─drawable
│ ├─layout
│ ├─values
│ └─...
└─src
└─com
└─smartisanos
└─sidebar ------一些无家可归的孩子,有些未被归类
│ DingDingReceiver.java
│ PackagesMonitor.java
│ PendingDragEventTask.java
│ ReceiveShareData.java
│ SelectContactActivity.java
│ SelectMailContactActivity.java
│ SidebarApplication.java
│ SidebarController.java
│ SidebarMode.java
│ SidebarService.java
│ SidebarStatus.java
├─action
├─receiver
├─setting ---------- 设置界面相关的主要代码
├─util ---------- 数据层的类,都在此
│ │ AppItem.java
│ │ AppManager.java
│ │ BitmapCache.java
│ │ Constants.java
│ │ ContactItem.java
│ │ DataManager.java
│ │ FileInfo.java
│ │ IClear.java
│ │ ImageLoader.java
│ │ LOG.java
│ │ RecentFileManager.java
│ │ ResolveInfoGroup.java
│ │ ResolveInfoManager.java
│ │ SidebarItem.java
│ │ Utils.java
│ │ WechatContact.java
│ │ ...
│ ├─anim
│ └─net
├─view ------------------View层的视图类,基本都在此,但其实Adapter类也都丢在这了
│ ClipboardAdapter.java
│ ClipboardItemView.java
│ ClipboardViewGroup.java
│ ContentView.java
│ RecentPhotoAdapter.java
│ RecentPhotoViewGroup.java
│ SidebarAdapter.java
│ SidebarListView.java
│ SidebarRootView.java
│ SideView.java
│ TopItemView.java
│ TopView.java
└─ ...

视图框架及layout文件

还是比较容易找到入口类,SidebarController.init()函数里添加三个系统层级的窗口视图,很好理解,分别对应下图中的顶层栏(红),侧边栏(蓝),内容视图(橙)。

onestep_all.jpg

从layout文件来看,是这样的视图层级关系
层级关系靠自定义的视图容器构成。

layout文件

同上

视图树

暂留空

上一篇下一篇

猜你喜欢

热点阅读