自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 图片压缩 in Android

图片压缩背景成像系统两大核心: 镜头+感光元器件底大一级压死人小米11发布会上:一般全画幅单反/微单相机,厂家设置的有效像素为2400万像素 cmos面积:864mm2 每平方毫米上2.78个像素asp-c 有效像素为2400万像素 cmos面积 332.3mm2 每平方毫米上7.23个像素华为mate40 pro 1/1.28英寸 500

2021-07-07 19:43:26 14610 2

原创 用zxing生成没有白边的条形码

参考:zxing设置条码两边空白(EncodeHintType.MARGIN)无效的分析 阅读上方源码解析后得到思路: 白边的大小: int leftPadding = (outputWidth - (inputWidth * multiple)) / 2; 要让leftpadding为0,需要让传入的width和code.length是整数倍的关系, 那么传入exp...

2018-07-26 09:50:49 10359

原创 Edittext相关

更改下划线的颜色普通来说,对当前页面/window设置主题,主题里设置colorAccent就是Edittext的取色 如果要与当前主题颜色不同,则采用单独主题,内部覆盖两个属性: 参考: http://www.codexpedia.com/android/setting-edittext-underline-color-in-android/<style name="My...

2018-07-26 09:30:19 8213

原创 android技术选型(持续更新中...)

技术选型的方方面面,不断更新

2017-04-18 22:14:17 10718 1

原创 okhttp源码解析-http协议的实现-重定向

http协议中的重定向 client: 向server发送一个请求,要求获取一个资源 server: 接收到这个请求后,发现请求的这个资源实际存放在另一个位置 于是server在返回的response header的Location字段中写入那个请求资源的正确的URL,并设置reponse的状态码为30x client: 接收到这个response后,发现状态

2017-03-08 17:05:19 10160

原创 notification全解和工具类

分类相关属性显示相关标识符flag优先级提醒方式事件(PeddingIntent)返回activity栈参考https://gold.xitu.io/post/5863264861ff4b0068b1817d7.0新功能二次封装后的api第一步:buildSimple(int id,int icon,CharSequence contentTitle ,CharSequence contentTex

2017-02-14 11:36:30 9478

原创 springmvc开发时IDE的使用和最简化配置

IDE的选用 采用的方案是: 用Intellij IDEA来编辑代码,用MyEclipse来编译和部署. 原先小程序开发时就采用 webstorm编辑+微信开发工具编译运行 的组合开发方式,而且电脑16G内存毫无压力,所以就傲娇地左剑右刀地上阵.MyEclipse:用于建立工程,编译和部署建立web Project时目录设置无缝对接tomcat,而且服务器部署非常方便,一键部署,且

2017-01-04 17:08:49 11050

原创 https 学习笔记以及在 retrofit/okhttp 中的使用 (超多图, 爪机慎入)

说明: 看博客的过程中做的思维导图,截图贴在这里.仅是个笔记和摘要,不能算真正的文章.证书的分类按适用的域名数量按认证等级按签发主题 这里涉及到证书链的概念.这也是我们后续编程处理需要理解的一个概念证书链证书的验证流程证书链的一些例子 百度的 12306 let`s encrypted可以看到,根证书的有效期是近20年.而let`s encrypted自己的证书有效期是3年

2016-12-06 10:26:31 8630

原创 基于retrofit的网络框架的终极封装(二)-与retrofit的对接与解耦,以及遇到的坑

在上一篇基于retrofit的网络框架的终极封装(一)中介绍了顶层api的设计.这里再沿着代码走向往里说. 由于这里讲的是retrofit的封装性使用,所以一些retrofit基础性的使用和配置这里就不讲了.参数怎么传递到retrofit层的? 所有网络请求相关的参数和配置全部通过第一层的api和链式调用封装到了ConfigInfo中,最后在start()方法中调用retrofit层,开

2016-12-04 14:36:32 9268

原创 基于retrofit的网络框架的终极封装(一):第一层(参数组装层)的API设计

什么是分层 app的架构,不管是MVC,MVP,MVVM,架构演变中,贯穿始终的概念都是分层和解耦.那么这个分层和解耦怎么体现出来? 简单地说就是,我这一层接收上一层的输入,上一层的你别管我怎么处理,我最终会给你一个输出/返回值,你完全不用理会我是怎么处理的,只要有输入,就会有输出,而且一般是通过一个简单的方法的调用来实现.那么,对于app中常用的网络层来说,怎么样的封装才是最合理的?我

