自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 资源 (2)
  • 收藏
  • 关注

原创 2019-10-22

前面的路还很长,要走的踏实,走的稳定。做就对了,不论对错。结果不重要,要全力以赴去达成自己的目标

2019-10-22 22:53:05 111

原创 2019-10-22

今天参考Android面试小专栏,对即将进行对面试做了规划,参考大佬对文章,对目前遗漏对知识技能点进行来补充

2019-10-22 14:19:03 169

原创 Android设备屏幕适配方案总结

安卓手机产品种类繁多,造成安卓设备屏幕适配难度比较大,总结了几条在开发过程中需要注意的几个方面,供参考:1.在对控件设置长度的单位用dp/sp,不用px2.设计布局界面的过程中,禁用绝对布局,多用相对布局,在能用wrap_content、match_parent、weight的地方尽量使用这些属性值3.用.9图片来做一些拉伸控件的背景4.用自定义drawable,既能减少内存...

2018-04-26 14:37:23 221

原创 Picasso源码分析

概述前面分析了Volley的源码,现在来看一下Picasso的源码,其实Volley已经具备了加载了网络图片的功能,只是性能不是很好,Picasso是Square公司推出的一款图片加载框架,只能加载图片,所以性能肯定会比Volley好,Picasso的很多设计实际上跟Volley很相似,后来看到Picasso中的一个类BitmapHunter的注释,发现其实Picasso的作者也是参考了Vol...

2018-04-24 18:04:06 389

原创 Intentservice源码分析

概述前面分析了HandlerThread源码,下面按照顺序分析IntentService的源码,IntentService是自己维护了一个线程,来执行耗时的操作,然后里面封装了HandlerThread,能够方便在子线程创建Handler。正文注释IntentService is a base class for {@link Service}s that handle asyn...

2018-04-24 18:01:26 126

转载 Volley源码分析

概述Volley是Google推出的一款比较轻巧的网络请求框架,并且可以对请求进行缓存,同时可以实时取消请求,设置请求优先级,内置了ImageRequest,JsonRequest,JsonObjectRequest,JsonArrayRequest,StringRequest等,并且还支持自定义Request,基本上能满足日常的开发,当让Volley原生并不支持文件上传,但是可以通过自定义Req...

2018-04-24 18:00:39 183

原创 LitePal源代码分析

概述SQLite在介绍LitePal之前还是要先介绍一下SQLite,也就是我们通常所说的数据库,开发中多多少少会用到,不过原生的SQLiteDatabase,只要写过你就知道,写Demo还是可以的,但是在实际项目中就不够灵活了,因为Java作为面向对象的语言,我们在实际开发的过程中操作的大部分都是对象,如果使用SQLiteDatabase,我们进行CRUD操作的时候需要写SQL语句,查询...

2018-04-24 17:54:04 1244

原创 java 二叉树的遍历 递归非递归

二叉树遍历首先弄清遍历流程。中序遍历:第一次经过从它找左,第二次经过找右,第三次经过回来。第二次经过访问它。算法实现:第二次访问是 pop(&S,&p);Visit(p->data);因为中序遍历跟第三次经过没关系。所以第二次就弹出栈了。Java版的程序如下:[java] view plain copypackage 

2018-01-11 15:03:55 217

原创 KMP算法最浅显理解——一看就明白

说明KMP算法看懂了觉得特别简单,思路很简单,看不懂之前,查各种资料,看的稀里糊涂,即使网上最简单的解释,依然看的稀里糊涂。 我花了半天时间,争取用最短的篇幅大致搞明白这玩意到底是啥。 这里不扯概念,只讲算法过程和代码理解:KMP算法求解什么类型问题字符串匹配。给你两个字符串,寻找其中一个字符串是否包含另一个字符串,如果包含,返回包含的起始位置。 如下面两个字符

2018-01-11 15:02:12 239

原创 Java 实现栈和队列

