自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 一文读懂Https原理

一文读懂Https原理前言Https原理浅析Https是什么如何加密数据公钥分发问题服务器身份认证证书链SSL/TLS完整握手过程Fiddler代理Https原理前言对于https大部分人应该都不陌生,相信大家也都知道https是安全的,但是如果问你为什么https是安全的,可能还是会有一大部分人是答不上来的。因为本人在之前面试和实际项目中也经常碰到https相关的问题,所以最近花了些时间梳理...

2020-02-05 18:04:34 1712 1

原创 仿instagram文字自动排版功能实现

仿ins文字自动排版功能实现功能描述几个疑问知识储备具体实现思路一.拆行二.按匹配最大宽度计算每行字体大小三.按匹配最大高度计算每行字体大小四.重新调整EditText的宽度遇到的坑总结功能描述玩过ins的朋友应该知道ins里面有一个编辑文字自动排版的功能,应用会根据用户输入的每行文字自动进行排版,以达到一个紧凑美观的效果。如图:几个疑问知识储备具体实现思路一.拆行二.按匹配最大宽...

2019-03-16 12:13:13 1710 5

原创 代理模式,适配器模式,装饰者模式,别再傻傻分不清楚了

代理模式,适配器模式,装饰者模式的区别适配器模式主要解决接口转换的问题,代理模式主要解决对象无法直接访问的问题,装饰者模式主要用来增强功能。怎么理解呢?首先看下适配器模式和代理模式的类图,细心观察会发现对于代理模式RealSubject实现了Subject的接口,而适配器模式的Adaptee并没有实现Target接口,这说明对于代理模式客户端最终访问的是同一个接口,而对于适配器模式,客户端最终访问的是不同的接口。所以适配器解决的是接口转换的问题,可以将A接口的请求转成B接口,而对于代理模式来说客户端调用

2020-08-09 17:28:12 928

原创 记一个反射和混淆的采坑记录!!!

最近心情低落,因为出现了一个线上问题,在这里记录一下希望大家引以为戒。先说下结论,使用反射务必检查代码是否混淆,使用反射务必检查代码是否混淆,使用反射务必检查代码是否混淆,重要的事情说三遍!!!是的,我就是使用反射因为代码被混淆的原因导致出现线上问题。其实如果问题是必现的,那么还好,因为使用release包很容易就能发现问题,不至于发版到线上,但是因为刚好这是一个偶现的问题,在测试回归时没被发现,发布到线上后被用户发现并投诉了。虽然文章很短,但是很有借鉴意义,特别是经验尚浅的程序员,可能更容易会犯这

2020-07-25 23:16:30 310

原创 最新jfrog artifactory搭建Android本地仓库教程

提高gradle编译速度 jfrog artifactory本地仓库搭建前言本地仓库功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入前言最近经常在家里写代码,因为家里没有搭建本地仓库,所以每次gradle同步都要等待很长时间,经

2020-07-18 16:39:22 2007

原创 Glide加载圆角gif图边角黑边问题

