java鼠标指针锤子_深入剖析锤子onestep代码实现 - 上篇
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代码实现 - 上篇相关推荐
- java鼠标指针锤子,如果用4个技能打不过他,那就用7个
本篇攻略重制于[2020.3.25]对应版本[10.06] 内容/整理[冬雨] 封面[南烛子] 全文约2412字,阅读需7分钟 今天要给大家讲解的英雄是未来守护者杰斯.杰斯集消耗与爆发于一体,同时具备 ...
- java鼠标指针锤子,java线程工具走出锤子敲铁皮时代。
长期以来,我都觉得多线程的使用是重要而又较难掌握的,要用的时候现看,下次用的时候忘记了,又要现看,这可能跟我长期从事的是Application Server中,某种固定架构下的编程,平时并不太需要自己 ...
- java鼠标指针锤子,写个锤子JS!它应该是你最后的选择
本文翻译自: https://dev.to/olpeh/javascript-should-be-your-last-resort-5dje 在进行现代化Web前端开发时,使用着自己最爱的框架,有时候 ...
- java char指针数组_简单总结C语言中各种类型的指针的概念
C语言中有很多关于指针的使用,指针也是C语言的灵魂所在,而且C语言中也有很多有关指针的概念,这里学习并总结了一些知道的概念. 常量指针:首先它是一个指针,常量只是用来修饰指针的定语.其定义如下: ch ...
- java 鼠标获取位置_(java)获取鼠标位置坐标
最近无聊玩玩新花样,需要获取屏幕坐标,之前这东西都是直接安装了别人的exe工具,现在想想自己也算程序猿了,就写一个吧 其实也不难,总体来说就是先创建一个面板,然后实时监听鼠标的位置,将其显示出来 对于 ...
- 计算器java鼠标按钮事件_[java]ItemEvent事件:简单计算器
代码: Example9_8.java public class Example9_8 { public static void main(String args[]){ WindowOperatio ...
- java char 指针数组_双指针之对撞指针,Java
反转字符串数组 给定一个字符数组,反转.要求原地进行,空间复杂度为O(1). public void reverseString(char[] s) { int n = s.length; int l ...
- java 集合接口原理_图文剖析java集合框架—Set接口
Map接口图补充待续 继上一节讲解了List接口的常用实现类以及源码的一些分析,这节将讲解集合中的Set接口. HashSet: 底层原理:哈希表结构存储.对集合的迭代次序不作任何保证; 允许元素nu ...
- java ajax翻页_分页 工具类 前后台代码 Java JavaScript (ajax) 实现 讲解
[博客园cnblogs笔者m-yb原创, 转载请加本文博客链接,笔者github: https://github.com/mayangbo666,公众号aandb7,QQ群927113708] htt ...
最新文章
- 极限学习机的matlab程序_新程序员七宗罪,新手别踩雷
- Python Qt GUI设计:QTabWidget、QStackedWidget和QDockWidget容器控件类(提升篇—2)
- 3月第一周几个要处理的问题
- 无名飞控c语言源码,stm32飞控
- 如何用VC++开发读取网卡MAC地址的程序
- VBSCRIPT的循环挺好理解的
- CSS语法和CSS优先级
- “分类垃圾桶”成交同比涨超七成 塑料概念股集体波动
- html单选框换行,html – 如何防止单选按钮及其标签之间的换行符,同时仍然允许标签本身中的换行符?...
- html中加一个框与底部平齐,div+CSS实现单选复选框与文本对齐
- 访问一下互联网中的IPV6主机
- 《Android游戏开发详解》一1.1 什么是编程
- IDEA快捷键拆解系列(七):Analyze篇
- 趣学算法 陈小玉 书中所有问题的实现代码
- “人肉搜索”名词解释
- 表单美化+html+css
- Spring中@DependsOn注解的作用及实现原理解析
- Ubuntu16.04关机后自动重启解决方案
- 隐藏桌面上计算机图标不见了怎么办,电脑的快捷图标不见了怎么办
- win10获得system权限(超级管理员)