
ANDROID
文章平均质量分 52
andboby
当前在某世界五百强上市公司担任技术总监及其首席架构师,曾经供职于中兴通讯股份有限公司,担任系统架构师一职;曾经2011年~2017年供职金山软件,从事移动WPS的开发,是android版的WPS核心开发人员,欢迎各位一起学校交流!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android项目混淆ProGuard详解
Android项目混淆ProGuard详解原创 2017-05-22 19:40:17 · 611 阅读 · 0 评论 -
AIDL详解之Messenger
本技术博文计划分为三个系列: 一、AIDL的基础,http://blog.youkuaiyun.com/wangqiubo2010/article/details/78601666。 二、AIDL之Messenger.。 三、AIDL终极篇之AIDL架构设计。本博文是AIDL系列的第二篇,Messenger。 Messenger的本质,只要记住以下三点即可。 1、Messenger内部已经封装好,原创 2017-11-23 15:10:05 · 382 阅读 · 0 评论 -
android 沉浸式标题栏
1、沉浸式标题栏,中心思想就是,自定义的状态栏打通原始系统的,并且增加一个标题栏,如图所示。 2、以上效果分为2部分,第一部分就是和状态栏完全同尺寸的自定义状态栏,第二部分就是和自定义背景颜色一样的标题栏。3、具体代码如下。<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" ...原创 2018-02-11 09:49:25 · 642 阅读 · 0 评论 -
android 自定义表格
本文通过ScrollView 嵌套 ListView来实现滚动表格功能。 实现效果如下图: 如上图所示实现功能如下: 1、列表头 和 数据 可以左右滑动,方便超出屏幕数据查看。 2、行表头 和 数据 可以上下滑动,方便超出屏幕数据查看。 3、左右滑动时 行表头固定,上下滑动时 列表头固定。实现代码如下:package com.uuch.android_zxinglibrary...原创 2018-02-11 16:22:40 · 1585 阅读 · 1 评论 -
自定义PopWindow详解
PopWindow 是一个弹出框,核心方法在以下: a、showAsDropDown(View anchor): 显示在某个控件 anchor的正下方。 b、showAsDropDown(View anchor, int xoff, int yoff): 显示在某个控件anchor的相对位置,xoff 为左右偏移(左正右负),yoff为上下偏移(上负下正)。 c、showAtLocat...原创 2018-02-12 10:42:20 · 688 阅读 · 0 评论 -
Handler运行机制详解
1、android线程间的通讯,都是经过Handler在线程之间的切换。包括耗时任务的结果传送到UI线程等。2、Handler使用包括2种形式,一种是主线程和子线程的交互,另外一种是子线程和子线程之间的交互。3、Handler的创建,主线传入Looper.getMainLooper;如果是在子线程中创建,则需要在Looper.prepare(); 和 Loop.loop之间创建,否则会抛出...原创 2018-04-21 21:48:34 · 651 阅读 · 0 评论 -
深入剖析ThreadLocal
ThreadLocal即是本地线程,ThreadLocal为每个线程创建一个变量副本,只有本线程才可见,因此就解决了多线程并发问题,ThreadLocal维护一个ThreadLocalMap表,本表即是存储副本的map表。 详见以下链接。 http://www.cnblogs.com/dolphin0520/p/3920407.html...原创 2018-04-24 17:52:19 · 199 阅读 · 0 评论 -
MVC 、MVP详解 及其 MVC 在安卓系统中的具体应用
MVC框架MVC是将业务逻辑、界面进行解耦,通过中间的Control对界面数据和操作进行处理,然后将处理结果反馈给业务逻辑层也就是Modle。Modle:业务逻辑层,本层是应用数据的核心,例如数据库和表View:视图层,其是接收用户操作 和对model数据的展示。Control:控制器,接收用户输入和操作,例如增删改成数据库,然后将操作数据录入model。MVC虽然通过control...原创 2018-04-24 17:51:46 · 210 阅读 · 0 评论 -
android和设计模式随谈之装饰模式
1、装饰模式。装饰模式的现实生活理解,例如现在有一扇窗户,窗户只有普通边框和玻璃,有一天我需要把这散窗口换成有花纹边框的窗户。这个时候怎么办呢?有2种方式,第一种去买一些装饰花边,对窗户的边框进行装饰一下;第二种换掉目前的窗户,买一扇带花纹边框的窗户,替换过程有两种代价,一是替换后花的金钱(对应计算机资源)肯定会更多,并且换窗户还浪费人;第二种如果市场没有这样窗户,那么工厂需要增加一条带花纹...原创 2018-04-24 17:51:24 · 166 阅读 · 0 评论 -
ListView 和 RecyclerView 比较
1、ListView 与 RecyclerView 均是通过复用ItemView的原理来展示大量数据的控件。 2、ListView 使用了2级缓存,RecyclerView使用了4级缓存,多了对ItemView的缓存mCacheViews和增加一个共用缓存池RecyclerViewPool。 3、 mActiveViews(ListView)和mAttachedScrap(RecyclerVi...原创 2018-04-24 17:51:34 · 377 阅读 · 0 评论 -
android和设计模式随谈之原型模式(Prototype)
原型模式一般采用clone来实现,通过拷贝来获取和这个对象一模一样的数据。clone分为浅拷贝和深拷贝,浅拷贝只会备份一些值变量,例如int,float,double等,对于引用变量,则只是拷贝了一份引用,如果改变本应用的值,其他浅拷贝的引用变量都会变化;深拷贝的话,值变量和引用变量都会增加一个副本,克隆对象相互不影响。克隆的出现,是因为对象创建的复杂度和资源消耗可能会大大高于克隆;是采用克...原创 2018-04-24 17:51:14 · 307 阅读 · 0 评论 -
android和设计模式随谈之策略模式
软件开发过程中,为了实现某一个功能可以有多重算法或者策略,把各种算法封装起来,可以相互替代,这种模式就是策略模式讲各种算法抽象成统一接口,根据业务需求,传入不同的算法,则就实现了动态替换。android中的策略模式应用实例,值动画中的插值器模式,有三种 匀速插值器、加速减速插值器、减速插值器。这三种插值器,根据不同的情况可以相互替换。android 中的策略模式另外一个应用就是ListV...原创 2018-04-24 17:51:03 · 163 阅读 · 0 评论 -
JAVA多线程系列之生产者消费者
要实现多线程中的生产者和消费者,有以下2中方式。 1、通过wait、notify或notifyAll来实现。 2、通过Blockingqueue来实现。原创 2018-03-14 10:01:36 · 198 阅读 · 0 评论 -
android 屏幕适配方式
1、onCreate中setContentView的时候,根据获取的手机设备屏幕参数来选择不同的配置文件。 2、通过android会根据不同的屏幕尺寸来选择不同配置文件夹的配置文件。android 3.2版本之前的。 layout-large,layout。7寸以上的屏幕android系统会选择layout-large定义的配置文件,7寸以下的系统自动加载 layout中的配置文件。...原创 2018-04-24 17:52:28 · 392 阅读 · 0 评论 -
SpareArray 原理 及其 和HashMap的性能比较
SpareseArray 也是通过键值对存储数据,只是key为整形int , 类似于key = Interger 的HashMap,但是SpareseArray 的key 为 int 非 Interger ,更省空间。SpareArray 意为稀松数组,其结构类似于数组结构,依次排开;HashMap是散列列表,根据hash值来存储;因此SpareArray 会比 HashMap节省很多空间。...原创 2018-03-13 14:31:58 · 2627 阅读 · 0 评论 -
Cordova 自定义插件开发
1、安装nodejs(自动包含npm)2、在命令行中通过npm语句npm install -g cordova安装cordova(如果提示网络连接失败,需要设置网络代理,搭理网址:npm config --global set registry http://registry.cnpmjs.org)3、在命令行里通过安装成功的cordova,创建一个混合项目,创建语句:cordova...原创 2019-04-21 18:25:55 · 332 阅读 · 0 评论 -
AIDL详解之AIDL基础
本技术博文计划分为三个系列: 一、AIDL的基础。 二、AIDL之Messenger. 三、AIDL终极篇之AIDL架构设计。一,AIDL的本质可以从以下来理解。 1、AIDL专门为android中的跨进程通讯设计。通过以下对其他跨进程通讯的几种方式的弱点来解析AIDL的优点。ContentProvider、Broadcast 这两种底层也是通过IBinder来实现,其使用范围为系统级的(重原创 2017-11-22 11:48:02 · 593 阅读 · 0 评论 -
AIDL终极篇之AIDL架构设计
本技术博文计划分为三个系列: 一、AIDL的基础,http://blog.youkuaiyun.com/wangqiubo2010/article/details/78601666。 二、AIDL之Messenger,http://blog.youkuaiyun.com/wangqiubo2010/article/details/78615047.。 三、AIDL终极篇之AIDL架构设计。本文为AIDL设计的终原创 2017-11-24 16:22:53 · 745 阅读 · 0 评论 -
View的事件分发机制详解
View事件的分发机制详解。 1、dispatchTouchEvent(Activity) -> dispatchTouchEvent (FatcherViewGroup) -> onInterceptTouchEvent(FatcherViewGroup) -> dispatchTouchEvent ( SonViewGroup) -> onInterceptTouchEvent(SonViewGroup) ..........原创 2017-05-24 01:40:56 · 426 阅读 · 0 评论 -
JAVA类成员初始化顺序详解
最全的JAVA类成员初始化顺序原创 2017-05-12 22:47:04 · 312 阅读 · 0 评论 -
Android 子线程和UI线程(主线程)的几种交互方式
Android 子线程和UI线程(主线程)的几种交互方式原创 2017-05-25 10:29:05 · 2520 阅读 · 0 评论 -
Binder invocation to an incorrect interface 异常分析
Binder invocation to an incorrect interface 异常分析原创 2017-05-17 12:04:13 · 13018 阅读 · 1 评论 -
安卓Animation深入分析和讲解
安卓Animation 1、Tween补间动画:translate,rotate,scale,alpha 2、Frame动画。AnimationDrawable(资源文件为drawable的文件,标签为 animaton-list),帧动画主要是图片切换。 3、属性动画:包括AnimationSet(属性动画集合),ValueAnimation(只是动画本身,无法设置给属性),ObjectA...原创 2017-06-02 17:53:18 · 342 阅读 · 0 评论 -
Android线程池详解
android中经常会用到多线程,因为安卓中如果5S中没有响应就会出现ANR,因此耗时的任务必须放在子线程中使用。这就涉及到UI线程(main线程)和子线程的交互。其二者之间的交互涉及到Handler,Looper,message。 每次创建线程都有系统资源的开销,不可能无限的创建线程,线程过多最终会带来系统的反应速度下降,因此就必须控制线程数量,控制线程的最好办法就是设计线程池,让线程可以原创 2017-06-22 15:01:49 · 331 阅读 · 0 评论 -
Android的json详解
android中json编码和解码最常用的有三种: (1)、安卓自带的org.json.JSONArray、JSONObject。 (2)、谷歌提供的Gson包。 (3)、阿里巴巴的fastJson。1、org.json中的JSONObject和JSONArray。 a、JSONObject是JSON对象的键值对,例如:{“name”:”bobo”, “age”:”10”}。原创 2017-06-09 17:57:35 · 3336 阅读 · 0 评论 -
RemoteViews详解
1、本问将以Notifaction(通知栏) 和 AppWidgetProvider (桌面小部件)为切入点来讲解RemoteViews。 2、RemoteViews 继承了 Parcable,因此其对象具有跨进程的能力。 3、因为RemoteViews 可以跨进程,因此无论是通知栏还是桌面小部件,其他进程都可以生产RemoteViews然后通过广播或者Binder进行跨进程传送。 4、但是,原创 2017-07-24 17:16:37 · 1303 阅读 · 0 评论 -
Gradle自定义插件详解
首先认识plugin,plugin采用groovy语言来编写。如果你对groovy语言不是很熟悉,请首先过一下groovy语法结构,groovy是运行于JVM的敏捷脚本语言,其最后会被编译成标准的JAVA语言。groovy语言最核心的应该是闭包,JAVA8引入的最新特性拉姆表达式,即是一个闭包,请参考相关文章,这里就不详细介绍了。build.gradle引用插件语法为:apply plugin: '原创 2017-08-02 18:00:06 · 5875 阅读 · 0 评论 -
Android自定义控件的自定义属性2种实现方式
本文讲通过一个自定义按钮来讲解自定义控件中的自定义属性的2种实现方式。 首先,本AutoButton实现功能是按钮的文字可以根据自定义的行数对文字进行自动缩放,例如maxLines = 2,那么本按钮无论多少文字,最多只显示2行,当超出2行则字体会进行自动缩放,然后再重新mesure。 1、方式一,直接在引用的自定义控件中设置自定义属性。 贴上代码如下:package com.example.原创 2017-08-14 17:22:37 · 710 阅读 · 0 评论 -
AsyncTask原理详解!
在项目中子线程和UI线程交互过程中,经常会用到AsyncTask,AsyncTask使用场景有网络访问、上传文件等。AsyncTask的核心原理有以下几条,请配合后面详解来理解。 1、 AsyncTask主要使用的4个函数,onPreExecute、doInBackground、 onProgressUpdate、onPostExecute。 2、onPreExecute是在AsyncTa...原创 2017-09-05 18:00:14 · 1735 阅读 · 0 评论 -
jcenter,mavenCenter仓库创建、发布等完整流程详解
本文将详细讲解2个maven仓库jcenter、mavenCenter的创建、注册、发布、上传及其怎样将jcenter中发布的文件自动上传到mavenCenter。何为jcenter,mavenCenter?jcenter。jcenter是一个由 bintray.com维护的Maven仓库 。你可以在这里看到整个仓库的内容。我们在项目的build.gradle 文件中如下定义仓库,就能使用jcent原创 2017-08-28 17:36:54 · 3607 阅读 · 0 评论 -
Android水波纹的另类实现
本文将以动画形式来实现水波纹效果,核心思想就是点击的时候通过执行一张图片的动画来达到水波纹效果。首选把水波纹效果的代码贴出来,本文使用了三个类,如下。类WaterRippleActivity.javaimport android.app.Activity;import android.os.Bundle;import com.example.kingsoft.CustomAdapter.R;im原创 2017-08-31 15:23:49 · 396 阅读 · 0 评论 -
Fragment详解系列一什么是Fragment
Fragment打算分成3个系列来讲。 系列一,讲解Fragment的基本用法,包括基本定义,Fragment的生命周期,Fragment的常用方法,Fragment的回退栈,Fragment和Activity之间的交互。 系列二,讲解ViewPager的基本用法及其原理。 系列三,讲解FragmentPagerAdapter 和 FragmentStatePagerAdapter使用及其原理原创 2017-09-27 17:53:32 · 1130 阅读 · 0 评论 -
Fragment详解系列二ViewPager
本文章是Fragment详解系列中的第二篇。本文将以一个炫耀式的View切换来详解ViewPager的使用。先来了解下ViewPager的基本使用,ViewPager使用场景即是多个View直接可以进行切换。ViewPager关联的最重要的就是PageTransformer 和 PagerAdapter,后续会进行详解。ViewPager中主要使用的方法解析如下: setOffscreen原创 2017-11-02 15:25:18 · 328 阅读 · 0 评论 -
dex2jar 和 jd-gui 的安装与使用
https://blog.youkuaiyun.com/katrinawj/article/details/80016315转载 2019-05-10 14:41:43 · 219 阅读 · 0 评论