glide加载带有圆角的gif图边角出现黑边问题描述解决方法原理分析问题描述最近在用glide加载gif图时遇到了一个圆角黑边的问题,就像这样:通过查看源码发现是因为我们项目采用了自定义glidemodule,在这里将图片的解码格式设置为RGB_565导致的。public class CustomGlideModule extends GlideModule { @Override public void applyOptions(Context context, GlideBui

2020-06-14 17:58:51 1253

原创 爽!Android模拟器可以运行ARM应用了

前几天谷歌官方发布了一个消息,推出了 Android 11 系统映像,其中最大变化就是Android模拟器终于支持运行ARM应用了。下面是谷歌开发者原文看到消息后我也是第一时间做了尝试,在mac上亲测可行,但是在win10下会有问题,模拟器一启动就会导致电脑蓝屏,不知道是没做好和win10的兼容还是我的电脑有问题。原本我们的应用在genymotion模拟器会因为不支持arm架构而无法编译。...

2020-04-11 13:00:44 6887 2

原创 Android信任Https自签名证书详细教程

Android信任自签名证书前言问题描述环境准备生成自签名证书搭建tomcat服务器tomcat配置证书代码实现信任所有证书(不推荐)信任指定证书导入自签名证书信任自签名证书代码总结示例代码地址前言在上一篇 一文读懂Https原理 中,我主要介绍了Https的安全机制和实现原理,比较偏向于理论研究,可能会有点抽象。为了加深理解,今天写一篇Https的实战教程,主要介绍Https在Android...

2020-04-04 22:54:19 8047 3

原创 TextView显示省略号问题

通常我们会在文字过多情况下在TextView显示省略号,代码如下<TextView .... android:ellipsize="end" android:lines="1" .... />通过这种方式实现会在部分机型上(比如4.2的手机)存在不显示省略号的问题。所以如果需要兼容5以下的机型最好不要这么做,下面是正确方法<Tex...

2020-03-24 00:16:19 3897

原创 textview文本上下滑动问题

当textview文本过多,超出textview最大高度时,我们通常希望能够实现文本上下滑动,以显示所有内容。网上看了都说只需要设置scrollbar属性就可以,但是亲测发现无效。解决方案在xml中对textview设置scrllbars属性android:scrollbars="vertical"但是只设置scrollbars属性是不起作用的,scrollbars只是控制文本上下滑动时...

2020-03-22 21:52:20 1524

原创 android多进程操作sp问题

之前在项目中遇到了关于sp操作的一些问题,分享出来避免大家踩坑。问题描述:假如你的应用拥有多个进程,比如有两个进程,分别叫进程A和进程B,你定义了一个sp文件叫apkInfo用于存储应用的一些信息。A进程和B进程都需要存取应用信息,所以你在A进程和B进程都会操作apkInfo这个sp文件,这样会导致apkInfo存储的数据出现丢失的情况,使应用出现一些意想不到的bug(假如你存了一些比较重要的...

2020-03-03 23:29:40 2949

原创 通过adb获取安卓应用屏幕所有控件信息

执行命令:adb shell uiautomator dump /sdcard/ui.xml可以获取当前应用屏幕上所有控件的信息并保存在sdcard下ui.xml文件里面.然后通过解析ui.xml文件就可以拿到想要的控件信息.原理:调用安卓设备系统文件中/system/bin/uiautomator.jar包执行dump指令。局限:只支持sdk版本16以上的手机...

2020-02-25 09:55:48 15010 2

原创 解决as connection refused: connect错误

最近在使用AndroidStudio时遇到了connection refused: connect问题,困扰了很久终于找到了一个比较完美得解决方案,现在分享给大家,下面是解决步骤。步骤1正常遇到这个问题都是跟网络代理有关系,所以先在as的设置页里把代理关了试试。步骤2通常只执行步骤1是不管用的,还需要把本地.gradle文件的代理信息去掉。.gradle文件的路径默认是C:\Users\...

2019-11-05 18:41:56 2695

原创 Android组件间通信

Android组件间通信组件间通信是什么组件间通信实现前期准备定义基础库视频组件实现对外提供的服务实现访问音乐组件的服务代理音乐组件实现对外提供的服务实现访问视频组件的服务代理总结源码组件间通信是什么我们通常把一个module认为是一个组件,组件间通信是两个不存在依赖关系的module间进行通信的方式。在Android中由于module间不可以双向依赖,所以如果你想调用某个没有依赖关系的组件的...

2019-11-05 00:06:34 1931

原创 Android属性动画原理解析

Animator完全讲解前言概述基本用法ofFloat前言在前一篇Android视图动画原理解析中我提到了视图动画只能实现缩放,平移,旋转,透明度转换等一些简单的动画效果,对于复杂的动画则显得无能为力。正因为如此Google在Android 3.0之后引入了一个更强大的动画库,即属性动画(Property Animator)。今天我就来讲讲属性动画的一些知识点和它的实现原理。概述属性动画基...

2019-04-20 12:56:26 1300

原创 Android视图动画原理解析

Animation原理解析概述基本使用方式优缺点原理解析一句话概括视图动画原理源码分析提个问题概述视图动画支持4种动画效果,分别是translate,scale,rotate,alpha。此外帧动画也属于视图动画。基本使用方式视图动画的实例化方式:1.从xml加载:Animation animation = AnimationUtils.loadAnimation(getContex...

2019-04-17 16:55:05 548

原创 三年程序员,说点我对产品的看法

今天不分享技术,聊聊我在互联网圈混迹三年后自己对产品的一些个人看法,可能有点不大专业,因为没有高大上的理论,只有一些浅显的个人分析。首先说下为什么写这篇文章,因为就在昨天我收到了公司要解散的消息,嗯,我所在的公司,一家30人左右的创业公司,在成立了一年多左右就这样结束了。事发突然没有任何征兆,虽然有点出乎意料,但是其实也在情理之中。至于为什么会关门,主要是因为产品没有达到预期的目标,说白点就是...

2019-04-13 18:26:02 392

原创 计算机基础知识查缺补漏:原码,反码,补码

计算机只能识别二进制的数字,即0和1,为了表示二进制数就有了原码,反码和补码。原码下面是原码的定义,摘自百度百科原码(true form)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。即+1 = 0000 0001-1 = 1000 0001反码...

2019-03-31 11:23:51 368 2

原创 TextView实现酷炫字体描边效果

android文字描边效果实现概述效果图思路具体实现绘制背景源码概述最近抖音出现了不少带有描边字体的视频和图片,效果看上去很不错,今天就讲讲其中的实现原理。效果图先贴下我实现的效果图:思路一开始看到这个功能其实我还真摸不着头脑,不过仔细想想后发现其实现思路并不复杂。我们观察其效果,发现描边的路径基本是跟着文字轮廓走的,那么是不是可以这样来实现,先用粗点的画笔按照文字的路径绘制背景,然...

2019-03-30 23:28:58 1020

原创 android超简单方式实现镂空字体TextView

概述实现镂空字体用到的知识点是PorterDuffXfermode,它的作用是可以决定多个图像叠加时的显示模式。关于PorterDuffXfermode的一些说明可以参考下这篇文章:android画图之paint之setXfermode实现废话不多说,先上效果图:实现方式也很简单,直接通过自定义控件继承TextView改造下TextView的Ondraw方法,代码不过十几行,超级简单,...

2019-03-21 08:36:41 1734

原创 Android实现弹性动画效果的冒泡祝福语

你好,2019,新年祝福控件陈述效果图代码地址陈述今天是2018年最后一天,昨天在跟海豚聊天时突发灵感想写个新年祝福的程序出来,想到之前做项目时实现了一个冒泡效果的点赞功能,于是就想到做一个冒泡弹出祝福语的功能出来,然后就花了一天时间实现了这样一个新年祝福控件。效果图刚开始会有一个倒计时效果:倒计时完毕,就会在屏幕弹出祝福语:祝福语会像泡泡一样一个个弹出之后又立马消失了,是不是看不...

2018-12-31 12:09:05 1024

原创 EditText限制最大输入行数完美实现

EditText限制最大输入行数完美实现问题描述具体实现输入框宽度固定输入框宽度不固定代码地址问题描述在开发中可能会遇到这样的需求:限制输入框的输入,但是不限制具体输入字符个数,而是限制最多输入行数,当大于n行时自动截断多余的字符,用户再次输入就不会有反应。具体可能还分两种情况:第一种:输入框宽度固定,限制最多输入n行字符。效果如下第二种:输入框宽度不固定,一开始设置一个最小宽度,当...

2018-12-29 11:46:27 5025

原创 android收不到消息推送原因分析

怎么保证能实时收到推送消息?应用需要有一个常驻的后台进程,能够实时处理服务器发过来的推送消息。通过系统级推送服务来推送消息,这种做法应用不需要实现一个常驻的后台进程现状按理说如果有一个统一的系统级推送服务,大家都接入该服务那么就不会有收不到推送消息的问题了。其实google也提供了这样的服务GCM,但是因为国内无法使用google服务的原因GCM在国内是行不通的,所以外国人在使用and...

2018-10-20 12:01:38 12399 1

原创 csdn md使用指南

快捷键撤销:Ctrl/Command + Z重做:Ctrl/Command + Y加粗:Ctrl/Command + Shift + B斜体:Ctrl/Command + Shift + I标题:Ctrl/Command + Shift + H无序列表:Ctrl/Command + Shift + U有序列表:Ctrl/Command + Shift + O检查列表:Ctrl/Co...

2018-10-20 11:30:44 1110

空空如也

空空如也

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

TA关注的人

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