栈:LIFO(后进先出)队列:FIFO(先进先出)栈的顺序存储结构实现:/** * 基于数组实现的顺序栈 * @param */public class Stack { private Object[] data = null; private int maxSize=0; //栈容量 private int top =-1; /

2018-01-11 14:55:18 170

原创 Java 循环队列的实现

队列概念  队列(Queue)是限定只能在一端插入、另一端删除的线性表。允许删除的一端叫做队头(front),允许插入的一端叫做队尾(rear),没有元素的队列称为“空队列”。  队列具有先进先出(FIFO)的特性。  普通顺序队列存在的问题    在普通顺序队列中,入队的操作就是先将尾指针rear右移一个单位,然后将元素值赋值给rear单位。出队时,则是头指针fr

2018-01-11 14:44:07 327

转载 09年的博文,读起来还是有感触的

此 情可待成追忆,只是当时已惘然。回首过去的十年,堪称快意,十年里,领略了很多领域:新材料、写作、技术管理、企业分析、软件开发等等,都留下了不深不浅的脚印:材料学是我本来的专业,很顺利的拿到硕士学位;其它成绩也不平凡,小说发表过,书籍出版过,项目主持过,公司成立过,可算丰硕。而今回想,却只有一个词:浮躁。以开发而言,起始于1997年mud程序开发,起步于网络浪潮阶段,asp呵呵。后来自然就

2017-05-27 17:13:11 328

原创 Android Studio快捷键

快捷键用途描述Alt+回车导入包,自动修正Ctrl+N查找类Ctrl+Shift+N查找文件Ctrl+Alt+L格式化代码Ctrl+Alt+O优化导入的类和包Alt+Insert生成代码(如get,set方法,构造函数等)Ctrl+

2017-05-11 10:03:49 199

转载 Java中8种基本数据类型及其默认值

Java语言中有8种基本数据类型,基本情况汇总如下:Java中8种基本数据类型总结序号数据类型大小/位封装类默认值可表示数据范围1byte(位)8Byte0

2017-05-08 16:32:28 1013

原创 Android Studio 2.2 升级到 2.3报错

Android Studio 2.2 升级到 2.3报错解决方案报错信息:Error:Failed to open zip file.Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)Re-download dependencie

2017-03-30 09:54:55 1005

原创 Toast使用详解

1.默认效果:Toast.makeText(getApplicationContext(), "默认Toast样式",Toast.LENGTH_SHORT).show();2.自定义位置:Toast.makeText(getApplicationContext(), "默认Toast样式",Toast.LENGTH_SHORT).show();toast.setGravity(Gr

2017-02-13 17:30:53 648

原创 long类型强转成int类型解析

开年第一天上班,刚到公司就收到消息,说是线上版本所有涉及商品列表的地方都崩溃了。立即查看日志信息,定位出问题出在哪里,一个类型转换错误导致的crash,这是导致问题出现的直接原因,随后陷入了深深的沉思:这种层级的错误原本在开发过程中就会解决掉的,为什么年前上线时还是可以正常运行的,偏偏过个年之后就不能用了?随后拉着后台的哥们,测试的妹子一块进行问题的排查,半天未找导致这个问题爆发的触发点在哪里

2017-02-13 15:55:34 10631 1

转载 9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路[对书籍加了注释]

9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路[对书籍加了注释]引言:同样是求职,和前面一篇blog一样,看出了很大的差距,多花了些时间,把作者列举的书籍通过豆瓣、亚马逊详细查了下,并加了注释。作者的思维逻辑非常清晰、目标很明确、定位很明确、做了大量的准备和努力,值得深入学习!1,简介毕业答辩搞定,总算可以闲一段时间,把这段

2017-02-13 14:44:02 2368

转载 增强for循环用法

1.首先增强for循环和iterator遍历的效果是一样的,也就说增强for循环的内部也就是调用iteratoer实现的,但是增强for循环有些缺点,例如不能在增强循环里动态的删除集合内容。不能获取下标等。2.ArrayList由于使用数组实现,因此下标明确,最好使用普通循环。3.而对于LinkedList 由于获取一个元素,要从头开始向后找,因此建议使用增强for循环,也就是it

2017-01-04 14:40:57 1036

原创 Java反射机制的适用场景及其利与弊

一、反射的适用场景是什么?1).Java的反射机制在做基础框架的时候非常有用,有一句话这么说来着:反射机制是很多Java框架的基石。而一般应用层面很少用,不过这种东西,现在很多开源框架基本都已经给你封装好了,自己基本用不着写。典型的除了hibernate之外,还有spring也用到很多反射机制。经典的就是在xml文件或者properties里面写好了配置,然后在Java类里面解析xml或pro...

2017-01-04 14:39:58 444

原创 同时使用parceler/butterknife/dagger2出现DuplicateFileException的解决方法

同时使用parceler、butterknife和dagger2这几个库时,可能是因为都用到了annotation,gradle报错:1234Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.

2016-12-01 10:24:07 558

原创 为什么需要把应用中出现的文字单独存放在string.xml文件中

