自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

双斧狂暴战专栏

行云流水

  • 博客(72)
  • 资源 (29)
  • 收藏
  • 关注

原创 简易版LiveData-->实现MVVM

遵循LiveData原理,摒弃其中的复杂逻辑,只取LiveData的响应更新能力,做一套简易版本的实现。一、简易的ViewModelpackage com.example.jetpacktest;public class ViewModel { public String name; public int count;}二、简易的LiveData实现--命名为:ObserableAnypackage com.example.jetpacktest;impo

2021-11-26 15:58:46 1757

原创 Kotlin语言------一文了解

Kotlin语言作为一种完全兼容Java的语言,在2017年,被Google指定为官方开发语言,并宣布后续将以Kotlin作为Android的第一开发语言。相对于Java,Kotlin解决了许多的痛点,使用会更简洁。Kotlin目前应用最为广泛的,也是在Android上。Google官方在后续官网的Android更新都有提供Java和Kotlin双版本,并且目前许多的开源库都以Kotlin写就。因此了解Kotlin还是很有必要的。本文会将Kotlin中基础以及与Java的不同部分做分析,主要按以下的

2021-07-16 22:19:28 1136 2

原创 Android Crash治理

现状正式上线的程序上,Crash是最破坏用户体感的一种行为。Crash率因此也成为衡量一个App稳定性最重要的标志。Android系统可定制化而导致的碎片化、业务的高速发展、多商家定制业务、多人员协同开发等,导致的crash率无法稳定保持在安全线下。​Crash治理总体方案针对线上与测试中遇到的各种Crash,我们的处理方式通常是发现一个,处理一个。而进一步,则是希望在处理过程中能将某些有共性的Crash的处理方式提取出来,并在后续能做到有效预防。总体来说,治理方案应该是:

2021-07-15 00:27:18 700 1

原创 Kotlin进程通信------Socket

Socket作为进程通信的一种方式,在日常的进程通信中使用的不频繁,它更常用的是即时通讯、跨设备的一对多场景等。android进程间通信中使用socket,一般是一对一的场景,是常用Socket方式的降级、简单化的使用方式。Socket的使用,需要了解、注意的是它的握手、挥手机制。简洁明了的,可以参考:为什么不能用两次握手进行连接?为什么socket是三次握手挥手却是四次?详细解释的,可以参考:HTTP、HTTPS、TCP/IP、Socket通信、三次握手四次挥手过程?回到andro

2021-07-13 00:22:42 3621 3

原创 Kotlin进程通信------AIDL

前篇介绍了进程通信中,串行通信的方式Messenger。但如果进程间,有多个方法要并行调用,那么Messenger就不合适使用,而应该使用AIDL方式。Java方式的AIDL,在之前的文章中有介绍:Android远程接口之AIDL——Parcelable、in、out、inout简例此处,主要将前文中的Java方式用Kotlin方式翻译。AIDL方式通信,在Kotlin中遵循和Java中同样的规则,包括数据结构的限制,AIDL文件的编写。一、AIDL文件编写AIDL文件的编写,有特定的要

2021-07-10 15:04:15 380 3

原创 Kotlin进程通信------Messenger

进程通信原理与Binder底层说明,可参考:https://zhuanlan.zhihu.com/p/35519585本文主要介绍应用层上如何用Kotlin来使用Messenger进行进程通讯。Messenger是对底层Binder进行封装后的一套系统框架,在进程间通讯的表现是串行通讯。假设有进程A和进程B。如果要进行多次数据通讯,会是A-B-A-B-......这样的模式。Messenger的做法,简要说明就是:两个进程A(client)、B(service),A将一个Messenger信息发

2021-07-09 19:09:14 445 3

原创 框架手写系列---RxJava之从零开始

