- 博客(50)
- 资源 (2)
- 收藏
- 关注
原创 android 适配下载完成自动跳转安装
适配7.0:1、<provider android:name="android.support.v4.content.FileProvider" android:authorities="com.sougua.loan.fileProvider" android:exported="false" ...
2019-06-24 18:55:59
892
原创 Java 垃圾回收机制
什么时候回收1、应用程序空闲时2、堆内存不足对象回收判定引用计数算法1、给对象添加一个引用计数器,只要有地方引用它,计数器+1,引用失效-1,当gc触发时候,计数器为0的被回收.2、object-c就是这种,很难处理循环引用,相互引用的两个对象则无法释放。(需要开发者自己处理)可达性分析算法通过一系列称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径...
2019-05-30 21:28:34
198
原创 JVM运行时数据区
程序计数器(Program Counter Register)当前线程所执行的字节码的行号指示器虚拟机栈(VM Stack)1、虚拟机栈描述的是Java方法执行的内存模型:每个方法执行的同时会创建一个栈帧2、栈帧:虚拟机栈的栈元素。栈帧用于存储局部变量表、操作数栈、动态链接、方法返回等信息.每个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程3、局部变量表:...
2019-05-29 20:31:37
198
原创 Android Binder
Binder 是一种进程间通信机制.为什么是 Binder?性能、稳定性、安全性原理1、不严谨的说,Binder分为client和server两个进程,且client和server角色是相对的,谁负责发消息就是client,谁负责收消息就是server.2、Binder的通信流程简单解释就是如下二张图:由于client和server处于不同的进程,所以两者不能直接通信,需要通过Bi...
2019-05-28 21:25:42
169
原创 Android模块化搭建
这篇文章主要是记录下模块化的搭建,当然也有路由的使用,Arouter虽然被业界所推宠,但Arouter真的还是有很多坑,这里我要说一下,模块化开发只适合多人、项目较大的时候使用,如果你满足不了这两个条件,最好不要用,个人觉得没有什么意义,闲话少说,我们切入正题。模块化:(个人理解)就是把你项目的业务模块划分为若干模块,比如:微信主页有4个tab页面:可以划分4个模块,当然这只是举个例子,如...
2018-07-06 20:43:36
695
原创 Jenkins自动构建Android项目
Jenkins:是一个自动化工具,现在几乎那个端都在用,这个工具很好的避免测试人员每天给我索要包的问题,除了配置稍有麻烦外,真的释放了开发人员的双手。由于我们三个端都在用这个工具,所以就直接放在了内部服务器,便于开发、测试、产品的随时需求。前面的各种Jenkins安装我就不说了,先说下我用Jenkins工具的感悟,它的流程是这样的:当你点击构建时,Jenkins会从你的git仓库拉取一份代码到...
2018-06-26 21:40:06
614
原创 布局溢出问题
前言:今天仿造慕课网写网页时,就要大功告成了,除了一个问题,就是浏览器右边出现了一小段空白,且横向出现了滚动条,这肯定是哪个元素超过了浏览器的默认宽度,具体bug如下图:bug出现的原因内部元素宽度撑开了页面。比如说宽度设置100%,然后你又来了个margin,那就gg.解决办法有两种1.溢出的设置隐藏 在css代码中:html{ width:100%;...
2018-04-23 19:50:47
439
原创 Java-内部类
内部类定义:一个类定义在另一个类的内部,这个类称作内部类。内部类作用:内部类提供了更好的封装,可以把内部类隐藏在外不累之内,不允许同一包下的其他类直接访问.内部类成员可以直接访问外部类所有成员,包括private成员,因为外部类对象创建内部类对象时,内部类对象持有一个指向外部类对象的引用,然后在你访问外部类成员的时候,就是这个引用来选择外部类成员。也就是我们常说的,非静态内部类持有...
2018-04-20 22:05:56
271
原创 Andorid性能优化-渲染
屏幕刷新频率多数手机屏幕刷新的频率是60hz,也就是1000/60=16.67(大约), 若在16.67ms内没有执行完这一帧, 就会出现丢帧现象,当丢帧严重的时候就会出现我们肉眼看到的画面卡顿。布局渲染到屏幕过程先看几个概念:格栅化:将控件、文字等拆分成不同像素,在屏幕上显示。由于格栅化比较复杂,所以这一操作比较耗时。CPU:用来将控件处理成多边形或则纹理。G...
2018-04-19 20:14:49
237
原创 HTTPS
HTPP缺点:明文通讯,容易被窃听不验证通信方身份,中间通信的过程可以伪装无法保证报文的完整性,中途可能发生篡改HTTPS超文本传输安全协议(个人理解),HTTPS=HTTP+SSL/TLS,TLS是SSL的升级版,HTTPS就是通过他们来保证传输的安全,那既然安全,是不是就是传输的信息不被拦截呢?不是,是在传输的时候经过加密算法加密,即使让你截获了,你也看不懂!!!...
2018-04-18 20:49:38
382
原创 Java之建造者模式
public class HeroKing { private String name; private int gender;//true、男 fa、女 private float height; private boolean isSingle; public HeroKing(Builder builder) { this.na
2018-04-02 20:07:11
217
原创 Java的深拷贝和浅拷贝
深拷贝和浅拷贝区别一个实例经过拷贝之后,在新生成的实例中,引用类型的成员变量的内存地址未做改变,和原实例的内存地址相同,这是浅拷贝反之,若和原实例的引用类型成员变量的内存地址不同,则是深拷贝。这里不考虑基本类型的成员变量。下面是一个Java例子,便于对概念的理解:package com.example.butterknife_compiler;/** * Created ...
2018-03-26 17:17:45
191
原创 PorterDuffXfermode实现圆角、圆形头像
上篇博客中,我全面介绍了Xfermode相关的知识点,如果还没看过的小伙伴,建议你先去看上篇博客——初始Xfermode,对PorterDuffXfermode的18种模式做了详细的介绍,而且我也自己实现了官网的18种效果。这篇文章主要是记录下,PorterDuffXfermode在开发中常见的应用,比如:实现圆角、圆形等等,只要你可以画出来的形状都可以做。效果图:DST_IN模式:以上效果图就是用
2018-02-05 15:21:31
683
原创 初识Xfermode
官方介绍: Xfermode是被用来在绘图管道中实现自定义“传输模式”的对象的基类,可以通过调用子类的构造函数且传入Mode(混合模式,下面会说到)这个类只有一个基类,可能有哥们说:不对,我看的是三个子类;好!官方API让你死心:其他2个类早被移除了!所以接下来我们说说PorterDuffXfermode这个类。PorterDuffXfermode:
2018-02-02 10:36:45
396
原创 Android 自定义之我去年买了个表
前言: 这是自定义view的的第二篇文章,自定义view是android工程师进阶必备的技能点,所以要想往中高级工程师发展,必须要学会之定义view,好多人说自定义比较难,其实不然,自定义view只不过比较繁琐,需要注意的点比较多,比如:测量、布局、绘制,就绘制来说就够你看一周也看不完,当然还有和view的交互等,所以一定要静下心来,不急不躁,循序渐进的去学,下面我们来绘制一
2018-01-30 13:49:55
300
原创 CMake方式编译生成so库
在CMake构建工具没有发布之前,都是ndk-build方式来编译生成so库,但是ndk-build比较繁琐且容易出错,我们用CMake方式,比较简单,这样我们就可以专注于我们的开发,细心的哥们可能早就注意到了Android Studio创建项目的时候,可以勾选支持这种方式:看图: 这样是最省事的,我先看下项目都生成了什么特别的东西: CMakeLists.txt 这个是最显眼的文件,
2018-01-24 16:48:10
16392
原创 自定义View没那么可怕~进度圈
本着无图言x的原则,所以先上效果:很简单!也很常见!所以这样子比较适合入门,因为这个是自定义单个控件,所以只会用到ondraw()、onmeasure()两个方法,所以面试的时候不要傻傻的说自定义view要重写onlayout(),要分情况的!下面我们一步一步来:继承view,重写构造方法,至于重写那个构造方法,要看情况咯,CircleView(Context context) 一个参数构造 一般
2018-01-02 17:30:40
439
原创 Android Architecture Components+MVP 实战
Android Architecture Components 已经比较稳定了,一直有关注,刚好上周项目2.0.0上架,重构一下项目。今天已经重构完成,所以在这里记录下,如果您发现有什么不妥的地方,请留言指出,不胜感激。AAC(Android Architecture Components)架构主要包括:LiveDataViewModelRoom相信你一定在很多技术文章里见到过这三个单词。当然
2017-12-14 16:04:17
2498
3
原创 Android 7.0系统 PopupWindow的bug
起初产品经理说过一次,因为是刚入职接手的项目所以,我当时没太在意这个bug,当时报备的是华为手机有这种问题,其他机型没有,我当时就想应该是系统兼容性问题,毕竟国内系统改的乱七八糟,后来发现oppo也出现了,就是PopupWindow显示是从顶部弹出的,我看下代码,没什么问题,但是小米就没问题,后来google了一波是系统bug,于是就做兼容性处理,分分钟奏效我们预期的效果图:但是android 7.
2017-10-11 15:20:46
1433
原创 2017 个推面试题
1、多进程(IPC机制)的几种方式?各有什么优缺点? 2、多线程并发怎么做? 3、LruCache源码是怎么做的? 4、B站开源播放器的视频压缩底层是怎么做的? 5、图片加载框架用的那个?为什么要用它? 6、内部类引用外部类相关 7、子类继承基类的静态变量、成员变量、构造,这三个在子类和父类是执行顺序? 9、TCP/IP? TCP与UDP的区别? 10、IP属于哪一层?TCP/IP
2017-06-28 23:00:46
3606
1
原创 JavaWeb校验码的实现
好久没有更新blog了,可能是最近太懒或者太忙,但我觉得这都是借口(2333),最近思考了很多,作为一个技术人员要么学一门去不断的深入,要么去不断的扩展其他技术,所以呢?我选择连个兼顾,嘻嘻!今天我们看下Web端的校验码是用Java怎么生成的,校验码多用于登录界面,作用无非就是,防止暴力访问,ok,废话不多说,看代码:public class ImageServlet extends HttpSer
2017-06-27 13:23:28
434
原创 Android 消息机制源码分析
1、handle能否在子线程中创建呢?我们一般都是在用在主线程的,今天我们就由这个问题来引出android的消息机制, 下面看一个例子: 在我们的activity创建一个子线程,我们在子线程创建handler 会报如下错误: 怎么解决呢? 我们看下报错信息,意思就是:没有调用Looper.prepare()方法,是不能创建handle的。 接着,我们在创建handle之前调用
2017-04-17 19:04:23
455
原创 Android之动画(二)
Android动画中其实功能强大的要数property animation(属性动画),毕竟View动画只提供给了一些简单的动画实现方式,不信?我们现在假设需要做一个按钮背景变换的动画,你觉得View动画能实现吗?是不是感觉一脸懵比。。。来来,我们先说说View动画和属性动画各自的原理:View动画:通过改变View的对象,来实现动画效果。 属性动画:通过改变View对象的属性,来实现动画效果。s
2017-03-25 14:48:52
500
原创 Android之动画(一)
Android(Animation框架)动画原理:控制的是整个View,原理:每次绘制视图时View所在的ViewGroup中的drawChild()获取该View的Animation的Transformation值,然后调用canvas.concat(transfromToApply.getMatrix()),通过矩阵换算完成动画帧,如果没有完成,就继续调用invalidate(),启动下次绘制来
2017-03-18 22:36:49
408
原创 深入理解MVP
首先声明:本blog参考于http://wuxiaolong.me/2015/09/23/AndroidMVPSample/ 感谢作者这篇文章android开发现在越来越离不开mvp模式了,也许你刚开始用感觉很不顺手,但是,MVP确实要代替mvc的上次写的mvp感觉太水,所以这次又开了一篇,供大家参考。先看我的目录图:JsonUtils是gson封装的json解析工具类,待会我也会贴出。在贴代码之
2016-11-09 16:03:31
674
原创 Android 双进程守护(分分钟实现)
是这个情况,前几天在腾讯公开课看到的,确实不错,首先我先说下怎么实现的?**实现思路:**创建A,B两个服务,然后同时启动A、B服务,双进程守护,当然要另开一个进程,通过AIDL实现跨进程通信,在A、B服务中的onStartCommand方法中,互相绑定对方,然后我们想想,服务如果被强杀了怎么办,接下来是关键:我们实现ServiceConnection这个接口,在onServiceDisconnec
2016-10-09 17:27:05
14006
12
原创 Android 索引的实现
在刚学习Android的时候就想自己手写一个索引,但是当时还是彩笔,就一直没做,昨天写了一个索引,今天贴出来,以备后用,先上图: 由于列表是我自己封装的,可能必看到展示页面的时候会有陌生感,但是并不复杂,很好理解,好了不废话了,操起键盘就是干。自定义索引栏:注释加的已经很清楚了,还是不理解的@我package app.project.view;import android.content.Conte
2016-09-23 17:09:20
1122
原创 超简单的MVP模式案例
在说mvp之前,先说下mvc:MVC( Model View Controller):一种将逻辑和视图分隔开来的架构设计,起源于web端。其实 Android应用的开发中本身可视为一种MVC架构。M–>Model: 数据模型(bean文件)、 业务逻辑V–> View:可见的界面(android的xml布局文件)C–>Controller:控制view和model的交互(android的 Ac
2016-09-01 17:29:35
5449
原创 Java之单例模式
单例模式是我以前学Java最先接触的第一种模式,单例:一个类只实例化一次。一般我们的做法就是:构造函数私有化对外暴露一个供外界访问该实例的方法其次单例又分为:懒汉式饿汉式其实我觉得这都是国人通俗的叫法,外国人怎么可能起这样的名字 No 1:public class Singleton{private static Singleton instance;private Singlet
2016-08-27 16:14:57
837
原创 Android原生API搞定圆角、圆形图片
今天下班在车上闲来无事,随便翻翻掘金看看有没有更新什么好玩的新技术,突然看到一个RoundedBitmapDrawable实现圆角、圆形图片,当时就给我震惊了,是我太孤陋寡闻,还是太彩笔。。。不管啦,我要学习下贴上来,以前实现圆角图片什么的,都是用自定义控件或者Glide直接转换,没想到还有更省事的...也是醉了... 准备靓图,前方高能:效果还不错把?看完代码:我猜你也会喜欢这种方式—> pr
2016-08-25 21:01:30
1453
原创 assets文件夹下的压缩包解压到sd卡功能实现
昨晚出差刚回来,在技术群里水,一哥们提出了这个问题,由于在帮一兄弟录制视频,就推到了今天,废话不多说,直接看下面步骤:不知道怎么放assets文件夹的注意啦:源码:public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceSt
2016-08-21 11:26:06
1087
原创 Glide 加载圆角、圆形图片
谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech。这个库被广泛的运用在google的开源项目中,包括2014年google I/O大会上发布的官方app。 我们直接实战(不扯淡): 1、引入库:compile 'com.github.bumptech.glide:glide:3.6.1' 2、演示代码:public class MainActivity
2016-06-22 16:15:44
20054
12
原创 奇葩的底部导航栏
oh,NO!这是什么鬼,组长大叫一声,快看小乔,此处有坑,我快速走到老大面前,仔细看了看,说了一声fuck。让我来。。。。-_- 怎么样剧情还不错吧。。。。 大家看下效果图: 由于是公司的项目,这里不便贴出来全景图,看出效果即可,真的好蛋疼,中间那块,尼玛。。。我也是醉了。。。 不过还好,天无绝人之路,上有政策下有对策,本来底部导航栏准备用FragmentTabhost的,还是自己布局吧。。
2016-06-04 17:04:23
758
原创 Toolbar的使用和自定义Toolbar作为标题栏
搞了一个上午中午搞的差不多了,由于公司突然把以前用的自定义布局titleBar替换为Toolbar,我才有幸使用Toolbar,-_-。。。。不过刚用真的好蛋疼,其实和actionBar差不多,好了不扯了。先上图(没图没真相):我在注释里写的很清楚大家直接看代码: 第一:大家要去主题里面去掉系统默认的标题栏 <style name="AppBaseTheme" parent="Theme.App
2016-06-04 12:22:34
11144
1
原创 毛玻璃效果就是这么唯美
继续,嘻嘻上月太懒了,这月要补回来,接下来是毛玻璃效果,很简单(因为我们是站在巨人的肩膀上),效果的确挺唯美的。老规矩效果图走起: 原图: 虚化后的图: 首先,大家需要用到一个工具类:FastBlurUtil ,当然直接copy到自己的工具包里就ok,用法: ImageView imageView;@Overrideprotected void onCreate(Bundle savedIn
2016-06-01 16:47:17
1202
原创 水波纹进度效果——万能的github
首先声明,这篇blog并没有什么技术含量,完全是小弟在开发中遇到的蛋疼的问题,大神勿喷,前几天遇到界面中要求实现水波纹进度的特效,当时我就懵逼了,这尼玛,设计师真是脑洞大开,不过有点像360的那个,你懂得。。。还好有万能的github,哈哈,还好我机智 先贴github地址:WaveLoadingView 接下来就是如何用咯:不过用之前先看效果图(很炫的): 还不错吧? 是哒代码就不用看了。
2016-06-01 16:27:34
1956
原创 多行滚动的TextView
今天发现AS工作空间躺着一个滚动文本的demo,记不起来什么时候写的,瞄一眼,确实很简单,决定放到博客中来。直接看代码(代码中注释就能帮助你理解): android:singleLine="true" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" 注意:最后两个属性很重要。是的,其实TextVi
2016-05-12 11:32:01
658
3
原创 ItemTouchHelper实现滑动删除和长按拖拽功能
最近用到滑动删除,在网上就Gooogle了一把,果然发现ItemTouchHelper这个类,用起来确实比较方便,再也不用像以前一样自定义,一个ItemTouchHelper.Callback接口就搞定.看效果图(电脑太菜): 代码很简单:public class MainActivity extends AppCompatActivity { @Bind(R.id.recycler)
2016-05-05 10:54:27
904
原创 分分钟钟搞定二维码生成以及扫描
上周在慕课网上看到了二维码集成,真的很nice。。。于是迅速尝试了一把,感觉还不错,真的是分分钟钟的事情。 大家看集成代码:public class MainActivity extends AppCompatActivity { @Bind(R.id.result) TextView tv; @Bind(R.id.edit) EditText input;
2016-04-24 15:08:13
1437
原创 android:layout_weight属性你真的理解吗
大家看到这个标题可能会说,你这也太low了吧?权重这个属性谁不知道,谁没用过,有什么好讲的?是的,我确实经常用,但是我们并非真正的理解了它。ok,下面我们说说这一属性。权重的平分(按比例划分):这个确实没有什么好说的。就是我们最初对他的理解。所以这里我们跳过。剩余空间按权重平分(重点):这就是我想要说的,为了便于我们理解这里我结合布局代码讲解:布局代码:<?xml version="1.0" enc
2016-04-16 21:44:03
497
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人