为什么需要把应用中出现的文字单独存放在string.xml文件中呢?一:是为了国际化,当需要国际化时,只需要再提供一个string.xml文件,把里面的汉子信息都修改为对应的语言(如,English),再运行程序时,android操作系统会根据用户手机的语言环境和国家来自动选择相应的string.xml文件,这时手机界面就会显示出英文。这样做国际化非常的方便。

2016-12-01 09:53:33 2059

原创 android:contentDescription的作用是什么

在写Android的XML布局文件时,在ImageView或ImageButton中经常会碰到一个提示:Missing contentDescription attribute on image.然后今天看新项目代码时碰到这个属性,也就做了个知识补充搜了下:这个属性是做什么的呢?其实这个属性是方便一些生理功能有缺陷的人使用应用程序的。比如我们有一个ImageView里面放置一张颜色

2016-10-28 22:38:48 832

原创 搭建项目框架时需要考虑的几个问题

1.多渠道打包2.强制更新功能3.后台错误提示必须展示前台,不可自定义,以给用户进行正确的引导4.涉及重要的数据要做加密处理5.所引入的框架需考虑到可维护性,以免android系统出现重大更新导致的app崩溃,但是原框架早已经停止更新,跟进最新的技术(网络/图片)

2016-10-28 22:25:24 2693

原创 关于自定义AlertDialog,设置不能充满全屏的解决方法

下面是Dialog的style: 全屏dialog样式 左右插入 -->            @null        true        true        true        false        #FFFFFF   

2016-10-20 13:20:17 3189

原创 app包中的fragment和v4包中的fragment的使用的区别

app包中的fragment和v4包中的fragment的使用的区别,有需要的朋友可以参考下。1、尽量不要用app包中的fragment,因为这个是在3.0之后才有的,支持的版本太高,在低版本中是是用不了的。2、android.support.v4.app.Fragment:可以兼容到1.6的版本。3、关于这两个fragment使用标签的问题:(1)、app.fragment和v4

2016-10-08 12:29:41 2851

原创 设置Activity为全屏显示的两种方法

方法1:AndroidManifest.xml 里,Activity的 android:theme  指定为" @android:style/Theme.NoTitleBar.Fullscreen" 示例:           android:icon="@drawable/ic_launcher"         android:label="@string/app_

2016-09-30 13:12:57 13690

原创 android bitmap和base64之间的转换

