自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

happy_horse的博客

亦狂亦侠真名士,能哭能歌迈俗流!

  • 博客(112)
  • 资源 (21)
  • 收藏
  • 关注

原创 《Android 插件化框架VirtualAPK :(二)原理分析》

一、探究原理 1. 基本原理* 合并宿主和插件的ClassLoader:需要注意的是,插件中的类不可以和宿主重复;* 合并插件和宿主的资源:重设插件资源的packageId,将插件资源和宿主资源合并;* 去除插件包对宿主的引用:构建时通过 Gradle 插件去除插件对宿主的代码以及资源的引用。四大组件的实现原理Activity:采用宿主 manifest 中占坑的方式来绕过系统校验,然后再加载

2017-07-31 19:54:52 874

原创 《Android 插件化框架VirtualAPK :(一)基本集成》

一、VirtualAPK 介绍VirtualAPK 是我们推出的一款Android平台上的插件化方案,通过VirtualAPK,可以让APP无需重新发版即可上线新功能。之所以做这件事,是因为传统的开发流程中,APP进行版本迭代的时候,有着严格的时间周期的要求,必须在规定的时间点完成功能开发,也必须在规定的时间点完成渠道投放,这就让APP的版本迭代有了一定的限制,无法做到APP的随时更新,于是我们开发

2017-07-31 19:50:54 3394

原创 React Js 与 Native 之间的通信

主要内容:关于通信的一些思考React Js 与 Native 之间的通信的三种方式React Js 与 Native 通信三种方式的比较React Js 与 Native 之间的通信的基本原理一、关于通信的一些思考1、进程间的通信:在Android 系统中,应用是运行在由多个线程组成的进程中的,有的应用包含一个进程,有的可能会有两个进程,甚至多个进程。Android 系统中常见的进程间通

2017-06-24 16:35:39 1456

原创 Android studio Error:(30, 31) 错误: 程序包 不存在

一、修复bug记录这个bug,不是说这个问题有多么难,而是在解决之前,尝试了很多办法,它是一个不断试错的过程,比如:多次的 clean project/ rebuild project;查看主项目下的build/ 查看编译之后的.class 文件,发现并不存在library 的编译代码;尝试了将library 的包名重新命名、先删除,然后添加进来;试了很多办法,当然都没有用,最后搜索才发现是

2017-06-05 11:08:27 9476 1

原创 一步一步在 Windows下搭建 React Native Android 开发环境

一、前言搭建RN 的环境过程中可能会遇到比较多的坑,要有一个心理准备。我昨天搭建环境的时候,遇到很多的问题,一个问题一个问题的google,到昨天晚上遇到的最后一个问题,始终解决不了,今天又折腾了一天,才弄好。二、什么是 React Native?官方解释:React Native使你能够在Javascript和React的基础上获得完全一致的开发体验,构建世界一流的原生APP。React Nati

2017-05-04 00:32:42 942

原创 Android 属性动画:实现购物车添加商品动画

