自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 使用config.gradle文件统一管理项目依赖

一、配置新建config.gradle (和项目的build.gradle同级).内容为ext { android = [compileSdkVersion: 26, buildToolsVersion: "26.0.0", applicationId : "com.test.lizheng", ...

2019-07-08 10:31:08 339

原创 排序(五):计数排序

介绍:计数排序是时间复杂度为O(n)的排序算,其最大的特点是不基于比较进行排序(思想是基于桶排序),空间复杂度为O(m),m为桶的数量;计数排序为稳定的排序;要注意的是计数排序并不适用于所有情况,但是用于一些范围小的整数排序有非常出色的效果。栗子引出:例如排序一个队伍里大家的身高,A为180,B为155,C为178,D为165思路: 建立一个155-180的桶,把ABCD依次放入相同下标的...

2019-03-31 14:43:01 206

原创 Android onCreate方法被调用两次的解决方法

原因:横竖屏变换例如:如果你在onCreate方法写了setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)让activity横屏,会重写调用一次onCreate方法(debug发现)解决方法:第一步:在AndroidManifest.xml中增加下面的设置:android:configChanges=...

2019-03-28 10:05:22 2895

转载 排序(四):快速排序法

图解分别从初始序列“6 1 2 7 9 3 4 5 10 8”两端开始“探测”。先从右往左找一个小于6的数,再从左往右找一个大于6的数,然后交换他们。这里可以用两个变量i和j,分别指向序列最左边和最右边。我们为这两个变量起个好听的名字“哨兵i”和“哨兵j”。刚开始的时候让哨兵i指向序列的最左边(即i=1),指向数字6。让哨兵j指向序列的最右边(即j=10),指向数字8。首先哨兵...

2019-03-12 22:04:22 258

原创 [算法]输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示

一、让我们先审题:== 负数在计算机中如何表示 ==数以正值的补码形式存储-3在计算机中表示如下:3的原码: 00000000 00000000 00000000 00000011-3的原码:10000000 00000000 00000000 00000011反码:11111111 11111111 11111111 11111100补码:11111...

2018-12-11 17:58:16 832 1

转载 新一代Json解析库Moshi使用及原理解析

概述Moshi是Square公司在2015年6月开源的有关Json的反序列化及序列化的框架,说到Json,大家应该很快想到Gson,FastJson以及Jackson等著名的开源框架,那为什么还需要Moshi呢?这个主要是由于Kotlin的缘故,我们知道前面说到的几大解析库主要是针对Java解析Json的,当然他们也支持Kotlin,但是Moshi天生对Kotlin友好,而且对Java的解析也毫...

2018-12-06 21:06:44 1268

原创 用Kotlin编写Android:Retrofit+Rxjava尝试

前言: 最近学习了安卓开发谷歌推荐的Kotlin语言,便用来尝试了一下重构之前的MVP+Retrofit+Rxjava的代码,下面是我重构后的Kotlin代码首先添加gradle的compile:dependencies { compile 'io.reactivex.rxjava2:rxjava:2.0.7' compile 'io.reactivex.rxjava2:rxa...

2018-11-03 16:50:01 832

原创 数据结构:两个栈实现一个队列(面试题)

前言:今天第一次尝试了电话面试实习生的经历,问到了一道数据结构的知识,没有答上来,现在来总结一下。设定一个栈为栈s1,一个为栈s2思路一:入队列: 直接压入栈s1即可 出队列:先把栈s1的元素弹入栈s2,弹出栈s2的栈顶元素,再将剩余s2的元素弹回栈s1思路二:入队列:如果栈s1为空时,把栈s2所有元素弹回栈s1,否则直接压入s1 出队列:如果栈s2不为空时,弹出栈s2的栈...

2018-07-24 17:44:48 200 1

原创 浅谈IntentService

前言:这次我们来看下安卓为我们封装的IntentService,它有以下特点:它本质是一种特殊的Service,继承自Service并且本身就是一个抽象类它可以用于在后台执行耗时的异步任务,当任务完成后会自动停止它拥有较高的优先级,不易被系统杀死(继承自Service的缘故),因此比较适合执行一些高优先级的异步任务它内部通过HandlerThread和Handler实现异步操作创...

2018-05-20 16:59:05 118

原创 浅谈HandlerThread

前言:我们知道在Android系统中,我们执行完耗时操作都要另外开启子线程来执行,执行完线程以后线程会自动销毁。想象一下如果我们在项目中经常要执行耗时操作,如果经常要开启线程,接着又销毁线程,这无疑是很消耗性能的?那有什么解决方法呢? 一般有两种:使用线程池使用HandlerThread  而HandlerThread是android系统帮我们封装的一个异步处理任务的Thread...

2018-05-18 18:41:10 189

原创 源码分析AsyncTask

前言: 5月份第一篇博客,第一次以自己的视角去分析源码,先看了大量大牛的文章。  AsyncTask是android提供我们方便使用异步任务的一个封装类,有了它,我们可以很方便的使用异步操作;但是作为一个合格的开发者,只会用并没有什么意义,我们当然要懂得它是怎么实现的,可以让我们这么方便的使用异步任务。   废话不多说,让我们从常用方法说起,因为是讨论源码,这些只是后面源码需要调用这些方法...

2018-05-04 21:41:58 207

原创 多线程与线程池

前言: 目前进入的多线程的深入学习,这次还是在学习进阶之光的一个阶段一、什么是进程?什么是线程?  相信这是许多刚学多线程的人会被问傻的一个问题,明明自己在java se的时候是学过了java多线程编写,new一个Thread啊,Runnable接口啊之类的,但是被人问到这个问题的时候,我相信没有去继续专研的你90%答不出来(排除大牛)… 好了,废话不多说,让我们看看什么是进程...

2018-04-30 11:16:20 1259

原创 View的体系和自定义View的流程(二)

前言: 前段时间整理了进阶之光的知识点,本次紧接着上次继续整理… 六、View的事件分发机制老规矩,书上的排版不错,还是按书上的来。6.1源码解析Activity的构成先看一下平时创建一个活动自动为我们添加的setContentView()方法: public void setContentView(@LayoutRes int layoutResID) ...

2018-04-28 18:58:09 155

原创 View的体系和自定义View的流程(一)

前言: 最近学习了View的体系与自定义View,并且看了android进阶之光这部书,记录一下学习心得一、View与ViewGroup其实,平时我们开发用的各种控件(TextView,Button)和布局(LinearLayout,RelativeLayout)都是基于View写成的,都是View的子类,所以View是所以控件的父类。 ViewGroup也是继承View,并且...

2018-04-24 22:20:54 226

原创 Android反编译初探:MAC下的反编译

前言:突然看见有关反编译的文章,便学习一下一、工具:https://ibotpeaches.github.io/Apktool/ http://jd.benow.ca/ https://sourceforge.net/projects/dex2jar/分别是 apktool主要用户反编译和打包; JD-GUI 主要用于对.class文件展示为源码(比如jar文件) dex2j...

2018-04-14 20:50:24 3407

原创 排序(三):插入排序法

当下热点:我写下这篇博文的热点话题是蓝洞起诉网易侵权,快手和抖音被勒令整改,星巴克咖啡严重致癌被辟谣,饿了么被阿里收购,美团收购摩拜。基本思想:把数组分为两个部分,每次将后部分的第一个数插入前面部分进行排序,然后循环实现总体排序。流程图如图: 每次把第二部分的开头一个数插入第一部分,被插入的数在第一部分进行排序放入相应位置。java代码实现:import java.uti...

2018-04-08 19:19:38 427

原创 排序(二):选择排序法

前言:有时候,我会觉得,凡事只要有个目标,便可以朝着它努力,这样必定会有结果;可是,慢慢的我发现,在生活中,太多的我们追求的事情,是没有目标的,这也正是我现阶段困惑的东西,我只能一步步的去试探,试图发现个规律。 虽然没有明确的目标,但是我还是要继续加油,对吧?基本思想:在排序的一组数中,选出最小的数与第一个数互换,如果本身就是则保持原位,接着再重剩下的数中选出最小的数与第二个数互换,直到...

2018-04-07 21:59:08 1937

原创 排序(一):冒泡排序法

前言: 有些路,只能一个人走,路上的艰辛,只有自己知道基本思想:比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。Java实现:import java.uti...

2018-03-31 11:29:59 140

原创 GridView实现选中状态

前言:为了自己的未来,我们无怨无悔 最近做一个游戏选中的功能,需要用到GridView,并且要实现选中状态。1.首先:xml布局里定义一个GridView:<GridView android:id="@+id/gridView" android:listSelector="#00000000" android:verticalSp...

2018-03-26 17:44:21 2487

转载 android Activity实现从底部弹出或滑出选择菜单或窗口(不需要dialog或popupwindow)

前言: 今天就是未来,没有人能代替你奋斗! 借鉴: http://104zz.iteye.com/blog/1685425:第一步:设计要弹出窗口的xml布局:<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/a...

2018-03-26 17:07:23 3636 5

转载 Android利用自定义VideoView轻松实现用视频做背景

前言:有人问我,即便梦想成真了又能怎样,或许不能怎样,但这是梦想。介绍:最近开发需要弄一个像QQ一样的登陆界面(界面要用视频做背景),上网发现这个博主介绍的比较好,便转载来分享给更多的人。先看看效果注意事项(代码里也标注出来了):视频资源要添加res文件夹下创建raw文件夹需要在onRestart()方法里重新加载视频,防止退出返回时视频黑屏我这样写简单粗...

2018-03-23 20:02:33 3371

原创 Rxjava的PublishSubject中switchMap,debounce的分析

前言: 最近想实现一个仿淘宝的搜索联想功能,进过查询发现需要用到retrofit2+rxjava2来实现基本功能。 其中,Rxjava需要使用一个叫PublishSubject的类,而这个类有一个叫debounce 的方法可以供我们实现: 当输入框发生变化时,不会立刻将事件发布出去,而是等待xxms,如果在这段事件内,输入框没有发生变化,那么才发送该事件;反之,则在收到新的关键词后,继续等...

2018-03-20 12:31:12 1193

原创 [Git问题] VCS下拉同步git上的代码出错

今天同步git上的项目时突然报错,经过网上的几个解决方案,发现一下这个可以解决 我认为应该是git的分支没有连接对,只要切换好分支即可上出错图(android studio的报错): 解决办法:打开命令窗口,输入以下命令(必须在你本项目创建的代码仓库.git的目录下)git branch --set-upstream master origin/master...

2018-03-14 16:54:57 585

转载 Android动画:Interpolator插值器

...

2018-03-09 20:29:37 192

原创 学习百度SDK遇到问题200代码的解决方法

在学习百度SDK的地位服务时,第一定位没有问题 并且gps定位正常,但是只要网络定位一更新,便会出现 异常坐标,看了很久代码和开发者文档一直没有发现问题 看了下错误代码 {“status”:200,”message”:”APP不存在”} 也不知道什么原因 最后发现是AK钥匙拷贝的时候多了一个空格,导致第二次读取失败 所以,遇到200代码的问题首先检查AK钥匙,希望

2018-01-04 15:08:00 1248 3

原创 Intent(意图)的用法整理

Intent的个人分析和整合

2018-01-01 17:31:26 657

原创 ListVIew点击事件失效

开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了,可能会发生点击每一个item的时候没有反应,无法获取的焦点。原因多半是由于在你自己定义的Item中存在诸如ImageButton,Button,CheckBox等子控件(也可以说是Button或者Ch

2017-12-06 18:58:49 505

原创 关于安卓6.0/7.0 模拟器无法正常访问网络问题

最近一直被无法访问网络的问题困扰,使用6.0和7.0的模拟器无法正常访问WebView和使用http的访问

2017-11-30 22:58:34 5006

转载 触摸事件

一些常量常见的动作常量:public static final int ACTION_DOWN = 0;单点触摸动作 public static final int ACTION_UP = 1;单点触摸离开动作 public static final int ACTION_MOVE = 2;触摸点移动动作 publ

2017-11-30 18:25:41 122

转载 SharedPreference.Editor的apply和commit方法异同

在android 中存储数据时经常用SharedPreference, 并且在提交数据时一直用的是Editor的apply方法, 今天无意了看到了学习视频用commit和郭神书上(apply)的不一样,看了别人的博客介绍具体内容如下:apply方法在官方SDK说明如下:Commit your preferences changes back from this Editor

2017-11-27 21:11:55 151

转载 Java反射机制

1. /** 2.  * 反射机制获取类有三种方法 3.  */  4. @Test  5. public void testGetClass() throws ClassNotFoundException {  6.     Class clazz = null;  7.   8.     //1 直接通过类名.Class的方式得到  9.     clazz =

2017-11-22 16:56:07 119

原创 Glide的变换(美图效果)

Glide是目前比较主流的图片加载开源框架,我学习了之后发现真的非常好用!

2017-11-22 15:13:08 456

原创 java工厂设计模式基础代码

package interface_text;interface Fruit{ public void eat();}class Apple implements Fruit{ @Override public void eat() { System.out.println("+++吃苹果"); }}class Orange implements Fruit{ @O

2017-11-21 16:20:56 741

原创 安卓虚拟机,文件导入sdcard或者storage上报错,Read-only file system

解决方法:在命令行中输入:adb shell mount -o remount rw /    然后再导入文件。

2017-11-19 09:40:11 1020

转载 解决Android studio 编译报错 Error:null value in entry: outputDirectory=null

电脑突然死机,然后编译出错这似乎是Gradle的一个Bug,解决办法是,删除项目根目录的.gradle文件夹,然后Clean ,Rebulid。 于是照做之后一切恢复正常了。 原文:http://blog.csdn.net/qq_14962891/article/details/60955085

2017-10-31 17:05:09 720

空空如也

空空如也

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

TA关注的人

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