/**  * bitmap转为base64  * @param bitmap  * @return  */  public static String bitmapToBase64(Bitmap bitmap) {        String result = null;      ByteArrayOutputStream baos = null;      

2016-09-21 11:05:45 3468

转载 TextView占位符

引子:如果一段文字需要多段TextView拼接而成,比如:“我叫XXX,今年XX岁了,身高X.X米”。拿到这样的需求可能我们第一反应就是StringBuilder的append(也许是因为我比较low的原因).然而这次需求是在PreferenceFragment 中监听preference的变化动态设置该preference的summary,此时要求的时效性比较高,用append拼那么

2016-09-19 09:39:13 4229

原创 Android 内存泄漏和内存溢出情况总结

问题: 安卓系统经常遇到OOM(内存溢出)问题,如何优化和应对?    Dalvik 主要管理的内存有 Java heap 和 native heap 两大块,而对于一个安卓应用来说,由于手机设备的限制,一般应用使用的RAM不能超过某个设定值,如果你想要分配超过大于该分配值的内存的话,就会报Out Of Memory 错误。不同产商默认值不太一样,一般常见的有16M,24M,32M,48M

2016-09-13 18:02:23 572

转载 进程间通信:bindService的替换方案

随着项目的业务和复杂度的增大,对内存的压力越来越明显,有时不得不使用多进程的方案,将一些功能放到另一个进程中去完成。其实很多时候,简单的业务也需要开一个单独的进程,如音乐播放器。我们就以音乐播放器为例,播放音乐的实现功能部份我们往往放在Service中去做,并把这个Service运行在一个单独的进程中(通过设置android:process属性)。这样做的好处是,音乐播放器的UI部份在一个进程

2016-09-12 18:11:33 1498

原创 invalidate()与postInvalidate()的区别

invalidate()与postInvalidate()这两个都是刷新View的API,它们主要的区别是invalidate()可以在主线程(UI线程)中调用,而不能在子线程中调用,若在子线程中进行刷新view的操作需要配合handler来使用。而postInvalidate()可以在子线程中直接调用。我们知道AndroidUI操作不是线程安全的,所有更新UI的操作必须放到主线程中来进行,p

2016-09-08 11:22:04 2521 1

原创 ADB常用命令

记录一些常用的ADB命令获取连接的设备1adb devices重启机器:1adb reboot查看log:1adb logcat终止adb服务进程:1adb kill-ser

2016-09-07 10:27:49 217

原创 Android Studio 编译速度过慢怎么办--加速gradle构建

最近发现gradle构建项目比较慢,在Gradle Console中还有提示让更改org.gradle.jvmargs之类的。其实在每个工程中,已经存在一个gradle.properties的文件类似这种看了网上比较多的加速构建决定在根源上更改配置mac上gradle位置/Usrs/xxx/.gradle/ 下新建gradle.properties文件并修改如下:

2016-09-06 09:33:25 583

原创 Android上下滚动的textview(可作为网站公告)

public class VerticalTextview extends TextSwitcher implements ViewSwitcher.ViewFactory { private static final int FLAG_START_AUTO_SCROLL = 0; private static final int FLAG_STOP_AUTO_SCROLL =

2016-09-05 14:33:54 5035

原创 Android Studio 快捷键

Alt+回车 导入包,自动修正Ctrl+N   查找类Ctrl+Shift+N 查找文件Ctrl+Alt+L  格式化代码Ctrl+Alt+O 优化导入的类和包Alt+Insert 生成代码(如get,set方法,构造函数等)Ctrl+E或者Alt+Shift+C  最近更改的代码Ctrl+R 替换文本Ctrl+F 查找文本Ctrl+Shift+Space 自动

2016-09-02 16:17:53 512

原创 简析Android软键盘弹出时窗口上移的问题

昨天在设计一个页面,大概框图如下:顶部有一个原生的ActionBar和一个自定义的ActionBar,然后中间一段内容,最下面有一个EditText;当EditText获取焦点时,会弹出软键盘:注意到顶部的原生ActionBar和我自定义的ActionBar被软键盘给顶出去了...我想要的效果是,顶部的两个ActionBar保持不动,然后下面的Content被顶上去,同时被ActionBar覆...

2016-09-02 10:03:38 16097 2

原创 android 将手机号中间隐藏为星号(*)

方法一:String aa="15254545875";if(!TextUtils.isEmpty(aa) && aa.length() > 6 ){ StringBuilder sb =new StringBuilder(); for (int i = 0; i ; i++) { char c = aa.charAt(i); if (i >

2016-09-01 17:58:25 8167

转载 ActionBar随ScorllView上下拖动而透明度渐变效果

我看到越来越多的应用使用这样的效果,如QQ空间5.0的主界面,确实很好看!大概就搜了一下相关的实现方式,发现早就有了相关的方案:仿QQ空间滚动ActionBar透明度变化Demo还有我在github上看到就有这样的实现方式,这也是本博文的主要核心内容:具体请查看:https://github.com/AChep/Header2ActionBar效果如下:

2016-09-01 17:13:02 332

转载 Android自定义View-Matrix详解

这应该是目前最详细的一篇讲解Matrix的中文文章了,在上一篇文章Matrix原理中,我们对Matrix做了一个简单的了解,偏向理论,在本文中则会详细的讲解Matrix的具体用法,以及与Matrix相关的一些实用技巧。Matrix方法表按照惯例,先放方法表做概览。方法类别相关API摘要基本方法equals hashCo

2016-09-01 15:08:20 5407 3

代码整洁之道

菜鸟进阶必备,编程规范神作。阿里java开发手册出自于此。

2019-02-21

Android面试宝典

涵盖近两年Android面试试题集 Android基础面试核心内容 Android面试精华题目总结 Android面试题-1 Android面试题-2 Android面试重点 接口安全 源码分析相关面试题 Volley源码剖析 注解框架内部实现原理 okhttp内核剖析 Android源码编译实现静默安装和静默偷拍 Activity相关面试题 onSaveInstanceState源码内核分析 深刻剖析activity启动模式-1 深刻剖析activity启动模式-2 深刻剖析activity启动模式-3 Activity Task和Process之间的关系 为什么service里面startActivity抛异常 App优雅退出 onCreate源码分析 Service相关面试题 IntentService源码分析 Service是否在main thread中执行, service里面是否能执行耗时的操作? Android面试题-Service不死之身 与XMPP相关面试题 阐述一下对XMPP协议理解以及优缺点? 简单阐述一下及时推送原理? 与性能优化相关面试题

2017-09-11

空空如也

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

TA关注的人

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