自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

原创 Android字符串处理-emoji

一、名词解释一个完整的Unicode字符叫代码点/CodePoint,而一个Java char 叫代码单元code unit;代码点,是从Unicode标准而来的术语,Unicode标准的核心是一个编码字符集, 它为每一个字符分配一个唯一数字。Unicode标准始终使用16进制数字,并且在书写时在前面加上U+, 如字符“A”的编码为“U+0041”。代码点是指可用于编码字符集的数字。编码...

2019-01-13 11:30:06 1638

转载 java拆箱和装箱详解(转)

需要注意的是:当 "=="运算符的两个操作数都是 包装器类型的引用,则是比较指向的是否是同一个对象,而如果其中有一个操作数是表达式(即包含算术运算)则比较的是数值(即会触发自动拆箱的过程)。另外,对于包装器类型,equals方法并不会进行类型转换。 自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题。本文先讲述装箱和拆箱最基本的东西,再来看一下...

2018-11-15 14:19:31 224 1

翻译 SDK的开发和设计总结(集成文章)

一、关于SDK的解释SDK是Software Development Kit的缩写,译为”软件开发工具包”,通常是为辅助开发某类软件而编写的特定软件包,框架集合等,SDK一般包含相关文档,范例和工具.SDK可以分为系统SDK和应用SDK.所谓的系统SDK是为特定的软件包,软件框架,硬件平台,操作系统等应用时所使用的开发工具集合.而应用SDK则是基于系统SDK开发的独立于具体业务而具有特定功...

2018-11-05 14:21:08 12662 1

原创 View测量大小的影响因素汇总