RxJava是我们日常在java与android中十分常用的一个库。它的作用是作为一个异步链式调用框架,将一个可能复杂的程序流程,转换为从顶向下的线性调用。避免了传统流程中,程序结构复杂以及可能的多重回调的样式。这里将从零开始,手写一个RxJava,从代码和设计模式角度做步步变换,一步步的完成该框架。一、传统观察者模式如何转换为链式调用都知道RxJava是基于观察者模式的。但在使用RxJava中,可以看到这与传统的观察者模式是有较大差别的。传统观察者模式:基本上是一个被观察者对应多个观察者。

2021-04-05 23:55:17 204

原创 字节码文件完整解析

java运行的机制:.java文件,经过编译后生成.class文件。java虚拟机加载.class文件运行代码逻辑。本文将对.class字节码文件做一次完整解析。(以姜新星老师的字节码层面分析 class 类文件结构为基础,做一次完整解析)https://kaiwu.lagou.com/course/courseInfo.htm?courseId=67#/detail/pc?id=1857一、class文件结构class文件由无符合数与表组成。无符合数以 u1、u2、u4、u8...

2020-09-28 00:09:28 478

原创 框架手写系列---Asm方式实现日志插入

asm与javassist作为修改字节码文件的两种常用方式,在编译过程中,可以动态修改class字节码文件。前文已用javassist方式实现热修复的前置步骤,本文用asm实现动态的给每个activity插入Log日志。一、插件的生成与依赖导入1、用该文章中的方法:Android中Plugin插件工程的自动生成自动生成一个android的插件模板;2、加入asm依赖,加入依赖后的插件build的格式如下:dependencies{ compile gradleApi() ..

2020-09-27 23:10:21 1023

原创 框架手写系列---AspectJ方式实现埋点上传框架

一、切面编程AOP、OOP是程序中经常涉及的概念。OOP--面向对象编程,java、c#等都是面向对象的编程语言,主张万物皆对象。AOP是一种编程思想,对OOP的有效补充,在具体代码中,可以针对任意方法、属性、类等,做一个切面处理。针对被标记(注解标记)的代码,做额外处理。AspectJ是AOP思想的实现方式,将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务

2020-08-16 16:02:31 388

原创 框架手写系列---javassist修改字节码方式,实现美团Robust热修复框架

本文用javassist方式,模拟美团Robust插件的前置处理:用插入代码的方式,针对apk中的每个方法都插入一段静态代码判断语句,用于控制是否启用热修复fix(也就是动态加载patch包到原apk中)。一、插件的生成与依赖导入1、用该文章中的方法:Android中Plugin插件工程的自动生成自动生成一个android的插件模板;2、加入javassist依赖,加入依赖后的插件build的格式如下:dependencies{ compile gradleApi() ..

2020-08-15 22:24:34 553

原创 框架手写系列---apt方式实现ARouter框架

一、ARouterARouter是阿里开源的组件通讯框架,在组件化开发上也是十分常用的框架之一。它的主要作用是各个activity之间,无需直接依赖,就可以直接跳转与传参。主要用处是为组件化的解耦,添砖加瓦。二、ARouter原理ARouter的核心原理,十分简单:用注解标识各个页面,注解处理器将该注解对应的页面存储到一个统一的map集合中。当需要页面跳转时,根据跳转的入参,从该map集合中取到对应的页面和传参,并跳转。核心在于,如何构建一个合理的map集合。三、手写实现根据原理

2020-06-28 19:21:32 599

原创 框架手写系列---apt注解处理器方式实现ButterKnife框架

一、ButterKnifeButterKnife作为常用框架之一,主要用于简化代码,减少重复代码。这里主要注重原理与核心,将分步骤手写它的核心代码。ButterKnife最常用的是去除代码中的findViewById,以注解的方式代替原有的代码,这里也从这里入手。Android之注解的使用——绑定android控件这是前文中通过反射方式实现,可对比查看二、原理说明public class MainActivity extends AppCompatActivity { .

2020-06-28 18:32:49 486

原创 框架手写系列---通过反射手写EventBus框架

一、EventBus原理与分析EventBus作为常用框架之一,从早期的EventBus2.0到目前3.+,经历了从反射到apt实现的转变,本文以原理分析为主,以反射方式实现早期的2.0框架。EventBus的核心在于:将被注解的方法(如@Subscribe注解方法),放到Map中。后续post的时候,根据post的参数类型(如Message类)在Map中找到对应的方法,并调用。将步骤分解后,就是以下两个主要操作:1、注册:通过特定的注解(如@Subscribe),将被注解的方法,添加到Ma

2020-06-28 16:05:38 218

原创 Android中Plugin插件工程的自动生成

一、Task作用Android Studio中对新建Gradle Plugin工程,并没有很好的支持,需要按要求新建特定的文件夹与文件。针对这种情况,通过task任务,自动生成一个这样的脚手架工程,可以自动生成Gradle Plugin的结构。二、Gradle Plugin的工程生成自动创建插件task: 以下是一个自动创建android中Plugin插件的task。直接将这个task复制到任意工程的build.gradle中,同步后,即可得到一个Plugin插件。 其中三个入

2020-06-27 11:39:42 857

原创 JetPack架构---LiveData、ViewModel搭建MVVM结构工程

一、MVVM与JetPackMVVM,是Model-View-ViewModel的简写。Model:数据,View:UI相关,ViewModel:UI相关数据与控制。JetPack提供的组件LiveData与ViewModel,十分契合该模式。(1)LiveData作为数据驱动的核心,驱动与监听Model数据变化。(2)ViewModel组件,作为页面数据管理的存储与控制中心。(3)Activity或Fragment,也就是MVVM中的View。MVVM的核心在于,通过数据...

2020-06-14 23:02:06 1307

原创 JetPack架构---LiveData的使用与示例

点此,查看 :LiveData的原理解析本文介绍:LiveData的单独使用、LiveData与ViewModel结合使用、LiveData的复杂使用一、LiveData的单独使用以一个整型数据为例。将该整型数据用MutableLiveData包装。在Activity中,监听count的变化:每次点击按钮,会生成随机数,并Toast表现。public class LiveDataActivity extends AppCompatActivity { //定义一个Mutable

2020-06-13 23:00:57 1146

原创 JetPack架构---ORM数据库Room的使用

Room库在 android在sqlite的基础上做的一个封装,让用户能更方便的使用数据库。Room库实际与GreenDao数据库类似,优于GreenDao的是:(1)Room库的sql语句,在编译时,编译器会做检查。(2)整体上使用更方便,也因是官方库,会有更好的支持。一、依赖在build中新增依赖def room_version = "2.2.5"implementation "androidx.room:room-runtime:$room_version"annot..

2020-06-07 20:53:17 345

原创 JetPack架构---Navigation的使用

一、概念JetPack中的Navigation组件,用于帮助用户实现导航。Navigation组件的主要应用场景是单activity配合多个fragment的场景,简化了过去fragment管理、导航复杂问题,提供了一套统一的标准。Navigation需要在Android Studio3.3或更高版本才可使用。二、示例2-0:添加依赖def nav_version = "2.3.0-alpha01"// Java language implementationimplemen

2020-05-24 22:44:32 1207

原创 JetPack架构---Lifecycle生命周期相关与原理

一、概念Lifecycle是JetPack提供的生命周期感知型组件。这也是JetPack系列架构的一个主要基础组件。LiveData、ViewModel都与之相关。Lifecycle常用于感知Activity、Fragment的生命周期。通过它可以编写与生命周期相关的解耦的代码。将Lifecycle传入某个类中,可以让该类与外部组件的生命周期关联。二、使用示例2-0:添加依赖参照官网提示,添加具体依赖(点击查看)2-1:定义一个观察者//定义一个观察者public class

2020-05-24 09:45:55 478

原创 JetPack架构---ViewModel作用、使用与原理

一、ViewModel的作用1、ViewModel用于管理与界面(Activity、Fragment)相关的数据。2、ViewModel让数据可在发生屏幕旋转等配置更改后仍能继续存在。3、ViewModel让Activity与Fragment共享数据更方便。ViewModel作为JetPack中一个重要部件,本身并不复杂。ViewModel总结起来就一个功能:保存数据,并且在ViewModel中的数据,不会因为配置变化(横竖屏转换)而丢失,只有在Activity真正被销毁的时候,才会真正..

2020-05-17 23:10:51 2329

原创 JetPack架构---LiveData特性、原理

一、LiveData的概念与优势官网介绍LiveData的概念是这样的:LiveData是一种可观察的数据存储器类。与常规的可观察类不同,LiveData 具有生命周期感知能力,意指它遵循其他应用组件(如 Activity、Fragment 或 Service)的生命周期。这种感知能力可确保 LiveData 仅更新处于活跃生命周期状态的应用组件观察者。归类的说,它有三个特点:1、它是一个数据存储器类,能持有数据;2、它可被观察者观察,当存在观察者时,它的数据变化会通知到观察者;3.

2020-05-16 23:35:35 568 2

原创 Android内存泄漏--基础介绍与延伸解析

Android内存泄漏的

2020-04-26 23:25:34 511

原创 Android内存泄露实时监测——LeakCanary(Android Studio+Eclipse)

前言LeakCanary已经开源一年多了,版本从1.3已经升级到1.4-beta2,不过还是有朋友没有试过使用。源码地址:https://github.com/square/leakcanary推荐看:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0510/2860.html当初也是看这篇才了解LeakCanary

2016-07-23 23:47:46 3582

原创 Java(Android)回调函数详解

一、前言本周有位入行开发不久的朋友问我回调究竟是个什么概念,在网上看了很多的回调函数解释,但是越看越乱。虽然回调函数这个梗已经不新鲜了,这里还是用书面的形式记录下。如果有了解的,就无需再看。二、概念概念上,这里引用百度百科的解释,如下:回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回

2016-07-22 20:09:35 4677

原创 Android之数据库—— 一个可配置的简易框架

前言Android自带的Sqlite数据库是日常开发中必用的。这里介绍一种用xml形式配置数据库的简易框架(库)。为什么要用这个框架?(1)因为XML格式的配置方式,层次明显,一目了然;(2)在扩展,对增减数据库中的表或者列,更加容易且不容易出错;(3)将配置统一在XML中,对以后的维护,会显得十分方便;(4)最后,是这个框架很简单。一、设计1、你首先要有一个XML

2016-07-05 21:56:24 4517

原创 Android之本地缓存——LruCache(内存缓存)与DiskLruCache(硬盘缓存)统一框架

本文参考郭霖大神的DiskLruCache解析,感兴趣的朋友可以先到http://blog.csdn.net/guolin_blog/article/details/28863651了解。一、前言该框架或者说库,主要是用于本地的图片缓存处理。数据的存入当你取到图片的元数据,会将数据存入硬盘缓存以及内存缓存中。数据的获取取数据的时候,先从内存缓存中取;如果没有取到,则从硬

2016-07-02 13:15:43 10473 1

原创 Android(Java)之多线程结果返回——Future 、FutureTask、Callable、Runnable

Android、Java中Runnable十分常见,在开新线程时,我们常用new Thread(Runnable).start() 或者线程池搭载Runnable。日常使用,在不需要线程返回时,使用的十分顺手。在需要线程返回时,我们也有办法搞定,比如外部变量控制流程、新增监听接口等。有了以上理由,Callable就被冷落了。其实Callable能让你的实现以及代码更简单。本文就是以

2016-06-20 20:28:50 7762

原创 Android之粗仿微信6.0——微信分界面

上一篇主界面我们弄好了,四个分界面还是空空如也。这里就加上四个简单的分界面。一、设计     微信分界面,有微信、通讯录、发现、我四个频道,这里我们全部采用ListView的方式来实现。     先看一下最后的效果图:      二、实施       四个频道,第一个频道是一种样式、第二个是一种样式、三、四样式是类似的。先看第一频道的实现。(1)第一频道

2016-06-18 16:29:49 8552 1

原创 Android之粗仿微信6.0——微信主界面

上一篇是微信的欢迎界面仿造,这里介绍的是欢迎页的下一步:微信主界面的粗仿。一、设计    首先这个是Android的微信6.0版本,与苹果的样式还是不一样的,至于哪个好用就是仁者见仁了。微信6.0版本的主界面构成,主要采用这两个控件:ViewPager+ActionBar。顶部,我们用ActionBar来实现,界面间的切换则用ViewPager来实现。微信6.0版本的主界面有个比较

2016-06-18 15:36:02 6355

原创 Android之粗仿微信6.0——微信6.0的欢迎界面

日常,在app的更新或者上新的时候,常常都有一个欢迎界面,用于介绍该版本的app有什么功能或者新增了哪些功能。这里以微信的6.0版本的欢迎界面为例,做一个粗仿,只是一个粗仿,并不一定是微信本身的做法。      这里先看一下欢迎界面编写完成后的效果:              一、设计      采用原始,不添加防腐剂的方式:ViewPager+多个XML+底部进度显示+末

2016-06-18 14:53:31 6259

原创 Java多线程简析——Synchronized(同步锁)、Lock以及线程池

Java多线程Java中,可运行的程序都是有一个或多个进程组成。进程则是由多个线程组成的。最简单的一个进程,会包括mian线程以及GC线程。线程的状态线程状态由以下一张网上图片来说明:在图中,红框标识的部分方法,可以认为已过时,不再使用。(1)wait、notify、notifyAll是线程中通信可以使用的方法。线程中调用了wait方法,则进入阻塞状态,只有等另一个

2016-04-25 00:56:44 45301 5

原创 Android之注解的使用——绑定android控件

注解介绍注解最早是在Java的JDK5中出现的概念,并在JDK5推出后风行天下。Android也继承了这种概念和语法。这里介绍一下,注解在android中用的最火的一个例子,对控件的注解。{对注解不熟悉的同学,可以看以下几个博文,写的很详尽:注解的基本解释:http://www.cnblogs.com/peida/archive/2013/04/23/3036035.htm

2016-04-18 22:15:47 2905

原创 Java常用之String.valueOf、toString、(String)

字符串类型的转型在java中常用的方法有标题中的三种。简单介绍:1、toString,需要保证调用这个方法的类、方法、变量不为null,否则会报空指针。2、String.valueOf。这个方法在使用的时候是有些特殊的。一般情况下,如果是确定类型的null传入,返回的是字符串“null”,而如果直接传入null,则会发生错误。3、(String) 字符串类型强转。需要保证的

2016-04-17 14:56:35 12181

转载 Stack的三种含义

学习编程的时候,经常会看到stack这个词,它的中文名字叫做"栈"。理解这个概念,对于理解程序的运行至关重要。容易混淆的是,这个词其实有三种含义,适用于不同的场合,必须加以区分。含义一:数据结构stack的第一种含义是一组数据的存放方式,特点为LIFO,即后进先出(Last in, first out)。在这种数据结构中,数据像积木那样一层层堆起来,后面加入

2016-04-17 13:42:10 543

原创 Android解析——json解析为javabean

json的解析,归根结底就是用JsonObject以及JsonArray来实现的。在日常中,当我们拿到一个较为复杂的json字符串的时候,用以上两个虽然能实现解析,但显得很麻烦。这里介绍下用Gson类来将json解析为javabean。用两个json字符串来分析:一、简单json字符串的解析String JSON_SIMPLE_STRING="{\"sitename\":\"JSO

2016-03-28 01:44:51 6127 1

原创 Android监听——回调模式与观察者模式

在android中,或者说java中,监听模式都是非常常见的。当你激发某个事件,常常你需要等待这个事件的返回。如果这个事件是个异步事件,那么监听总是显得很有必要。举个日常的例子,当你在android中连接网络并发送请求时,你就常常需要用到异步监听,用于监听并回调请求结果。这个就是异步回调。观察者模式与回调模式有很多的相似处,简单对比就是:回调是一对一的关系,只监听一个事件;观察者模式则

2016-03-24 00:14:59 8347 1

原创 Android之增量更新

Android增量更新简单描述:简单的说,就是在有一个旧版本A的情况下,想在这个基础上更新一个新版本B。那么,我们不需要下载整个B,只需要下载A与B的差分包。将差分包下载到本地后,与旧版本A整合为一个新的apk,这个apk大小与内容与新版本B完全一致,这就是增量更新。假如,A的大小是5M,B的大小是8M,那么差分包的大小S=(8-5)+差异文件的依赖(如上下文)。差分包的大小会大于3M。

2016-02-29 21:01:38 970

原创 Android之进程通讯——广播

不同进程间的通讯,其实Android的四大组件都可以实现。日常,我们用广播,在一个独立的app中使用的较多。或者是系统和app之间使用。在两个自定义的app之间,我们也写个例子,表明广播是很好用的!!在这里就自定义两个app:BroadCastA(后面称为A)、BroadCastB(后面称为B)。A发送广播,B接收广播。例子如下:BroadCastA:packa

2016-02-22 17:15:58 3136 1

原创 Android图片处理之高斯模糊示例——仿微信朋友圈照片模糊效果

微信朋友圈最近出了一个模糊照片效果,一看之下很有新意。这里就是仿微信朋友圈的一个图片模糊效果实现。使用了一个开源的FastBlur(高斯模糊——毛玻璃效果)。实现的方法很简单,只要一句代码即可。Bitmap bitmap= FastBlur.doBlur(BitmapFactory.decodeResource(getResources(), R.drawable.blur), 10,

2016-02-01 13:25:47 6226 4

Android之数据库—— 一个可配置的简易框架

这里介绍一种用xml形式配置数据库的简易框架(库)。

2016-07-05

Android之本地缓存——LruCache(内存缓存)与DiskLruCache(硬盘缓存)统一框架

http://blog.csdn.net/yangzhaomuma/article/details/51810418 该框架或者说库,主要是用于本地的图片缓存处理。 数据的存入 当你取到图片的元数据,会将数据存入硬盘缓存以及内存缓存中。 数据的获取 取数据的时候,先从内存缓存中取; 如果没有取到,则从硬盘缓存中取(此时如果硬盘缓存有数据,硬盘缓存会重新将数据写入内存缓存中); 如果硬盘缓存中没有取到,则从网上重新获取元数据;

2016-07-02

Android(Java)之多线程结果返回——Future 、FutureTask、Callable、Runnable

http://blog.csdn.net/yangzhaomuma/article/details/51722779

2016-06-20

Android之仿微信6.0——粗仿

详细描述 http://blog.csdn.net/yangzhaomuma/article/details/51705590

2016-06-18

Android之注解的使用——绑定android控件

应该都知道XUTILS中有这个控件注解。这边文章的作用是当你想用这个功能而不想用框架中的其他部分时,你可以使用内中方法。 http://blog.csdn.net/yangzhaomuma/article/details/51183110

2016-04-18

Android解析——json解析为javabean

Android解析——json解析为javabean

2016-03-28

Android监听——回调模式与观察者模式

说明: http://blog.csdn.net/yangzhaomuma/article/details/50967851

2016-03-24

增量更新工具以及Android端源码实现

Android增量更新简单描述: http://blog.csdn.net/yangzhaomuma/article/details/50767966 简单的说,就是在有一个旧版本A的情况下,想在这个基础上更新一个新版本B。那么,我们不需要下载整个B,只需要下载A与B的差分包。将差分包下载到本地后,与旧版本A整合为一个新的apk,这个apk大小与内容与新版本B完全一致,这就是增量更新。

2016-02-29

Android进程间通讯——多进程共用SharedPreferences

在使用SharedPreferences进行进程数据共享时,我们发现,有些虽然过时了,但是实际上还是可以用的。 只是Google不建议大家这么干了。所以这篇文章只是一个介绍实现,科普。 http://blog.csdn.net/yangzhaomuma/article/details/50718081

2016-02-22

Android之进程之间通讯——广播

不同进程间的通讯,其实Android的四大组件都可以实现。 日常,我们用广播,在一个独立的app中使用的较多。或者是系统和app之间使用。 在两个自定义的app之间,我们也写个例子,表明广播是很好用的!! http://blog.csdn.net/yangzhaomuma/article/details/50717945

2016-02-22

Android之自定义角标(更新红点)——BadgeView

Android之自定义角标(更新红点)——BadgeView

2016-01-26

Android远程接口之AIDL——Parcelable、in、out、inout简例

Android远程接口之AIDL——Parcelable、in、out、inout简例 Parcelable in out inout AIDL例子中体现使用方式 详细介绍: http://blog.csdn.net/yangzhaomuma/article/details/50576017

2016-01-25

Andorid动画——PoroertyAnimator属性动画

Andorid动画——PoroertyAnimator属性动画 Poroerty Animator LayoutAnimation 补间动画 帧动画 等

2016-01-20

Andorid动画——补间动画与帧动画

Andorid动画——补间动画与帧动画 详细介绍补间动画与帧动画的源码

2016-01-17

Android中的OAuth2.0_QQ第三方授权登录

Android中的OAuth2.0_QQ第三方授权登录

2016-01-10

Android序列化——Serializable与Parcelable

Android序列化——Serializable与Parcelable

2016-01-03

非对称加解密——RSA加密、解密以及数字签名

非对称加解密——RSA加密、解密以及数字签名

2016-01-02

Android线程结束——合理的结束你想结束的线程

Android线程结束——合理的结束你想结束的线程

2015-12-22

Android捕获异常处理——UncaughtExceptionHandler

Android捕获异常处理——UncaughtExceptionHandler

2015-12-17

Android多媒体——图片资源获取的5种姿势

Android多媒体——图片资源获取的5种姿势 相册图片 拍照图片 本地图片 网络图片 项目图片

2015-12-15

Android多媒体应用——短信收发

Android多媒体应用——短信收发源码

2015-12-10

Android人脸识别源码——详细代码解释

Android人脸识别源码——详细代码解释

2015-12-06

谷歌语音识别-百度语音识别-android

谷歌语音识别-百度语音识别-android

2015-12-05

Android手势识别——上下左右滑动、屏幕上下左右中区域处理

Android手势识别——上下左右滑动、屏幕上下左右中区域处理

2015-12-04

ContentProvider自定义以及使用系统ContentProvider

ContentProvider自定义以及使用系统ContentProvider

2015-12-01

Android数据存储——SharedPrefences、File、Sqlite

Android数据存储——SharedPrefences、File、Sqlite 类与activity实现

2015-11-21

C# winfrom 带参数与无参数的线程(可更新界面UI)

C# winfrom 带参数与无参数的线程(可更新界面UI) 线程的开启关闭 带参与无参使用 线程更新界面信息

2014-09-25

c++读写所用方法集成

c++读写所用方法集成,里面将常用的c++读写方法写成函数,可直接调用。

2011-09-03

asp.net + flash 批量图片上传

asp.net + flash 批量图片上传 无刷新 可一次多选 有图片预览 有进度条

2010-07-30

空空如也

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

TA关注的人

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