- 博客(31)
- 资源 (4)
- 收藏
- 关注
原创 Android自定义View-----TitleHead随列表拖动渐变---TitleHeadRecyclerView
仿照网易的有道词典的专栏详情的上拉下来效果。特点继承RecyclerView,重写onTouchEvent()事件,根据不同情况执行不同的操作。使用LayoutParams改变View参数,实现View的大小改变。使用setX()方法,改变View的坐标,实现View的移动动画。可把RecyclerView替换为其他类型的View,如ScrollerView、ListView等。除了Tit...
2018-04-15 15:59:45 801
原创 Android自定义View-----上下拖动布局--SlideContentLayout
仿照百度地图的上层地址列表的上拉、下拉的拖动效果,当手指离开屏幕时,地址列表有三种状态:全部展示,展示一半,隐藏到底部。特点继承于RelativeLayout,不用我们自己测量、布局、绘制View。可以嵌套不同的View,包括RecyclerView、ListView等,并实现滑动事件冲突的处理。View的移动动画的实现,使用setY(),通过设置View的位置,实现移动动画。Veloci...
2018-04-15 15:30:34 4704
原创 Android自定义View-下拉刷新-拉到底自动加载-LoadingRefreshLayout
主要实现两个功能,第一个是 实现一个下拉加载更多的效果。第二个是RecyclerView拖动到底自动加载的效果。功能一:下拉加载更多的效果特点继承于LinearLayout,不用自己实现ViewGroup的测量、布局、绘制。可以兼容多种类型的控件,RecyclerView、ListView、ScrollerLayout等。解决了事件滑动的冲突。MarginLayoutParams的topMarg...
2018-04-14 17:00:04 1033
转载 浅析Android的资源打包及安装后Apk文件的路径
Apk包对于Android系统来说是一个可执行文件,但其实质上是一个压缩包。把apk文件转为自拍格式,然后解压,可以看到: 解压Apk后文件夹里包含的文件:1)assets目录,保留工程中assets目录,其他工程下的、jar包中的assets也会合并到该assets目录下。2)lib目录,由于编译的时候jar文件已经合并到主工程中,所以lib目录下不会有jar文件,但是l
2017-12-16 17:01:08 22374
转载 Android资源管理框架(Asset Manager)简介
Android应用程序主要由两部分内容组成:代码和资源。资源主要是指与UI相关的东西,例如UI布局、字符串、图片等。代码和资源分开可以使得应用程序在运行时根据实际需要来组织UI。这样就可以使得应用程序只需要编译一次,就可以支持不同的UI布局。这种特性使得应用程序在运行时可以适应不同的屏幕大小和密度,以及不同的国家和语言。 首先看Android应用程序资源的分类,主要分为两大类:分别是a
2017-12-16 16:45:00 711
原创 cordova插件的开发完整流程
1、Node.js安装配置由于Cordova命令行工具发布在了npm包管理平台上,npm为nodejs内置的包管理工具,所以安装cordova前需要先确认你是否已经安装过Nodejs。1)安装包的下载,下载地址:http://nodejs.cn/download/,选择好对应的版本。本次现在的的Windows系统(.zip)版本。2)下载完成后,解压,点击安装包Node.exe,将出现
2017-12-16 15:40:59 1677
原创 DownloadManager源码分析及暂停下载、继续下载功能添加
Android系统中有提供一个下载工具给第三方开发者使用,开发者只需要简单的几个步骤就可以完成下载文件的功能。那就是DownloadManager,为了更好地使用这个工具,得先理解它的工作原理、工作流程。下面就使用DownloadManager进行文件下载的流程进行源码的分析。 下面是整个工作流程的一个时序图: 从上面的时序图我们可以大致了解...
2017-01-07 22:24:39 7736
原创 微信小程序的学习(4)-视图层WXSS
WXSS(WeiXin Style Sheets)是一套样式语言,用于描述WXML的组件样式。WXSS用来决定WXML中的组件应该怎么显示。WXSS中具有CSS的大部分特性,微信小程序框架同时对CSS进行了扩充以及修改。与CSS相比增加的特性有:尺寸单位样式导入尺寸单位*rpx(responsive pixel):可以根据屏幕宽度进行自适应。规定基础屏幕宽度
2016-12-18 16:48:30 1646
原创 微信小程序的学习(3)-视图层WXML
框架的视图层由WXML与WXSS编写。其中WXML(WeiXin Markup language)用来描述页面的结构,其实就是页面中的组件的结构,其文件是.wxml;WXSS(WeiXin Style Sheet)用于描述页面的样式,其实就是每个组件的样式、属性的设置,其文件是.wxss。 比如说一个显示用户头像和名字的界面。其页面结构就是一个Text组件,和一个Image组件;其页面
2016-12-18 16:12:09 5023
原创 微信小程序的学习(2)-逻辑层
由于本人是一个Android开发者,所以是带着和Android Native 应用开发做比较的想法来学习微信小程序的开发,这样子学习可以更好的理解微信小程序。
2016-12-16 11:31:19 1967 1
原创 Android事件传递机制
1、跟touch事件相关的三个方法:用来分派event:public booleandispatchTouchEvent(MotionEvent ev);用来拦截event:public booleanonInterceptTouchEvent(MotionEvent ev);用来处理event:public boolean onTouchEvent(Mot
2016-05-30 23:06:44 483
原创 自定义时间选择器DatePicker
有时候我们需要用到时间选择器DatePicker,但是Android自带的DatePicker可能有时不能满足我们的需求,比如一些样式。所有我们自定义一个DatePicker就可以满足我们自己的需求。 查看Android自带的DatePicker的源码可以发现,DatePicker就是由三个NumberPicker组成的,所以我们就可以通过自定义NumberPicker来完成DatePi
2016-04-27 22:37:15 1037
原创 在一个应用中打开另一个应用
在某些场景下,我们可能需要在一个app中打开另外一个app,或者打开例外一个app中的子activity。那么如何实现呢,其实也是比较简单。 我们只要知道需要带开的app的包名和类名就可以了。有两个app,包名分别是com.example.testappone和com.example.testapptwo private void openMainActivity(){
2016-04-04 11:57:32 2448
原创 Android spinner的默认状态的保存
问题分析:在Android 中使用spinner,当我们对spinner设置了ItemSelectedListener后,会马上执行position = 0的操作,就是说默认第一次是第一条数据被选中,所以每次我们第一次进入spinner的界面的时候,每次只能显示adapter中的绑定的第一条数据。当我们是在选中第二条数据的时候退出的时候,下次进来的时候显示的是第一条数据,就不能保存上次选择的状
2016-03-28 11:12:49 3141 4
原创 ContentProvider组件的实现原理
内容摘自罗升阳的Android系统源代码情景分析。 作为Android应用程序的四大组件之一,Content Provider除了可以用来作为数据访问接口之外,还可以在不同的应用程序之间进行数据共享。 Android系统中,每一个应用程序只可以访问自己创建的数据。然而,有时候我们需要在不同的应用程序之间进行数据共享,例如很多程序都需要访问通讯录中的联系人信息来实现自己的业务功能
2016-02-15 23:33:12 2063
原创 Android 系统广播机制
本博文的内容来自罗升阳的Android系统源代码情景分析。 在Android系统中,广播(Broadcast)是一种在组件之间进行消息传递的方式。这些组件可以运行在同一个进程中,也可以运行在不同的进程中。当两个不在同一个进程中的组件通过广播机制来传递消息时,广播机制就有点类似Binder进程间通信机制。事实上,广播机制就是在Binder进程间通信机制的基础上实现的。 既然如
2016-02-01 23:50:07 893
原创 Service 组件在新进程中的启动及在进程内的绑定过程
内容摘自罗升阳的Android系统源代码情景分析。 Service组件是Android应用程序的四大组件之一,它与Activity组件不一样,它主要用来处理与用户界面无关的业务逻辑。Service组件不直接与用户交互,因此,它涉及的业务逻辑一般是计算型的,适合在后台运行。
2016-01-31 23:03:01 729
原创 Activity组件的启动过程
此博客资料来自与于罗升阳的Android系统源码情景分析的书中,在学习的过程中,把它总结以下,并记录下来。Activity是Android应用程序的四大组件之一,负责管理Android应用程序的用户界面。每个Activity可能运行在同一个进程中,也可能运行在不同的进程中。运行在不同进程中的Activity组件通过Binder进程间通信机制来协助完成应用程序的功能。从应用程序的角度出发,Acti
2016-01-31 22:01:25 664
原创 SystemUI下拉通知栏的源码分析
super_status_bar.xml是systemUI的一个总的布局文件。下面是super_status_bar.xml的源码: xmlns:android="http://schemas.android.com/apk/res/android" xmlns:systemui="http://schemas.android.com/apk/res/com.andro
2015-12-30 21:50:23 9976 6
原创 SystemUI底部三个虚拟按键的背景颜色修改
三个虚拟按键的设置是在framework层中。 先查看三个按键的布局的初始化:位置 frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java:protected PhoneStatusBarView makeStatusBarView() {if
2015-12-30 21:45:38 9349
原创 Launcher3的workspace滑动分析
Workspace是PagedView的子类,而实际上滑动功能的实现是在PagedView中实现的。在Launcher中,Workspace中有五个CellLayout,分别代表五个分屏。 当左右拖动CellLayout时,就能实现滑动的效果。但实际上CellLayout中还有其他的子View,PagedView是如何避免了来自子View的干扰的呢?这里就需要讨论另一个问题,Androi
2015-12-30 21:36:12 3139
原创 Launcher3 开机后应用数据的加载流程分析
以下是Launcher3从开机后应用图标的一个加载流程的大致的分析:系统开机开启Launcher3后,执行Launcher3的onCreate()函数,进行应用数据的加载(主要显示的是核心代码):位置:Launcher.javaif (!mRestoring) { if (DISABLE_SYNCHRONOUS_BINDING_CURRENT_PAGE
2015-12-30 21:25:55 2535
原创 修改Launcher3应用Icon的样式
Launcher3中IconCache很明显是用于应用Icon缓存。在Launcher3的Java文件IconCacher.java:/** * Fill in "application" with the icon and label for "info." */ public void getTitleAndIcon(AppInfo applica
2015-12-30 21:18:50 4404
原创 Launcher3 应用图标的加载流程
下面从bindWorkspaceItems(oldCallbacks, currentWorkspaceItems, currentAppWidgets, currentFolders, null);开始具体分析应用图标的加载过程: LauncherModel.java:private void bindWorkspaceItems(final Callbacks oldCallb
2015-11-16 22:58:57 5707 4
原创 修改Launcher3中的workspace中的应用图标的大小
以下函数是把从数据库中加载的应用的信息绑定到workspace中。 public void bindItems(final ArrayList shortcuts, final int start, final int end, final boolean forceAnimateIcons) {
2015-11-16 22:52:43 5938
原创 修改Launcher3的workspace的应用图标的行列数:
先查看CellLayout的构造函数: public CellLayout(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); mDragEnforcer = new DropTarget.DragEnforcer(context);
2015-11-16 22:49:24 4556
原创 Android裁剪图片为圆形
public Bitmap getCircleBitmap(){ //需要裁剪的源图片 Bitmap resBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); int targetWidth,targetHeight,radius; //新图片的长和宽,为正方形(取两者
2015-11-16 22:36:13 744
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人