之前面试的时候遇到一道问题,父View的属性(match_parent和wrap_content)对测量子view的影响,当时很蒙,没有回答上来,最近在看View源码的时候发现里面早已给出了标准答案,先上源码public static int getChildMeasureSpec(int spec, int padding, int childDimension) { //父...

2018-08-01 22:49:07 285

原创 Matrix以及图片适配计算相关

一、图片缩放的计算方法int mScreenWidth; // 屏幕宽度int mScreenHeight; // 屏幕高度int mImageWidth; // 图片宽度int mImgaeHeight; // 屏幕高度float imgRatio = (float)mImageWidth / (float) mImgaeHeight;float screenRatio = (f...

2018-07-24 14:50:41 455

原创 华为手机的旋转动画失效

在开发过程中发现华为手机的一个问题,华为手机在android7.0系统上面,setRotation的旋转动画无效,坑爹!!

2018-02-26 17:08:46 1418 1

原创 TimeoutExceptions的问题解决

今年10月份以后我们产品线的crash平台莫名出现了大量的TimeoutExceptions,crash的路径页面全部为空,log日志里面有多次的gc操作;一开始以为是网络请求方面的问题导致的,然后仔细排查了工程代码,也没有发现可以点。这个问题一直悬了将近3个月,直到最近crash率超高红线,开始重视此问题,四处请教大神,终于找到了解决方案。国内手机厂商真是非常不负责,ROM随便改。下面直接给

2018-01-20 18:49:28 20919

原创 RecycleView获取当前屏幕中itemview的显示区域

在做项目需求时,遇到一个case,需要计算当前屏幕中所以ziview展示的高度,中间走了很多弯路。废话不多说,直接上代码public int getCurrentViewIndex() { int firstVisibleItem = mLineManager.findFirstVisibleItemPosition(); int lastVisib

2017-09-18 12:44:57 14601 1

原创 module依赖冲突

最近对项目工程中的module模块统一梳理,在打包过程中发现下面的一些错误信息,如下:Execution failed for task ':excelSior:packageAllDebugClassesForMultiDex'.> java.util.zip.ZipException: duplicate entry: android/support/v4/util/TimeUtil

2017-05-31 12:12:10 882

转载 android网络库重构思路

重构:1.双手奉上SDK的地址: https://github.com/xieyangyi/FrameApp.git https://github.com/xieyangyi/FrameSdk.git它有如下优点:1)提供了对不同网络库的统一封装。大家可以使用封装后的API来开发,更换底层网络库不需要更改app代码。2)支持网络请求Request

2017-05-31 12:04:59 345

原创 java.lang.IllegalStateException: Observer android.widget.AbsListView$AdapterDataSetObserver@42efeec8

AdapterDataSetObserver was not registered

2016-12-15 23:31:03 3246 1

原创 蚂蚁freeline安装教程以及问题解决

介绍Freeline是一款针对Android平台的增量编译工具, 项目地址虽然最新的版本是0.7.3.1,但是这个版本增量编译会bug,推荐用0.7.2第一步配置project-level的build.gradle,加入freeline-gradle的依赖:buildscript { repositories { jcenter() }

2016-11-01 22:37:19 7278

转载 mac环境的apk反编译工具使用

mac环境的apk反编译工具使用

2016-08-30 18:23:04 327

转载 Andfix的apkpatch的工具使用

Andfix的apkpatch的工具使用

2016-08-30 10:49:43 4567

原创 Mac上面利用charles抓取https的包(android手机版)

Mac上面利用charles抓取https的包(android手机版) 一、更新charles版本需要下载最新的charles版本至3.11;  二、配置help->SSLProxying-> Install Charles Root Ceriticate 出现下图:  找到Charles Proxy Custom Root Certificat

2016-07-01 16:10:26 9915

原创 sql好文分享

1. SQL中Group By的使用:http://www.cnblogs.com/rainman/archive/2013/05/01/3053703.html2.SQL基础-->多表查询: http://blog.csdn.net/leshami/article/details/5563199

2016-06-30 17:30:12 278

原创 Class.forName反射中$的含义

Class inClazz = Class.forName("ClassTest$Inner") 取ClassTest类的内部类Inner的Class。

2016-06-21 11:09:56 616

原创 查看android项目方法总数的方法(防止超过65535限制)

Android开发中有对APK的方法数量做限制,不能超过65535.下面为大家演示如何利用工具查看apk的方法总数:1.下载源码;https://github.com/mihaip/dex-method-counts 将zip包放在一个目录下面,打开压缩包。2.在mac下,进入到dex-method-counts的目录,利用gradle命名(如果没有请,自行安装,参考文

2016-06-15 17:23:47 1875 2

原创 标题吸顶的viewpager实现方案

因项目中需要实现具有吸顶效果的viewpager,找到了几个原型demo,供大家学习。第一个项目作者的工程打不开,因此本人自己将代码复制过来,新建了一个工程,下载地址如下:http://relex.me/viewpagerheaderdemo/https://github.com/ongakuer/ViewPagerHeaderScr

2016-05-15 20:56:01 1014 1

原创 activity栈管理的3种方式

背景:在android开发过程最常用的组件非activity莫属。通过分析activity的各种跳转,运行同学可以分析用户的各种行为,更重要的一点是在做插件化的过程中,我们经常会对activity进行各种反射,来实现各种需求。通过对"android.app.ActivityThread"进行反射,获取android系统的activity栈。遍历activity栈可以得到

2016-04-16 22:28:42 8637

转载 ComponentName类的使用

在进行activity跳转时,大家经常会使用intent的setClass,除了setClass还可以使用ComponentName 。//组件名称,第一个参数是包名,也是主配置文件Manifest里设置好的包名 第二个是类名,要带上包名 ComponentName com = new ComponentName("com.huawei", "com.huawei.Test1");

2016-03-21 10:30:46 946

转载 java.lang.RuntimeException: Parcelable encounteredClassNotFoundException reading a Serializable obje

crash收集平台中,爆出一个crash:java.lang.RuntimeException: Parcelable encounteredClassNotFoundException reading a Serializable object (name = Custom)。大量搜索后,发现造成原因如下:针对序列化对象而出现的拒绝服务主要是由于应用中使用了getSe

2016-03-21 10:04:41 5955 3

原创 自定义View的绘制流程初探(含实例)

一直想梳理view的绘制原理,老是借口没有时间而一次一次浪费珍贵的自学时间,今天终于狠下心耐着性子写点小结。 Activity获得焦点时,就开始绘制自己的布局,androidframework 将会处理绘制过程,activity只需提供他的布局根节点。 上述流程主要调用了VIEW的measure,layout和draw三个函数。 绘制过程从布局的根

2016-03-16 10:09:58 557

转载 fragmenTransaction和fragment生命周期

在Android中,对Fragment的操作都是通过FragmentTransaction来执行。而从Fragment的结果来看,FragmentTransaction中对Fragment的操作大致可以分为两类:显示:add() replace() show() attach()隐藏:remove() hide() detach()对于每一组方法,虽然最后产生的效果类似,但方法背后

2016-03-11 18:22:56 297

转载 Viewpager中的Fragment第一次点击时加载,然后保存其状态

之前遇到了在ViewPager中使用Fragment的情况,结果遇到了一个问题就是当viewPager划过去,再滑动回来后之前的fragment又回到了初始化的状态。所以就研究了一下。网上搜了一下,大部分都是说这个FragmentPagerAdapter和FragmentStatePagerAdapter的。总结下来,主要是FragmentPagerAdapter会将每一个生成的fragm

2016-03-11 18:18:33 981

原创 @NotNull parameter 'aFileName' of

android studio编译时报错IllegalArgumentException: Argument for @NotNull parameter 'aFileName' of com/intellij/openapi/util/io/FileUtil.toSystemIndependentName must not be null原因:本地的sdk版本不存在build.

2016-03-11 18:13:49 833

原创 android的sql表单新增字段- alter table

在android开发过程中,不可避免的遇到sqlite数据库升级,表单的字段变化。数据库升级最头疼的两种情况是:原表单新增字段和表单数据迁移。sqlite提供了Alter table命令,允许用户重命名表单或者在已有表单中新增字段。表单末尾添加新字段代码:ALTER TABLE sourceTable ADD COLUMN NEW_DATE VARCHAR(60) NO

2016-03-11 18:08:20 2988

原创 android数据存储在文件小结

android数据存储在文件小结利用bufferedReader进行数据存储要比用inputStream的速度要快一下。bufferdReader的用法比较复杂,它一次性读取大量的数据,减少IO次数,提升效率。而inputStream是一个字节一个字节的读取,每次读取都会执行一次 IO。FileOutputStream结合FileOutputStream使用。BufferedInput与Buffer

2016-02-01 10:45:46 356

原创 android studio 开发经验积累

一、查看activity启动的总时间只要获取到启动ActivityManager所需要的时间,可以在adb使用下面的命令:adb logcat | grep ActivityManager也可以使用如下命令:adb logcat -c && adb logcat -s ActivityManager | grep "Displayed"其中”Displ

2016-01-10 22:28:49 335

原创 Android动态加载技术介绍之一

1. Android动态加载技术 系列索引 http://segmentfault.com/a/11900000040862132. Android动态加载入门 简单加载模式  http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/1130/3732.html3. Android动态加载基础 ClassLoader工作机制  

2016-01-07 22:43:47 250

原创 动态修改背景图片的颜色

android中利用shape构造的图片时,经常会用一个图片配N个颜色,并且shape是静态,如果要使用多个颜色的shape,静态写多个shape的文件是非常不好的,那可不可以动态改变shape的背景颜色而不变化基本形状呢?当然是可以的啦 <corners android:radiusTopLeft="4dp" android:radiusTopRight="4dp"

2016-01-04 20:12:04 733

原创 一些疑难问题解决方法

1.crash:Android Exception 8(Couldn't read row 0, col -1 from CursorWindow)(1)原因1:字段不正确 c.getString(c.getColumnIndex("_ID")//字段名称不正确(2)query的中projection 字段没有补全public final Cursor query(

2015-12-03 23:25:39 465

转载 AnimatorSet播放顺序自己随心定制

AnimatorSet提供了一个把多个动画组合成一个组合的机制,并可设置组中动画的时序关系,如同时播放,顺序播放等等。下面的例子可以动画一个接着一个进行播放:public void move(View view ){ ImageView imageView=(ImageView)findViewById(R.id.imageView); ObjectAnimat

2015-11-24 22:59:07 4921

原创 android的uri以及UriMatcher讲解

1. Uri通用资源标志符(Universal Resource Identifier, 简称"URI");Uri代表要操作的数据,Android上可用的每种资源-图像、视频片段等都可以用Uri来表示。URI一般由三部分组成:访问资源的命名机制。存放资源的主机名。资源自身的名称,由路径表示。Android的Uri由以下三部分组成:"content://"

2015-11-09 20:39:40 1442

原创 Android studio error gradle peer not authenticated

Android stuido 导入工程编译时,报错:peer not authenticated;处理方法:在工程的build.gradle文件里面替换如下代码:buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tool

2015-11-09 10:53:16 476

原创 三星等低端手机OOM解决方法

做项目时,从server端请求了3M左右的数据,然后进行json解析,数据存储。在中高端手机上面测试没有问题,后来使用一款三星手机,一直报OOM,导致crash。每款手机都会给app分配固定的内存,供其是使用,比如:–G1: 16MB– Nexus One: 32MB如果超过这个限制,则会报OOM。那怎么解决这个问题呢,最简单的方法是针对android3

2015-11-06 21:24:29 1520

翻译 listview嵌入scrolview冲突解决方法

方法一 手动设置listview的高度在listview.setAdapter或者adapter.notifyDataSetChanged()之后,可以让不能完全显示的listview正确的显示在其父控件ScrollView中。需要注意的是,对于listview中的每个item的填充布局,布局的根必须是LinearLayout控件;否则,listview就不能通过onMeasure()正确

2015-11-05 19:09:10 523

翻译 onFling()与onScroll()的区别

在手势检测中,onFling()与onScroll()有点类似,一个为“滑动”,一个为“拖动”。都是手指在屏幕(或某一组件)上移动一段距离后触发。然而二者毕竟是有区别的:(下面结论是在我自己的demo中亲自操作得出的结果,有不对的请指出错误)一、在滑动距离上,二者没有(明显)区别:在检测效果的操作中,滑动距离无论长短都会触发。二、在滑动速率、触发顺序上有区别:onFli

2015-06-29 20:01:33 1023

转载 Android获取内部文件夹路径(/data/data/)

首先内部存储路径为/data/data/youPackageName/,下面讲解的各路径都是基于你自己的应用的内部存储路径下。注意内部存储不是内存。内部存储位于系统中很特殊的一个位置,如果你想将文件存储于内部存储中,那么文件默认只能被你的应用访问到,且一个应用所创建的所有文件都在和应用包名相同的目录下。也就是说应用创建于内部存储的文件,与这个应用是关联起来的。当一个应用卸载之后,内部存储中的这些文

2015-05-26 18:05:32 9932

原创 开启记录自己的开发旅程

每周都记录自己的开发心得,渐渐去除开发中的模糊地带。

2015-05-26 13:56:41 285

空空如也

空空如也

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

TA关注的人

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