实现需求是:在商品列表页面,从列表Item 添加商品的时候,需要一个动画,仿佛是是往购物车里添加商品。实现思路:获取起始点与终点的坐标,利用PathMeasure 绘制贝塞尔曲线;为点击的Item 商品View 设置属性动画;监听属性动画的update,改变View 的坐标;实现效果如下:实现中会用到 PathMeasure 类: 我们主要使用它两个方法:1、获取长度:/** //获取弧线

2017-03-28 20:56:31 6247 5

原创 Android 属性动画:实现小球坠落

一、要做什么项目需要实现的效果:小球坠落 1. 首先绘制小球--自定义View 绘制圆; 2. 模拟小球坠落--属性动画,重绘小球轨迹; 3. 修改小球颜色--实现自定义TypeEvaluator;实现的简单效果如下:二、思考怎么做实现步骤如下:1、自定义 AnimPointView:/** * Created by Troy on 2017/3/20. * * 通过对对象进行值操作来

2017-03-21 20:46:41 4634

原创 Android 属性动画:基本知识总结

提纲:文章写了什么?什么是属性动画?属性动画相关接口及常用类ValueAnimator ObjectAnimator估值器差值器属性动画,顾名思义就是:沿着一定的时间顺序,通过改变View的属性,从而得到的动画的效果。引入属性动画最大的作用就是为了“眼见为实”,对于ViewAnimation,动画的移动和缩放并没有真正的改变控件的位置和热区,而属性动画则可以做到这一点。Interfac

2017-03-21 12:35:17 666

原创 算法:字符串匹配算法整理

一、定义字符串模式匹配算法(string searching/matchingalgorithms):就是在一个文本或者较长的一段字符串中,找出一个或多个指定字符串(Pattern),并返回其位置。这类算法属基础算法,各种编程语言都将其包括在自带的String类函数中,而且由之衍生出来的正则表达式也是必须掌握的一种概念和编程技术。二、常见算法Brute-Force 算法KMP 算法Boyer-

2017-03-07 21:17:22 1220

原创 Android JWT 简单使用

一、什么是JWT?JWT 的定义:JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.JWT的作用:1、JWT可以理解为一串通过特定算法生成的字符串,在API的请求中,将这段字符串放入请求参数中。API Server通过判

2017-02-16 18:38:09 8971

原创 Android 微信热修复 Tinker 接入过程及使用方法

一、前言学习热修复 Tinker 的使用,主要有两个原因:业务需要:项目会出现一些细小的bug,需要等到发布新版才能修复,因此一直有关注热修复这块的技术。技术驱动:这是一件需要一直保持的事情,不断的学习,与时俱进,才能提高自己。二、Tinker 接入指南热补丁:让应用能够在无需重新安装的情况实现更新,帮助应用快速建立动态修复能力。心理准备:Tinker 的接入相对HotFix、AndFix 等

2017-02-15 21:49:51 4319 4

原创 Android JNI 学习笔记(一):简答实现

参考文档: (1)、NDK-JNI实战教程(一) 在Android Studio运行第一个NDK程序 (2)、JNI Tips (3)、JNI (4)、AndroidStudio 编译C/C++文件生成SO文件

2017-01-22 20:37:44 504

原创 NestedScrolling 嵌套滑动机制:原理简单分析(二)

前言这篇文章会简单的总结一下嵌套滑动机制的执行过程和基本原理,欢迎批评。文章行文思路大概如下:前言NestedScrolling 方法执行顺序 LogNestedScrolling 流程图NestedScrolling 与 Touch事件的分析NestedScrolling 方法执行顺序 Log在上一篇文章DEMO中打印了NestedScrollParent 与 NestedScrollC

2017-01-20 15:35:35 978

原创 NestedScrolling 嵌套滑动机制:简单实践(一)

一、前言NestedScrollView 机制是周三听其他组的同学分享才知道的。谈起技术分享,让我学习很多:关于视野:学习这件事情,从来不是孤军奋战,应该多多交流和分析、讨论。正如爱尔兰作家说:你有一个苹果,我有一个苹果,我们交换一下,一人还是一个苹果;但是,你有一个思想,我有一个思想,我们交换一下,一人就有两个思想。交流的重要性。关于表达:分享的同学表达能力很强,能清楚的明白参数方法的概念,这

2017-01-19 21:19:07 12197 1

原创 Android 反编译:加固前后对比

一、比较360加固前 的 apk :hello.apk 360加固后 的 apk :hello_after.apk 操作步骤 加固前反编译 加固前后编译 1、zip包解压缩 1、能看到assets 目录下的资源文件;2、migrations 下 sql 语句 与前者相同,但是多了 几个 so 文件;libjiagu.so、libjiagu_a64.so、libjiagu_ls

2016-12-29 12:36:19 8699 1

原创 WeChat 开源项目技术点总结整理

项目目录结构图: 目录:1. 项目 build.gradle---查看项目主要涉及到哪些第三方库2. 将Html文本转换成能正常显示的3. 启动定时服务一、项目 build.gradle—查看项目主要涉及到哪些第三方库dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') testCompile 'ju

2016-12-29 12:09:17 1274

原创 【1】Android源码阅读:一个Activity是如何启动的?

这几天心情很不好,我也不知道是什么原因,虽然一直的习惯是找到事物/念想产生的原因,但是这一回却真是找不到原因了,哈哈,人丑还是要多读书啊。不过,不管怎样,不管周围的人的变得怎样,周围的世界变得怎样,依然要保持学习,做自己想做的事,做一个开心而有价值的人。想起一首诗以自勉:自小刺头深草里,而今渐觉出蓬蒿。 时人不识凌云木,直待凌云始道高。 -唐代杜荀鹤 《小松》Activity的启

2016-12-20 21:16:56 595

转载 【1】Java 并发编程--深入分析Volatile的实现原理

转载:http://www.infoq.com/cn/articles/ftf-java-volatile

2016-12-15 21:28:02 440

转载 【1】关于Android中工作者线程的思考

本文系技术小黑屋 2015 北京 GDG Devfest分享内容整理。一、Why在Android中,我们或多或少使用了工作者线程,比如Thread,AsyncTask,HandlerThread,甚至是自己创建的线程池,使用工作者线程我们可以将耗时的操作从主线程中移走。首先思考以下几个问题?在Android系统中为什么存在工作者线程呢?常用的工作者线程有哪些不易察觉的问题呢?关于工作者线程有哪

2016-12-15 12:44:47 479

原创 【14】Java内存深入理解:java里的静态成员变量是放在了堆内存还是栈内存

堆区:1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令) 2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身栈区:1.每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中 2.每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。 3.

2016-12-14 19:59:45 926

原创 TypedArray 为什么需要调用recycle()

零、应该掌握的TypedArray 的 基本用法;TypedArray 对象是如何生成的?TypedArray 与单例模式SynchronizedPool 同步对象池、SimplePool 简单对象池、Pool 接口equals 与 == 的区别一、思考Why:在 Android 自定义 View 的时候,需要使用 TypedArray 来获取 XML layout 中的属性值,使用完

2016-12-09 20:10:21 916

原创 Android 绘制百分比圆环进度条

在学习自定义Vew的时候,看到一篇文章,http://blog.csdn.net/nugongahou110/article/details/49159189,然后顺着其思路写了一下,实现效果如下:我们要做的事情:实现一个百分比的圆环进度条,包含三部分,分别是:百分比文字背景圆动态圆环我们要做的思路:先分别绘制对应的图形;使图形能动态变化;文字显示百分比与圆环进度对应;自定义View

2016-12-09 19:29:31 6005 1

原创 Canvas 动态绘制简单的柱形图

效果如下:DEMO代码如下: 基本思路是先绘制柱形图、绘制柱形图的标题、绘制分割线、绘制文本:public class SimpleBar extends View { //画线的画笔 private Paint mLinePaint; //画柱状图的画笔 private Paint mBarPaint; //写字的画笔 private Paint mTe

2016-12-02 21:46:58 3767

原创 【13】Java基础:java中的静态代码块,静态变量,静态方法

一、Java虚拟机内存的五个区域:(1)、方法区:在java的虚拟机中有一块专门用来存放已经加载的类信息、常量、静态变量以及方法代码的内存区域,(2)、常量池:常量池是方法区的一部分,主要用来存放常量和类中的符号引用等信息。(3)、堆区:用于存放类的对象实例。(4)、栈区:也叫java虚拟机栈,是由一个一个的栈帧组成的后进先出的栈式结构,栈桢中存放方法运行时产生的局部变量、方法出口等信息。 当调用

2016-11-30 22:10:21 666

原创 Gson 自定义TypeAdapter

最近写获取车辆品牌车系时,用Gson解析后台返回的数据会有html的字符,是后台返回有html字符,解决的办法自定义Gson的TypeAdapter。DEMO如下:protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView

2016-11-30 21:33:20 1767

原创 Gradle常见配置总结

1、理解根目录下的build.gradle在使用Android Studio创建工程时,会在根目录创建类似如下的build.gradle。本文将从初学者的角度来解释每一行的意思,具体的细节还需查看gradle的API文档。如果要学习gradle,推荐一篇写得很好的blog深入理解Android之Gradle。个人认为最重要的一点是不要把build.gradle简单地看作配置文件,而是要把它看作一种编

2016-11-07 19:58:13 3601

原创 Android 热修复插件之AndFix

参考致谢: (1)、Android 热修复其实很简单 (2)、andfix 增量升级更新 热补丁修复 (3)、github

2016-10-19 21:14:29 382

原创 ReadingNotesUp

读书籍对系统的学习技术非常有帮助(前提是优秀的书籍)。【DONE 已读】 序号 书 名 状 态 评分(满分10分) 评价 时间 一句话总结 1 《C 语言编程设计》 读完 7 入门书籍 2 《Java 语言编程设计与实践》 读完 7 3 《Android 疯狂讲义》 读完 7

2016-10-13 11:15:52 337

原创 【3】Android AIDL

Android AIDL基本知识点:(1)Android AIDL 概述什么是AIDLAIDL能实现什么功能(2)Defining an AIDL Interface 三步Create the .aidl fileImplement the interfaceExpose the interface to clients(3)AIDL supports data types 1. 基

2016-10-12 10:19:30 414

原创 Android 进程保活技术总结

Android 进程保活基本概念:Android 进程保活的概念Android 进程的五级重要性层级结构Android 进程回收策略–Lowmemorykiller Android 提升进程优先级的两种方案: 利用 Activity 提升权限 和 利用 Notification 提升权限Android 进程死后拉活的方案Android 进程死后拉活的方案:利用系统广播拉活利用第三方应

2016-10-09 21:26:49 1238

原创 【2】Android Processes And Threads

Android 中的进程和线程基本知识点:什么是进程?什么是线程?二者的关系四大组件的 android:process 属性进程的五级重要层次结构进程的分类:前台进程、可见进程、服务进程、后台进程、空进程Android 单线程模式的两条基本规则在工作线程访问UI的几种办法:使用 AsyncTask线程安全方法参考文档: (1)、官方GUIDE

2016-10-09 21:14:57 373

原创 【1】Android Service

【写在前篇—反思和总结是进步之母】一、Android Service 基本知识点Service组件的定义、什么是ServiceService运行在哪个进程?哪个线程?startService()与bindService()的区别使用清单文件声明服务、 android:exported 属性的含义关于IntentService 及实现示例、对onHandleIntent()的理解Servi

2016-10-09 20:54:23 278

原创 Android使用银联插件支付功能

写在前面—反思和总结是进步之母。项目背景: App中使用银联的插件,并在App中有支付的入口,当用户点击“去刷卡”的时候,App会先为用户安装最新的银联插件,并通过AIDL与银联插件进行通信,完成支付的功能。重要的知识点:ServiceConnectionContext.bindService(Service, ServiceConnection)UIRunnerAIDL、

2016-10-09 11:08:25 1603

原创 Android网络框架-Volley(三) 加载图片

在上一篇文章中,我们了解了Volley到底是什么,以及它的基本用法。本篇文章中我们即将学习关于Volley更加高级的用法。在上篇文章中有提到过,Volley是将AsyncHttpClient和Universal-Image-Loader的优点集成于一身的一个框架。我们都知道,Universal-Image-Loader具备非常强大的加载网络图片的功能,而使用Volley,我们也可以实现基本类似的效果

2016-09-29 19:59:23 554

原创 Android网络框架-Volley(二) 使用进阶

1.安装和使用Volley库引入Volley非常简单,首先,从git库先克隆一个下来:git clone https://android.googlesource.com/platform/frameworks/volley 然后编译为jar包,再把jar包放到自己的工程的libs目录。2.使用请求队列Volley的所有请求都放在一个队列,然后进行处理,这里是你如何将创建一个请求队列:Reques

2016-09-29 18:37:04 427

原创 Android build.gradle 基本知识点

参考文档: (1)、Android studio aar 生成 和代码混淆 (2)、android studio 代码混淆如何忽略第三方jar包 (3)、日积月累:Proguard进行源代码混淆和崩溃日志反混淆 (4)、Android Develop

2016-09-29 17:00:54 547

原创 【1】Groovy语言学习:groovy语言简介及基本语法

Groovy是一种基于JVM的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性。一、groovy是什么简单地说,Groovy 是下一代的java语言,跟java一样,它也运行在 JVM 中。作为跑在JVM中的另一种语言,groovy语法与 Java 语言的语法很相似。同时,Groovy 抛弃了java烦琐的文法。同样的语句,使用groovy能在最大限度上减少你的击键次

2016-09-26 21:20:55 12422 4

原创 Gradle For Android Training

一、学习Gradle计划官网:https://gradle.org/training/ 培训:https://docs.gradle.org/current/release-notes Android:https://gradle.org/gradle-for-android-training/ 书籍:https://gradle.org/books/ 视频:https://www.yout

2016-09-21 20:55:52 540

原创 【0】Java学习大纲

目录第1章 Java概述1.1 Java语言的发展简史 2 1.2 Java的竞争对手及各自优势 4 1.2.1 C#简介和优势 4 1.2.2 Ruby简介和优势 4 1.2.3 Python的简介和优势 5 1.3 Java程序运行机制 5 1.3.1 高级语言的运行机制 6 1.3.2 Java程序的运行机制和JVM 6 1.4 开发Java的准备 7 1

2016-09-18 15:16:15 1020

原创 Android 更新UI 只能在主线程?

今天中午去吃饭的时候,zk问了我一个问题,“Android只能在UI线程更新UI 么”,我的回答是“对”。然后zk让我回去写在子线程中更新UI,看会有什么问题。一、三个子线程更新UI下午空闲的时候,就带着zk的疑问,写了这个DEMO,代码如下:package com.troy.nouithread;import android.graphics.PixelFormat;import android

2016-09-13 20:22:32 7902

tinker DEMO

Tinker

2017-02-15

Android Material Design之TabLayout + NavigationView联合使用

Android Material Design之TabLayout + NavigationView联合使用

2016-06-06

Android Material Design之CoordinatorLayout全面使用

Android Material Design之CoordinatorLayout全面使用介绍

2016-06-03

Android Material Design之CoordinatorLayout全面使用介绍

Android Material Design之CoordinatorLayout全面使用介绍

2016-06-03

Android EventBus框架使用详细介绍(一)

Android EventBus框架使用详细介绍(一)

2016-06-02

Android设计模式之代理模式(Proxy Pattern)

Android设计模式之代理模式(Proxy Pattern)

2016-05-31

Android异步任务处理之AsyncTaskLoader的使用

Android异步任务处理之AsyncTaskLoader的使用

2016-05-27

Android自定义View之仿知乎滑动删除Activity

Android自定义View之仿知乎滑动删除Activity

2016-05-16

Android自定义ScrollView:实现滑动顶部停靠

Android自定义ScrollView:实现滑动顶部停靠

2016-04-13

Android网络框架-Volley(一) 初步使用Volley

Android网络框架-Volley(一) 初步使用Volley

2016-04-13

volley.jar&源码

volley.jar&源码

2016-04-13

Android 使用ActiveAndroid 管理数据库

Android 使用ActiveAndroid 管理数据库

2016-04-11

activeandroid-3.1-3.jar

activeandroid-3.1-3.jar,

2016-04-11

Android RecyclerView实现瀑布流布局

Android RecyclerView实现瀑布流布局

2016-04-09

Android SurfaceView实现加载GIF动画

Android SurfaceView实现加载GIF动画

2016-04-08

Android 5.0 CardView+ListView 卡片布局应用

Android 5.0 CardView+ListView 卡片布局应用

2016-04-01

Android ViewPager和Fragment实现仿微信导航界面及滑动效果

Android ViewPager和Fragment实现仿微信导航界面及滑动效果

2016-04-01

框架butterknife-5.1.2

框架butterknife-5.1.2 一个很好用的开源框架,蛮不错的,可以简化你的代码,是关于注解的。不多说直接进入使用步骤讲解。

2015-11-05

Android Butterknife框架Demo

Android Butterknife框架 注解攻略

2015-11-04

88个Android开源项目

Android开发必看的88个Android开源项目,帮助你了解并学习安卓!

2015-09-25

模仿QQ滑动删除菜单--源代码;

这是一个模仿QQ最新的滑动删除功能,例如在聊天消息列表页,当手指滑动一条消息,从左到右的滑动时,会弹出一个删除菜单,点击会删除当前ListView的对应Item;

2015-08-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除