OneStep的四大功能

自身设置

设置(添删图标,图标排序),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文件来看,是这样的视图层级关系

层级关系靠自定义的视图容器构成。

顶层栏,容纳三个按钮

--> topbar_view.xml

android:id="@+id/photo"/>

android:id="@+id/file"/>

android:id="@+id/clipboard"/>

侧边栏,容纳应用、联系人、分享目标列表

--> sidebar_view.xml

android:id="@+id/side_view_dragged" //侧边栏处于拖拽分享时显示

android:id="@+id/ongoinglist_fake"

android:id="@+id/contactlist_fake"

android:id="@+id/sharelist"

android:id="@+id/sideview_scroll_list_normal" //侧边栏正常状态下显示

android:id="@+id/ongoinglist"

android:id="@+id/contactlist"

android:id="@+id/applist"

内容视图,容纳最近图片、文件、剪贴板内容视图

--> content_view.xml

layout文件

同上

视图树

暂留空

java鼠标指针锤子_深入剖析锤子onestep代码实现 - 上篇相关推荐

  1. java鼠标指针锤子,如果用4个技能打不过他,那就用7个

    本篇攻略重制于[2020.3.25]对应版本[10.06] 内容/整理[冬雨] 封面[南烛子] 全文约2412字,阅读需7分钟 今天要给大家讲解的英雄是未来守护者杰斯.杰斯集消耗与爆发于一体,同时具备 ...

  2. java鼠标指针锤子,java线程工具走出锤子敲铁皮时代。

    长期以来,我都觉得多线程的使用是重要而又较难掌握的,要用的时候现看,下次用的时候忘记了,又要现看,这可能跟我长期从事的是Application Server中,某种固定架构下的编程,平时并不太需要自己 ...

  3. java鼠标指针锤子,写个锤子JS!它应该是你最后的选择

    本文翻译自: https://dev.to/olpeh/javascript-should-be-your-last-resort-5dje 在进行现代化Web前端开发时,使用着自己最爱的框架,有时候 ...

  4. java char指针数组_简单总结C语言中各种类型的指针的概念

    C语言中有很多关于指针的使用,指针也是C语言的灵魂所在,而且C语言中也有很多有关指针的概念,这里学习并总结了一些知道的概念. 常量指针:首先它是一个指针,常量只是用来修饰指针的定语.其定义如下: ch ...

  5. java 鼠标获取位置_(java)获取鼠标位置坐标

    最近无聊玩玩新花样,需要获取屏幕坐标,之前这东西都是直接安装了别人的exe工具,现在想想自己也算程序猿了,就写一个吧 其实也不难,总体来说就是先创建一个面板,然后实时监听鼠标的位置,将其显示出来 对于 ...

  6. 计算器java鼠标按钮事件_[java]ItemEvent事件:简单计算器

    代码: Example9_8.java public class Example9_8 { public static void main(String args[]){ WindowOperatio ...

  7. java char 指针数组_双指针之对撞指针,Java

    反转字符串数组 给定一个字符数组,反转.要求原地进行,空间复杂度为O(1). public void reverseString(char[] s) { int n = s.length; int l ...

  8. java 集合接口原理_图文剖析java集合框架—Set接口

    Map接口图补充待续 继上一节讲解了List接口的常用实现类以及源码的一些分析,这节将讲解集合中的Set接口. HashSet: 底层原理:哈希表结构存储.对集合的迭代次序不作任何保证; 允许元素nu ...

  9. java ajax翻页_分页 工具类 前后台代码 Java JavaScript (ajax) 实现 讲解

    [博客园cnblogs笔者m-yb原创, 转载请加本文博客链接,笔者github: https://github.com/mayangbo666,公众号aandb7,QQ群927113708] htt ...

最新文章

  1. 极限学习机的matlab程序_新程序员七宗罪,新手别踩雷
  2. Python Qt GUI设计:QTabWidget、QStackedWidget和QDockWidget容器控件类(提升篇—2)
  3. 3月第一周几个要处理的问题
  4. 无名飞控c语言源码,stm32飞控
  5. 如何用VC++开发读取网卡MAC地址的程序
  6. VBSCRIPT的循环挺好理解的
  7. CSS语法和CSS优先级
  8. “分类垃圾桶”成交同比涨超七成 塑料概念股集体波动
  9. html单选框换行,html – 如何防止单选按钮及其标签之间的换行符,同时仍然允许标签本身中的换行符?...
  10. html中加一个框与底部平齐,div+CSS实现单选复选框与文本对齐
  11. 访问一下互联网中的IPV6主机
  12. 《Android游戏开发详解》一1.1 什么是编程
  13. IDEA快捷键拆解系列(七):Analyze篇
  14. 趣学算法 陈小玉 书中所有问题的实现代码
  15. “人肉搜索”名词解释
  16. 表单美化+html+css
  17. Spring中@DependsOn注解的作用及实现原理解析
  18. Ubuntu16.04关机后自动重启解决方案
  19. 隐藏桌面上计算机图标不见了怎么办,电脑的快捷图标不见了怎么办
  20. win10获得system权限(超级管理员)

热门文章

  1. centos 下重置mysql密码
  2. 扩展虚拟机C盘内存空间
  3. 如何调整Linux系统为正确时区
  4. 路由桥接后副路由频繁断网的解决办法及完整的桥接过程
  5. 写过新手站长的一篇忠告
  6. InMobi如何设置付款方式,InMobi无限额结汇方案?
  7. 洗牌算法(Fisher–Yates高纳德置乱算法)
  8. Windows虚拟内存配置
  9. 解决Win11微软拼音输入法导致Shift+F6/Shift+F10失效问题
  10. 螺旋矩阵【史上最详细解释】