墨香带你学Launcher之(五)- Workspace滑动
上一章墨香带你学Launcher之(四)- 应用安装、更新、卸载时的数据加载介绍了应用的安装、更新、卸载时的数据加载和图标绘制流程,本章我们来介绍承载图标、小部件等的Workspace的布局和滑动操作。 在第一章墨香带你学Launcher之(一)-...
自定义View之—渐变进度条
最近项目中用到渐变圆环进度条,自己也写了一下,用到一些知识,以前没有用过,使用过程中有一些问题,在此做一下笔记。 渐变颜色其实用到的是颜色数组,然后根据数组计算来的,当然计算是Android系统进行的,不需要我们手动计算,我们只需要设置颜色数组和颜色值对应位置即可。画圆形渐变用到一个属性:SweepGradient,他的父类是一个Shader, 由官方文档看到他有两个构造函数: 123SweepGradient(float cx, float cy, int color0, int color1)SweepGradient(float cx, float cy, int colors[], float...
墨香带你学Launcher之(四)- 应用安装、更新、卸载时的数据加载
上一章墨香带你学Launcher之(三)- 绑定屏幕、图标、文件夹和Widget讲了桌面CellLayout、图标、文件夹以及Widget的绑定流程,这个主要是第一次加载时的绑定流程,那么当用户安装新的应用,或者更新应用,或者卸载应用时桌面是如何处理的,今天我们来学习一下这个流程。 我们知道应用的安装和更新都是通过应用市场来启动,而应用的卸载是通过桌面或者系统的app管理来启动的,因此我们将应用的安装和更新一起来讲,而应用的卸载单独来讲。首先我们先看一下应用的安装和更新时桌面的数据加载。 应用安装和更新 当我们通过应用市场安装或者更新应用时,会调用系统的安装界面,并执行安装程序,在应用安装或者更新完成后系统会发出对应的广播,通过对应广播Launcher会执行相应的加载程序。首先我们看一个App管理的兼容库:LauncherAppsCompat,这里面有一个接口和一些抽象方法,我们用的到底主要是这个接口还有两个抽象方法: 接口类: 1234567public interface OnAppsChangedCallbackCompat { void...
Android动画收集
随着Android的发展,界面的动画效果越来越炫,做出更炫的效果也是Android交互的一种追求,Android动画库也越来越多,为了方便查找,再次做个记录。 ListViewAnimations NineOldAndroids AndroidViewAnimations android-flip Material-Animations UltimateRecyclerView recyclerview-animators JazzyViewPager AVLoadingIndicatorView LollipopShowcase RecyclerViewItemAnimators HTextView Swipeable-Cards ViewPagerTransforms android-ripple-background Android-SpinKit AnimationEasingFunctions FoldableLayout CircleRefreshLayout TourGuide JJSearchViewAnim
墨香带你学Launcher之(三)- 绑定屏幕、图标、文件夹和Widget
上一章我们讲了Launcher的数据加载,包括:默认配置应用、文件夹以及widget的加载,所有应用的加载以及所有Widget的加载,数据加载完成后开始分批进行绘制到桌面上,包含默认配置bind,所有应用bind,所有小部件bind。下面我就从这几个方面进行分析,看看他们的加载过程。 1.默认配置图标、Widget、文件夹的绑定(bind) 上一章讲到默认配置加载的位置: 123456789101112private void loadAndBindWorkspace() { ... if (!mWorkspaceLoaded) { loadWorkspace(); ... } // Bind the workspace bindWorkspace(-1); ...
墨香带你学Launcher之(二)- 数据加载流程
上一篇墨香带你学Launcher之(一)-...
Android适配浅析
...
Gradle下导入framework.jar
最近公司项目在做launcher,设计过程中与系统设计到了对接,需要实现一些官方没有的功能,就需要在系统层添加一些接口,然而官方的sdk中没有这些接口,需要导入framework.jar,在eclipse或者idea中都是可以将framwork包放在android.jar前面编译的,但是在gradle中却不支持之前的做法,查了很多资料,都没有找到合适的方案,在最近有朋友提醒的情况下研究出了相关问题,需要在项目根目录下的gradle.build中配置下面信息: 12345678910111213141516171819allprojects { gradle.projectsEvaluated { tasks.withType(JavaCompile) { //放在项目的根目录下 options.compilerArgs.add('-Xbootclasspath/p:framework-x5057.jar') ...