2016-11-30 17:57:52 8405

原创 Adapter的封装

简述先前在一微信讨论组里讨论起adapter和viewholder的抽取,有的说他们项目里用的是抽得他妈都不认识…他妈都不认识那还怎么用? 也看了github上几个开源出来的抽取方法,有的抽取过度,有的不便使用,还要自己记id什么的,感觉都不是很满意,于是回头看看自己项目里封装的,感觉还是比较合理的,兼顾了可读性和重用性,封装也适度,于是把它放出来,与大家交流交流.抽取封装BaseAdapter的基

2016-11-30 10:46:47 8579

原创 微信小程序开发框架搭建

使用开发工具的正确姿势微信提供的开发工具的编辑功能不是一般的水,写代码肯定不能用它,否则就是浪费生命.不说别的,连自动保存都没有,第一次写时写了一个多小时,后面下班直接关掉,也不弹出提示说没保存.然后第二天过来,写的代码全没了!!! 顿时感到巨坑无比.这些工具开发人员吃干饭的么??? (后来的版本已经修复不能自动保存的问题了,当然编辑功能还是不好用.)它的正确用法是作为运行和调试工具.那么适合作为

2016-11-30 10:45:24 32689

原创 吐槽小程序开发踩过的坑,以及一些解决方法

网络请求相关bug: http状态码不管是什么,一律被解析成200要真正解决,只能等官方去fix这个bug了.发出请求需要注意的几个细节1.header要设置正确:get请求时为header:{ "content-type":'application/json' },post请求时为: header:{ "content-type":'app

2016-11-30 10:44:17 31302 2

原创 微信小程序登录逻辑整理

官方文档文档相关地址:用户登录 获取用户数据 用户数据的签名验证和加解密微信两个api所拿到的信息:login和getUserInfo注册/登录小程序端:通过上面wx.login和wx.getUserInfo两个api拿到相应的信息,并通过上方接口传给自己的服务器. 需要传输的信息有7个参数:appid 小程序唯一标识secret 小程序的 app secretjs_code //w

2016-11-30 10:41:45 56272 4

原创 沉浸式状态栏一行代码调用

用到的库 //状态栏变色 compile 'com.readystatesoftware.systembartint:systembartint:1.0.3'方法封装 /** * 需要在setContentview之后再调用 * @param activity */public static void setStatusBarColor(Activity activity) {

2016-11-30 10:38:57 8657

原创 介绍一下页面状态管理类PageStateManager,我实在看不下去你们直接用Layout

缘起页面状态管理是每个app都要考虑的问题–第一次进入显示正在加载中的页面,内容为空的页面,发生错误页面. 段位低一点的,在BaseActivity和BaseFragment中写个方法 段位高一点的,自己造一个包含这几个状态的Layout的轮子(LoadingLayout之类的),在layout文件中使用.but,每次要管理页面状态时都要在xml中用这个layout包裹我们的内容,不繁琐么?

2016-11-30 10:37:04 9821 1

原创 基于七牛和fresco的一整套安卓图片解决方案

apk内部图片优化:控制apk大小几种图片的主要特点:webp:文件最小,有透明通道。 jpg:文件较小,无透明通道。 png:文件较大,有透明通道。对于小图标1.小图标大多是不规则形状,显示时多会要求能看到后方背景,所以需要有透明通道,一般使用png。尺寸小,没必要转webp。 如果图标后方背景为纯色且确定,那么直接用jpg就可以了。2.UI给的png图应当再通过tinypng或者“智图”将

2016-08-09 16:36:02 11748 4

原创 安卓里的gif图片解决方案:Fresco+gif

背景gif图片的特殊性安卓里常用的图片有jpg,png,webp,gif.前三者都是位图模式,而gif实际上是几张图片依次播放的动画.安卓原生并不支持gif的显示.Fresco图片加载框架能够显示gif动画,但是有几个坑.fresco 显示gif的基本方法:开启自动播放就可以了 PipelineDraweeController controller = (PipelineD

2016-08-08 21:08:33 22256 2

原创 图片裁剪框架ucrop使用前的封装

项目地址:uCrop我封装好的CropUtilsuCrop本身的文档说明去剪切前配置参数:UCrop.of(sourceUri, destinationUri).withAspectRatio(16, 9).withMaxResultSize(maxWidth, maxHeight).start(context);剪切完后,在onactivityResult里处理数据@Overridepu

2016-08-04 22:55:30 15529 7

原创 自定义圆头进度条

先看看最终的效果动态图为什么要自己写使用系统进度条和progressdiaog的问题:系统原生进度条以及原生progressdialog随着版本变化,ui也在变化,尤其是5.0以上material 风格的progressbar的ui太生硬,体验不好。系统进度条虽然可以自定义颜色渐变,但是渐变头尾接触的地方是一条直线分隔,丑爆了。 progressdialog有一个系统主题有圆滑的接触,但翻看源码

2016-08-01 22:28:24 10632 3

原创 Fresco图片加载框架的介绍,相关开源库以及工具类的封装

Fresco图片加载框架的介绍,相关开源库以及工具类的封装Fresco图片加载框架的介绍相关开源库以及工具类的封装工具类FrescoUtils地址简介优点一内存管理优点二更便捷的使用相关文档及开源库使用心得及一些方法的封装加载超级大图还是会卡初始化利用SimpleDraweeView加载图片的一般姿势显示图片时把人的头部给截掉了可用的缩放类型获取缓存的图片文件如果我想用fr

2016-06-25 12:31:11 9658 3

原创 jni中arm64-v8a,armeabi-v7a,armeabi文件夹的意义和用法

jni中arm64-v8a,armeabi-v7a,armeabi文件夹的意义和用法起因之前并没有关注这块,直到:您的应用被拒绝,原因:xplay5sQ心里点击笑值点击拍照显示停止运行,查看发过来的日志,发现是java.lang.UnsatisfiedLinkError: dlopen failed: library “/libfacesdk.so” not found ,明明放了该so文件,为什么

2016-05-26 11:15:01 24544 4

原创 安卓代码混淆的一点经验

安卓混淆中遇到的坑的记录和解决

2015-12-01 15:12:07 2790

原创 APP的不同level的保命措施

进程的生命周期 进程有四种形态和优先级:空进程,后台进程,服务进程,前台进程.可视进程 系统内存不足时杀进程来回收内存的顺序从左往右. 正常启动一个应用后,安卓系统默认一个应用开启一个任务栈,当任务栈被清空时,进程中如果没有服务,就变为级别最低的空进程,系统内容不足时,最先被杀死.普通level:提升到服务进程 提供进程优先级的第一步:应用中开启服务,将进程优先级提升到服务

2015-07-21 14:56:08 628

原创 JNI小结

什么是JNI?安卓中java代码和c/c++本地代码之间的调用.为什么要使用JNI? 安全性 :安卓java代码容易被反编译,而c/c++不反编译后都是汇编代码,基本看不懂 复用性: 有一些功能本地代码已经实现了,就没必要再用java实现一遍. 局限性: 有些直接操作硬件的代码java没法实现,只能用c来实现 效率:大计算量时,c代码执行效率远高于java代码什么时候需要用到

2015-07-21 11:11:42 592

原创 一道javaBean内省题

/** * 存在一个JavaBean,它包含以下几种可能的属性: 1:boolean/Boolean 2:int/Integer 3:String 4:double/Double 属性名未知,现在要给这些属性设置默认值,以下是要求的默认值: String类型的默认值为字符串 www.itheima.com

2015-03-24 10:48:52 611

原创 java中的排序功能小结(非算法)

Arrays.sort()基本数据类型数组的排序:一般按升序排,可指定排序的范围 static void sort(int[] a) 对指定的 int 型数组按数字升序进行排序。 static void sort(int[] a, int fromIndex, int toIndex) 对指定 int 型数组的指定范围按数字升序进行排序。 对象数组的排

2015-03-22 18:55:04 1181

原创 java基础之泛型

jdk1.5版本以后出现的一个安全机制。表现格式:< >好处: 1:将运行时期的问题ClassCastException问题转换成了编译失败,体现在编译时期,程序员就可以解决问题。 2:避免了强制转换的麻烦。只要带有<>的类或者接口,都属于带有类型参数的类或者接口,在使用这些类或者接口时,必须给<>中传递一个具体的引用数据类型。泛型技术: 其实应用在编译时期,是给编译器使用的技术,到了运行时

2015-03-22 16:52:51 573

原创 java基础之String类与正则表达式

概述 java中用String类对字符串进行描述,定义了诸多属性和方法。常量池与引用值:String s1 = "abc"; // s1指向的内存中只有一个对象abc,该对象存在于常量池中,s1的实际值是String s2 = new String("abc"); // s2指向的内容实际有两个对象:常量池中的字符串abc、堆内存中new的那个对象 。其中,常量池中的对象是不可改变的,s2的

2015-03-22 15:41:28 634

原创 java基础之I/O

一、概述 I/O的本质是通信。有多种源端和接收端:文件(硬盘)、键盘/控制台、网络链接等 有多种不同的通信方式:顺序、随机存取、缓冲、二进制、按字符、按行、按字等。 java设计了大量的类来解决 这个通信问题。在电脑上的数据有三种存储方式,一种是外存,一种是内存,一种是缓存。缓存用于提升计算机工作效率。 将数据冲外存中读取到内存中的称为输入流,将数据从内存写入外存中的称为输出流。I/O

2015-03-21 16:50:40 496

原创 java基础语法

java概述 1991 年Sun公司开发的面向对象的编程语言, 如今广泛应用在电脑,打印机,手机等各种设备上。三种技术构架 JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发; JAVASE:Java Platform Standard Edition,完成桌面应用程序的开发,是其它两者的基础; JAVAME:

2015-03-21 11:06:26 539

原创 java基础之GUI

概述 Graphical User Interface(图形用户接口):用图形的方式来显示计算机操作界面。java提供的两个开发包: java.Awt:Abstract Window ToolKit (抽象窗口工具包),需要调用本地系统方法实现功能。属重量级控件,不同情况下显示效果可能不一致。 javax.Swing:在AWT的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完

2015-03-20 20:23:57 399

原创 java基础之异常处理

简述 定义:编译或运行时期发生的不正常情况。描述不正常情况的类,就称为异常类。在异常类中,子类名均以父类作为后缀,阅读性较强。. 异常体系:error::一般不可处理的。 是由jvm运行时抛出的严重性的问题,一般不针对性处理,要直接修改程序。 Exception:可以处理的。 Exception中的分类编译时异常:Exception及其子类(RuntimeException及其子

2015-03-20 17:35:48 574

原创 Map集合遍历过程调用remove方法引起的问题

Set<Integer> set2 = map2.keySet(); for(Integer key :set2) { if(key>50 && key<150) map2.remove(key); } System.out.println(map2);运行后抛出Concurren

2015-03-15 13:53:42 2793

原创 java基础之枚举

概念 让某个类型的变量的值只能取若干个值中的一个,否则,编译器报错。将原先运行时才能发现的问题提前到编译时揭露。也是jdk1.5新特性实现原理:1、将构造函数私有化, 使其他人无法创建对象 2、定义预定数量的对象,并用public 和final、static修饰,供使用者调用 3、可以有若干具体或抽象方法,比如获取下一个元素的方法,可以定义为抽象,然后在各自创建对象时使用匿名内部类调用该

2015-03-14 20:22:06 366

原创 java基础之反射

黑马程序员–java基础之反射Class类反射的概念Constructor类:构造函数的反射*Field类:成员变量的反射Method类:成员方法的反射数组的反射Class类 Java中的各个java类属于同一类事物,于是用Class类来描述这类事物。获取Class类对象的3个方法:1、通过加载进内存的类的名来获取:比如要创建Person的一个对象时,将Person的class文

2015-03-14 20:03:26 483

原创 java基础之:集合

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、集合框架:              (一)关系图:                   (二)学习方法:主要学习各集合类的方法:增删改查拿。注意不同集合类之间的功能特点和区别,以便编程时选择合适的对象容器。 二、Collection集合:        (一)C

2015-03-10 16:41:41 443

原创 java基础之:面向对象

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------面向过程和面向对象:     面向过程:程序=算法+数据结构;首先确定如何操作数据,然后再决定如何组织数据。     面向对象(OOP):程序=数据结构+算法;首先确定操作那些数据,然后决定如何操作这些数据。其思想类似于CSS:将HTML各标签的格式提取出来,作为一段

2015-03-10 11:11:04 520

原创 java网络编程基础

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------ 一、术语1、主机地址/IP地址:           计算机在网络上的标识,不易记忆,可用主机名, 如本地主机127.0.0.1,主机名为localhost     java相关类:InetAdress类:无构造函数,通过静态方法获取对象,给定主机名,即可获取地址I

2015-03-01 20:55:26 587

空空如也

空空如也

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

TA关注的人

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