- 博客(145)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 SimplePhotoPicker:调用系统相机、相册的轻量框架
# SimplePhotoPicker一个进入相册,调用相机的**可高度定制化**的框架,持续维护中…效果图———– 那些你所担心但是已经帮你解决的问题1.Android6.0**隐私权限**请求问题—>已判断并处理2.Android7.0 FileProvider访问问题—>已判断并处理目前实现的功能
2018-09-13 17:25:50
415
转载 Android Studio新建module,以及module引用aar等相关问题
一、新建module如果是作为lib被引用,需要选择Android Library。二、作为lib的module如果引用了aar文件:1、把aar文件放到module的libs目录下2、作为lib的module的gradle文件:repositories { flatDir { dirs 'libs' }} dependencies { ......
2019-10-31 10:47:03
1281
1
转载 aar包导入引起的Error:Failed to resolve: :xxxaar: 的问题
在Android Studio中 如果在module中依赖了aar库,当build工程的时候,会出现failed to resolve的错误想要解决这个问题可以在app的build.gradle中加入下面代码:repositories { flatDir { dirs 'libs' } }举个栗子:在app的build.gra...
2019-10-31 10:42:08
4236
原创 Fragment的show()、hide()和attach()、detach()切换方式生命周期过程
1.使用show()、hide()方式进行fragment切换 @Override public void onClick(View view) { switch (view.getId()){ case R.id.main_home: switchFragmentWithShowHide(0); ...
2019-09-26 16:33:08
2767
1
转载 Java开发人员最常犯的9个错误
1.Array转ArrayList当需要把Array转成ArrayList的时候,开发人员经常这样做:String [] strArray = {"0" , "1" , "2"};List<String> list = Arrays.asList(intArray);Arrays.asList会返回一个ArrayList,但是要特别注意,这个ArrayList是Arrays类...
2019-09-06 10:26:39
281
原创 Android 获取目录下所有文件信息(名字、大小)
private void getFiles(){ File file = new File(GlobalConstant.POSLOGPATH); File[] files = file.listFiles(); for (int i = 0; i < files.length; i++) { File childFil...
2019-08-06 14:37:00
2843
1
转载 关于线程安全最通俗易懂的解释
下面的博客是在博客园上面看到的大佬写的,写的很好,通俗易懂,作为一个萌新看完以后促使我对线程安全有了新的理解。博客未经博主的同意,所以未擅自转载,下面附快速通道点次进入博客内容...
2019-07-26 16:01:01
377
原创 Android崩溃日志收集---CrashHandler,给你自残的理由
使用CrashHandler的目的测试人员过来告诉你,“你写的代码崩溃了!”“what ? ! 我写的代码怎么可能会崩溃?!你复现一下,污蔑我的话信不信自残给你看”“哎,这次怎么好了,什么情况?”虽然说这种几率性bug可以晚点解决,但是终归是要解决的,但是复现又有点困难,那怎么办?那就只能使用CrashHandler了先看如何实现CrashHandlerpublic class Cra...
2019-03-29 17:05:38
5821
原创 进阶之路:Java设计模式---外观模式
外观模式定义:外部与子系统间进行通信时,需要通过一个统一的外观进行,为子系统的一系列接口提供一个统一的界面。外观模式定义了一个高层接口,这个接口使子系统更易使用。外观模式又称为门面模式,它是一种对象型结构模式。实现:客户端发出一条指令:“将大象放进冰箱”;服务端为了保证代码的单一职责原则,分别定义了三步操作:1.打开冰箱门;2.将大象勾引进冰箱;3.关闭冰箱门;在不使用外观模式的情...
2019-03-28 14:49:54
138
原创 一天或者几天一个小算法---数列排序方式
/** * 数字排序 */public class Algorithm5 { /** * 冒泡排序 * 自认为是最简单的一个排序方法,只是拿出一个数,大的放后,小的放前就可以了 * 时间复杂度为O(n2) */ public static int [] sortOfBubble(int [] valueArray){ ...
2019-03-27 14:59:10
176
原创 进阶之路:Java设计模式---适配器模式
适配器模式定义:适配器模式就是把一个类的接口变为另一个类期望的接口,从而让原来两个因接口不匹配而无法一起工作的两个类能在一起工作适配器模式:类适配器模式和对象适配器模式类适配器模式实现:/** * 目标类 */public interface Target { void operationOne(); void operationTwo();}/** *...
2019-03-26 15:51:43
129
原创 一天或者几天一个小算法---Fibonacci(菲波那切)数列
题目输入n,求出Fibonacci数列第n项的数值思路1.Fibonacci数列是什么F(0) = 0;F(1) = 1;F(n) = F(n-1) + F(n-2)2.实现开始Fibonacci数列的第0、1、2项为基础数值,后面所有的数值都由这三个得来,前三个数的值可以判断得出,后续的数值可以使用循环或者递归实现。public static long getFibonacc...
2019-03-25 17:02:02
207
原创 进阶之路:Java设计模式---Builder模式
什么是Builder模式?将一个复杂对象的构建与它的表示相分离,使得同样的构建过程可以创建不同的对象。一步一步构建一个复杂的对象,它允许用户只通过指定复杂对象的内容和类型就可以构建他们,用户不需要知道内部的具体构建细节。有什么特点?优点:1.良好的封装性,使用建造者模式可以使客户端不必知道产品内部组成的细节2.建造者独立,容易扩展3.在对象的创建过程中会使用到系统中的一些其他对象,这些...
2019-03-25 15:34:36
163
原创 进阶之路:Java设计模式---单例模式
package com.example.administrator.javadesignmode.single_mode;public class SingleInstance { private static SingleInstance singleInstance; private SingleInstance(){} /** * 饿汉式 ...
2019-03-23 16:15:48
134
转载 Android 在不确定后台返回json格式时,如何解析数据
前面一篇文章我介绍了Gson的解析的基本方法。但我们在享受Gson解析的高度封装带来的便利时,有时可能会遇到一些特殊情况,比如json数据中的字段key是动态可变的时候,由于Gson是使用静态注解的方式来设置实体对象的,因此我们很难直接对返回的类型来判断。但Gson在解析过程中如果不知道解析的字段,就会将所有变量存储在一个Map中,我们只要实例化这个map就能动态地取出key和value了。先给...
2019-03-11 16:48:57
2420
原创 AndroidTimeLine(时间轴)绘制
实现方法Recyclerview+ItemDecoration重写ItemDecorationclass TimeLineItemDecoration(var context: Context) : RecyclerView.ItemDecoration() { //上下左右的偏移量 var topOffset : Int = dp2px(context , 30) ...
2019-03-07 15:10:37
4202
2
转载 RxJava+Retrofit框架中多种操作符解释
转自:http://www.jianshu.com/p/2b0aeb6b6b61从年前一两个月开始,就开始慢慢接触RxJava+Retrofit,针对以往开发中遇到的情况,慢慢写了一个框架Demo。文章不在进行入门介绍,需要了解的同学,可以查看笔者总结的文章RxJava、Retrofit分割Response一般来说,网络请求结果包括以下信息: { "message": "操作成...
2018-12-13 11:38:09
1093
原创 android 两数相除,保留两位及多位小数
/** * valueOne:除数 * valueTwo:被除数 * scale:保留几位小数 */ fun divide(valueOne: Int, valueTwo: Int, scale: Int): Double { if (scale < 0) { throw IllegalArgumentE...
2018-12-11 10:50:02
4350
原创 Retrofit添加拦截器报错:must call proceed() exactly once
这是因为你的OkHttpClient.Builder调用的addNetworkInterceptor方法添加的拦截器,这种方式添加的拦截器里面的Chain只能调用一次proceed方法,如果想调用多次,你的拦截器就要用addInterceptor方法添加,就没问题了...
2018-12-07 17:35:16
1940
原创 GridLayoutManager中setSpanSizeLookup()的基本操作,实现布局多样化
效果图上面布局格式为1-2-1-2,你可以使用itemtype做多布局,但是还有一种更简单的方法就是使用GridLayoutManager的setSpanSizeLookup()函数代码如下适配器和布局文件的代码就不贴出了,只贴出关键代码private void initView() { recyclerView = findViewById(R.id.recyclerV...
2018-11-15 15:27:04
10316
3
转载 android 手机分辨率与DPI对照表
分辨率对应DPIldpi QVGA (240×320)mdpi HVGA (320×480)hdpi WVGA (480×800),FWVGA (480×854)xhdpi 720P(1280*720)xxhdpi 1080p(1920*1080 )xxxhdpi 4K(3840×2160)手机常见分辨率:4:3VGA 640*480 (Video Graphics...
2018-11-09 15:58:49
53399
1
转载 AtomicBoolean的介绍与使用
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AtomicBoolean是java.util.concurrent.atomic包下的原子变量,这个包里面提供了一组原子类。其基本的特性就是在多线程环境下,当有多个线程同时执行这些类的实例包含的方法时,具有排他性,即当某个线程进入方法,执行其中的指令时,不会被其他线程打断,而别的线程就像自旋锁一样,一直等到该方法执行完成,才由JVM...
2018-11-09 11:59:06
987
原创 一个小Demo来理解关于IPC(进程间通信)中的aidl
项目地址:Server端代码:Server端代码链接Client端代码:Client端代码链接1、IPC的基本要求IPC(Inter-Process Communication)进程间通信是要在两个相互独立的进程之间进行信息的传递,在Android中每个进程都会被分配一个独立的虚拟机,以及内存空间,还会有自己的Application,所以进程间数据是不共享的,想要共享就只能通过一些方法来让...
2018-10-29 15:45:13
269
原创 Android canvas.save()与canvas.restore()的使用总结
含义canvas.save();画布将当前的状态保存canvas.restore();画布取出原来所保存的状态使用canvas.save();与canvas.restore();一般结合使用,.save()函数在前,.restore()函数在后,用来保证在这两个函数之间所做的操作不会对原来在canvas上所画图形产生影响。比如下面这张图:蓝色方块里面有三张图,两张正常画,一张倾斜4...
2018-10-10 17:17:36
19171
2
原创 ModeMVC:在activity中堆代码就叫做MVC吗?
首先,看看这是不是自己现在Android编程中如果在你没有特别认真设计框架,没有认真考虑面向对象的六大原则对编程重要性的时候,我们一般都是认为自己使用的是MVC的框架模式。但是你使用的真的是MVC吗?还是只是单纯的在activity中堆代码?如果是后一种情况,那么MVC框架的M,V,C这三层到底体现在哪呢?难道这三层都体现在了activity中吗?如果是这样,那么我们也只是在单纯的堆代码…M...
2018-09-26 16:51:58
281
转载 Transition:Activity过渡、共享元素动画
本文原项目地址为:https://github.com/lgvalle/Material-Animations在文章最后,有我自己对着这个项目手敲的一份。代码基本一模一样,只有略微的修改,加了一些注释,以及将其中大多数英文翻译成了中文。此篇 API 均为 Android 5.0(API 级别 21) 以上才可支持。此demo一共分为四部分:1.1 普通过渡 Transition;...
2018-09-12 17:34:47
1667
转载 Android Studio布局预览功能无法显示
第一种:今天刚升级AndroidStudio3.0稳定版,死机已经好几次了不知道为什么,同时布局预览功能也有问题,提示:Failed to load AppCompat ActionBar with unknown error.后来查询了下,需要在应用的引用样式中加上Base的前缀,在Theme.AppCompat.Light.DarkActionBar前面加上Base,如下:<styl...
2018-09-12 14:38:06
4367
原创 Android客户端修改加载的h5页面样式
为什么要修改有的网页在你设置了WebView的WebSetting的时候,在手机端的显示会比较满意,但是部分网页以及部分手机就算你设置了WebSetting,但是在显示的时候还是会有问题,比如网页顶部的标题字体太大,当显示到手机的时候字体出现了重叠,影响用户体验效果。如何修改WebViewClient webViewClient = new WebViewClient(){ ...
2018-09-05 16:33:03
1979
原创 Recyclerview内部的bug:IndexOutOfBoundsException: Inconsistency detected
错误日志 java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item position 15(offset:15).state:25 android.support.v7.widget.RecyclerView{8dfa7c VFE...... ........ 15,15-795,1584 #7f0900...
2018-09-04 18:51:34
1626
转载 Java基础之—反射
反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码)) 一、反射的概述JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。要想解剖一个类,必须先要获取到该类...
2018-07-31 17:09:11
209
转载 Android Text设置神器之SpanableString
TextView在Android中几乎是再常见不过的控件了,几乎遍布在各个角落里,对TextView并没有什么技术点来做分析,但是有时候可能会需要你在项目中处理一些特殊字体,比如下划线,横穿线,亦或者是为TextView部分字体设置点击或者颜色背景等等,这点需求虽然不是什么难事,但是选不好解决方法真的会可能会让你折腾好久。说了这么多无非就是开篇引个题,下面为大家介绍SpanableString哈。...
2018-07-30 11:12:39
876
原创 Android收集崩溃日志并上传
public class CrashHandler implements Thread.UncaughtExceptionHandler { public static final String TAG = "CrashHandler"; // 系统默认的UncaughtException处理类 private Thread.UncaughtExceptionHand...
2018-07-25 17:40:26
2330
转载 Java中的static关键字解析
Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一。下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列举了一些面试笔试中常见的关于static的考题。以下是本文的目录大纲: 一.static关键字的用途 二.static关键字的误区 三.常见的笔试面试题 ...
2018-07-12 15:04:38
157
转载 Android 背景透明度设置总结
一、写在前面的在需求上遇到背景设置透明度还是比较常见的,设置透明度有几种方式,但是不同的场景应用下,不同的方式可能会出现一些问题。针对开发过程中的需求做以下总结。二、先看效果图图1、 图2、图3、 图4介绍:图1、蓝色头部和输入框背景初始状态 图2、点击按钮01,输入框的透明度不起作用,和title的透明度一样 图3、点击按钮02,背景透明度设置正常,但是可能会对全局的背景有影响 ...
2018-07-03 16:32:13
9366
转载 Android根据经纬度获取城市名的方法
根据经纬度获取当前城市名的几种方式如下(获取城市名需要网络连接)1. 通过服务获取城市名百度:http://api.map.baidu.com/geocoder?output=json&location=39.913542,116.379763&ak=esNPFDwwsXWtsQfw4NMNmur1google:http://maps.google.com/maps/api/geo...
2018-07-02 15:42:36
4731
转载 Android屏幕适配全攻略(最权威的官方适配指导)
转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因、重要概念、解决方案及最佳实践,我相信如果你能认真的学习本文,对于Android的屏幕适配,你将有所收获!Android屏幕适配出现的原因重要概念屏幕尺寸屏幕分辨率屏...
2018-06-29 17:17:09
440
转载 解决Navicat for MySQL 连接 Mysql 8.0.11 出现1251- Client does not support authentication protocol 错误
今天在电脑上安装了Mysql 8.0.11,然后又屁颠屁颠地安装了Navicat for MySQL,打开Navicat准备链接数据库的时候出现了如下提示:上网搜索解决方案,网上说出现这种情况的原因是:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password, 解决问题方法有两种:方法1.升级navi...
2018-06-29 16:20:14
2972
1
转载 Android Retrofit2 动态(静态)添加请求头Header
Retrofit提供了两个两种定义HTTP请求头字段的方法即静态和动态。静态头不能改变为不同的请求,头的键和值是固定的且不可改变的,随着程序的打开便已固定。动态添加@Header@GET("/")Call<ResponseBody> foo(@Header("Accept-Language") String lang);12@HeaderMap@GET("/search")Call...
2018-06-28 16:34:26
12392
转载 Mac下安装配置gradle
1.下载gradle2.解压3.获得gradle解压后的路径4.修改.bash_profile文件,配置环境变量 vi ~./bash_profileexport GRADLE_HOME=/Users/FengZhen/Desktop/java/gradle/gradle-3.4.1/binexport PATH=$PATH:$GRADLE_HOME5. source ~/.bash_prof...
2018-06-04 10:15:47
474
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人