自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

薛瑄的博客

不论是技术还是生活,你遇到的每个困难,都是一次提升自己的机会。努力解决好每个困难,你将成为更优秀的自己

  • 博客(389)
  • 资源 (8)
  • 收藏
  • 关注

原创 Android 在动画结束回调onAnimationEnd()中remove view的崩溃解决方法及源码分析

问题:问题描述起来很简单,就是在动画结束的时候,调用父view删除子view,出现崩溃,信息如下:java.lang.NullPointerExceptionAttempt to read from field 'int android.view.View.mViewFlags' on a null object reference android.view.ViewGroup.dispa...

2019-12-19 14:56:50 8026 2

原创 Android N 7.0 应用间共享文件(FileProvider)

Android N 之前的 Uri常规Uri有两种:媒体文件的Uri是content://, 表示这是一个数据库数据。去数据库查询正常返回。其他的文件Uri是file://, 表示这个是一个文件。这个uri是通过Uri.fromFile(File file)方法生成。Android N 之前,这些uri可以传递到其他应用。Android N 中共享文件Android

2019-12-09 10:15:25 130124 5

原创 Android View 的scroll相关方法属性 以及Scroller弹性滑动原理

最近在修改fragmentation 的bug时,其中SwipeBackLayout 的实现使用是ViewDragHelper ,而ViewDragHelper 使用的是OverScroller,OverScroller 在大部分时候是可以取代Scroller的。所以先从Scroller来分析,这些知识用到好几次,经常忘记,也算做个笔记。Android开发中,但在这些api的实际使用过程中,开发...

2019-12-06 17:57:16 1222

原创 安装完APP后,点击“打开”按钮,打开APP。回到桌面,点击桌面icon打开APP,出现多个app实例

问题安装完APP后,点击“打开”按钮,打开APP。回到桌面,点击桌面icon打开APP,出现多个app实例How to prevent multiple instances of an Activity when it is launched with different Intents原因桌面启动app和安装器启动app的Intent不一样,安装完直接点击“打开”app,但是桌面点击...

2019-11-04 20:25:27 1919

原创 修改ButterKnife bug的实战经验

前言不得不说ButterKnife是一个很有学习价值的项目。我从学习源码,修改bug后,最后pull request,学到了很多东西。如果你对Butterknife 源码还不了解,建议先看一下这篇文章。本文章不介绍基础的源码流程,主要是深入一部分代码,分享一些我在调试bug,修改bug的经验。与其拿着一个黑盒子看着表面,不停得猜测里面到底哪里出了问题,不如打开盒子看一下,看懂它的逻辑,比在外面...

2019-08-01 18:49:34 1006

原创 自定义Gradle插件 字节码插桩 附带Demo

参考:Android字节码插桩采坑笔记通过自定义 Gradle 插件修改编译后的 class 文件ASM官方文档

2019-07-17 10:00:25 7149

原创 自定义Gradle plugin 、Java AnnotationProcessor 和 Kotlin Kapt 断点调试

前言首先我们先对调试器进行一些简单的了解,在去介绍 调试注解处理器AnnotationProcessor就会清晰明了,懂了原理,操作基本就是一次学会调试器手动attach调试器平时在使用AS debug APP的时候,调试器会自动attach到app的进程。其实我们也可以手动把调试器attach到指定app的进程。1、点击run 运行 项目,非debug2、点击as中的attac...

2019-06-12 11:17:01 3417

原创 LiveData 使用与源码分析——完全搞懂LiveData原理

一、LiveData简介LiveData是google官方架构JetPack系列的一个响应式开发框架,LiveData是一个可以被观察的数据持有者类。说到响应式开发或者说观察者就不免想到RxJava,RxJava将观察者模式运用的炉火纯青。但LiveData和RxJava的定位是不一样的,LiveData主要用于搭建MVVM架构,并在其中作为数据持有者,LiveData能监听组件的生命周期变化,...

2019-06-04 16:41:05 10850 2

原创 Lifecycle 使用与源码分析——彻底搞懂Lifecycle原理

一、Lifecycle 介绍Lifecycle是一个生命周期感知组件,一般用来响应Activity、Fragment等组件的生命周期变化,并将变化通知到已注册的观察者。有助于更好地组织代码,让代码逻辑符合生命周期规范,减少内存泄漏,增强稳定性。这些组件可帮助您生成更易于组织且通常更轻量级的代码,这些代码更易于维护。二、使用方法先来看一下如何使用,这样再去分析源码就能有的放矢,1.添加依赖...

2019-06-03 15:50:36 9769 4

原创 TextView 在xml 中设置图片大小

TextView xml中只能设置图片的位置,但是不能再xml中设置图片的大小 android:drawableStart="@drawable/pic"在代码中可以啊对textview 的图片进行设置,主要代码如下://设置图片的上下左右的位置,也就是宽高drawable.setBounds(left, top, right, bottom);//设置textView上下左右的图片...

2019-05-30 18:39:48 6489

原创 InputFilter 和inputType属性 ——Edittext(二)

简介Android开发中,输入框Edittext,经常会遇到控制输入类型,比如只输入数字,十进制,输入金额(两位小数 )等等。Edittext inputType属性提供了一些规则,可以满足大部分的需求InputFilter 可以自定义更复杂的输入规则一、 inputType //输入类型为没有指定明确的类型的特殊内容类型 android:inputType="n...

2019-05-25 17:40:47 1838

原创 Android7.0 网络安全配置、自定义okhttp证书 ——解决HTTPs 抓包问题

工具类下面是工具类,只需要传入OkHttpClient.Builder对象,在使用中传入this 和自定义证书的路径(assets 资源下面的路径)/** * @Author: xuexuan: 2019年5月24日19:49:10 * @Description:设置okhttp 自定义证书 */fun OkHttpClient.Builder.sslSocketFactory(b...

2019-05-24 19:56:37 3338

原创 Fragment 源码浅析——Fragment(三)

与 Fragment 相关的类我们平时使用fragment的时候都是通过创建事务,来操作fragment, getSupportFragmentManager() .beginTransaction() .add(R.id.container, new MyFragment()) .commit();查看源码可以发现getSuppo...

2019-05-24 17:43:55 969

原创 类加载器与双亲委派模型

类加载器加载类的开放性类加载器(ClassLoader)是Java语言的一项创新,也是Java流行的一个重要原因。在类加载的第一阶段“加载”过程中,需要通过一个类的全限定名来获取定义此类的二进制字节流,完成这个动作的代码块就是类加载器。这一动作是放在Java虚拟机外部去实现的,以便让应用程序自己决定如何获取所需的类。虚拟机规范并没有指明二进制字节流要从一个Class文件获取,或者说根本没有指明从哪里获取、怎样获取。这种开放使得Java在很多领域得到充分运用,例如:从ZIP包中读取,这很常见,成为J

2019-04-18 12:01:00 493

原创 DataBinding源码深入分析

在使用databinding时,更新UI界面,如果是使用普通变量的,那么在变量发生变化的时候,UI界面并不会发生变化一、数据绑定视图跟随数据刷新数据变化是视图也跟着变化则需要使用到以下两种方法继承BaseObservableObservableField,databinding默认实现了一系列实现Observable接口的字段类型BaseObservable,Observable...

2019-04-17 19:39:39 1673

原创 四种commit使用细节及源码分析——Fragment(二)

一、 每个事务(FragmentTranscation)只能被commit一次介绍代码段一public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(save...

2019-03-10 22:07:57 1811

原创 Android 系统源码——下载到编译

一直想下载、编译、调试一下Android源码 ,加强对一些framework的理解,搞了好多次,终于可以正常调试了。这里进行一些总结和分享。Android源码到模拟器运行,主要有的四个步骤:下载源码搭建编译环境准备编译我使用的环境是Ubuntu16.04 、openJDK8、Android 8.0.0硬件软件要求官方文档:要求硬件要求:如果是 Android 2.3.x (...

2019-01-12 22:24:59 47347 21

原创 为什么递归与尾递归会栈溢出?优化原理是什么?

一、递归与尾递归递归:在函数的定义中使用函数自身的方法Kotlin代码实现一个n的累加的函数fun recursive(n:Int):Int { if (n == 1) { return 1 } else { return n + recursive(n - 1) }}尾递归:若函数在尾位置调用自身(或是一个尾调用本身的...

2018-12-28 21:59:30 7476 1

原创 Gradle深入理解指南

Gradle比较通俗的讲,它是一个项目构建工具,一个项目从代码build.gradle文件使用DSL参考:Gradle教程Gradle官方文档

2018-12-22 22:32:16 933

原创 Zuul 超时、重试、并发参数设置

Zuul 服务网关服务网关 = 路由转发 + 过滤器1、路由转发:接收一切外界请求,转发到后端的微服务上去;2、过滤器:在服务网关中可以完成一系列的横切功能,例如权限校验、限流以及监控等,这些都可以通过过滤器完成(其实路由转发也是通过过滤器实现的)。Spring Cloud Zuul包含了对Hystrix和Ribbon的依赖,下面将一一介绍ribbon 参数配置提供客户端的负载均衡功...

2018-11-01 20:10:43 11343 2

原创 Maven 打包项目时出现的错误

打包时,没有install 依赖项目使用maven管理的spring boot 项目,项目A 依赖项目B,在打包项目A的时候,出现下面的错误报错:Failed to execute goal on project hong-bao: Could not resolve dependencies for project com.xuexuan:hong-bao:jar:0.0.1-SNAPSH...

2018-10-31 22:56:36 10065 1

原创 Android Webview JS交互 自动点击遇到的问题

这篇文章主要是记录,在webview中实现自动点击按钮,和内容填充。遇到一些问题,希望能对你有所帮助Webview 与 JS交互:Webview 与 JS交互,可以查看这篇文章Android:你要的WebView与 JS 交互方式 都在这里了下面的JS代码实现的功能是:点击帐号登陆,输入账号密码,登陆String js = "javascript:{document.getElementB...

2018-09-22 12:09:11 3788

原创 关于Mysql 的时区问题

问题:遇到这样一个问题,Mysql的时区,没有设置,默认是时区是0,在java代码中对应的字段类型是TimeStamp,mysql字段类型也是TimeStamp项目A代码中获取到的时间 是正确的。写到数据库的时间也是对的。从数据库读取出来时间是正确的项目B代码中获取的时间是对的写到数据库的时间,慢8小时从数据库读取出来时间,却是正确的。(也就是说比数据库中的时间快...

2018-08-22 17:23:29 16546 1

原创 Lint found fatal errors while assembling a release target.

错误信息:调试的时候,都没有问题,但是在打包的时候,报出下面的错误Lint found fatal errors while assembling a release target. To proceed, either fix the issues identified by lint, or modify your build script as follows: ... ...

2018-08-17 16:22:07 15030 9

转载 Accept-Encoding gzip 乱码 和Okhttp的解决方法

在使用okhttp请求服务器数据的时候,发现返回的数据一直都是乱码,但是使用fiddler抓包,decode后,可以正常显示。刚开始一直怀疑是编码的问题,后来对比了hex的数据和程序中乱码的二进制,发现不一样。fiddler可以自动处理,说明不是密钥加密。经过不断的尝试发现时Accept-Encoding设置的问题,下面就一一详细介绍一下Accept-Encoding设置Accept-En...

2018-08-14 10:11:42 17869 2

原创 View 的 translationX、 translationY , X、Y 和 Left、Top,Right、Bottom

网上有不少人把view的坐标和点击事件的坐标 混为一谈一、View的相关坐标和位置先来看一张图,对这几个值有个大概了解,下面再进行详细的分析先来了解一个概念:view动画不改变view的真实位置,就是肉眼看上去,view位置发生了变化,但是它的点击区域还是在原来的位置。属性动画和setTranslationX/setTranslationY ,会改变显示位置和真实位置上...

2018-08-02 14:47:45 9133 3

原创 Android Transition 页面过度动画

前言对于Activity的过度动画都很熟悉了,大多数都是直接使用下面的函数,指定退出的Activity和进入的Activity动画overridePendingTransition(enterAnim, exitAnim);这种动画很简单,旋转平移翻转等,这些操作,而且是这个界面的操作。下面介绍一种更加美观的Activity过度动画Android在新的sdk中给我们提供了另外一种A...

2018-07-30 18:18:11 7387

转载 detached HEAD以及切换分支代码丢失

切换detached HEAD 分支代码丢失首先要知道,所有提交过的代码,都是可以被找回的。先来说说,从detached HEAD分支切换到其他分支,导致代码丢失的解决办法。每个人造成这种问题的原因,可能不尽相同,但是解决办法确实通用的解决办法:1、执行git reflog可以看到提交记录2、git checkout b4f7193、git checkout -b te...

2018-07-26 17:35:21 4465

原创 Your app(s) are using an unsafe implementation of the HostnameVerifier interface.

最近在把APP上架到Google Play的时候,被拒了,提示如下: HostnameVerifier Your app(s) are using an unsafe implementation of the HostnameVerifier interface. You can find more information about how resolve the issue i...

2018-07-19 10:02:06 3490 1

原创 Kotlin 错误解决大集合

解决Kotlin错误:Smart cast is impossible, because the property could have been changed by this time未完待续

2018-06-30 22:42:39 3599

原创 CentOS 7 防火墙

文章主要介绍防火墙的使用,和遇到的一些问题CentOS 防火墙 命令CentOS 6 系列使用 iptables Centos 7使用firewalld代替了原来的iptables。查看防火墙的状态:Centos 7 firewall 命令:firewall-cmd --zone=public --add-port=80/tcp --permanent ##开启...

2018-05-14 18:12:24 624

原创 Centos7 在docker中安装Mysql 8.0 的相关问题

问题一:参考docker 官方的mysql文档中,使用如下命令在docker创建一个容器为mysql,设置配置文件、数据挂载,root的密码为123213docker run --name tools-mysql -p 3306:3306 --privileged=true -v /home/tools/mysql/conf.d:/etc/mysql/conf.d -v /home/t...

2018-05-03 22:51:08 3604 1

转载 Spring Boot JPA 使用以及设置多个主键

一、spring data jpa的使用推荐以下两篇文章spring data jpa的使用 spring-boot-jpa 使用@PreUpdate 和@PrePersist二、设置多个主键(复合主键)下面介绍两种方法:第一种:@IdClass来设置多个主键1、先写一个包含主键的类@Datapublic class PrimaryKey implement...

2018-04-23 17:38:17 16913

原创 JPA分页多条件查询和分页联表查询

一、分页多条件查询–重写Specification的toPredicate方法Spring Data JPA支持JPA2.0的Criteria查询,相应的接口是JpaSpecificationExecutor。Criteria 查询:是一种类型安全和更面向对象的查询 。这个接口基本是围绕着Specification接口来定义的, Specification接口中只定义了如下一个方法:...

2018-04-23 17:15:21 7118

原创 Spring Cloud之eureka配置——eureka.instance

在使用eureka注册服务的时候,需要配置instance下面的字段,如果对这些字段的含义不了解,配置过程中就会出现一些问题,或者想改变注册中心的服务实例的显示格式等等。主要说明一下,几种配置的含义,以及不同内网,同一内网,公网上注册,实例名称显示问题等等配置代码:eureka: instance: non-secure-port-enabled: true //1 ...

2018-04-23 15:24:21 21563 1

原创 Spring Cloud Config的配置中心获取不到最新配置信息的问题

问题描述1、 Spring Cloud Config的配置中心,修改了配置信息,微服务没有及时更新。git远程仓库设有密码 2、Spring Cloud Config的配置中心在运行一段时间之后,发现修改了配置信息,但是微服务应用并拿不到新的配置内容。同时,发现配置中心存储配置的目录/tmp 的配置内容被清空了。原因问题一配置账号密码,下面会给出代码。问题二这里主要分...

2018-03-28 20:04:39 12248 2

原创 Linux 用户相关操作

一、/etc/passwd文件添加用户、删除用户、设置密码、用户组等这个文件查看当前系统有哪些用户,也可以把用户ID修改为0,来是用户成为root权限的用户。更多详情参考这里二、/etc/sudoers文件这个文件可以修改用户的权限,设置用户是否可以root权限等等## Allow root to run any commands anywhere root A...

2018-03-28 14:24:57 566

原创 Linux 进程、端口、服务相关命令

进程命令1、查看正在运行的进程:如何在Linux中查看所有正在运行的进程2、杀死进程:linux下杀死进程(kill)的N种方法注意:在进程命令中,经常会用到这样的命令,ps aux|grep xx 用来过滤查找,但是需要注意,使用这个命令也会返回grep进程的信息。而且每次运行grep,进程号都不一样参考:为什么“ps aux”列出的进程中的PID一直在变呢?端...

2018-03-18 15:08:12 680

原创 解决maven unresolved plugin 以及 如何控制maven plugin 的插件版本

最近在写一个项目的时候,有两个module,A是一个Spring boot,B是一个没有使用框架的module。问题一:B库很长时间在执行Downloading plugins for,如果中途退出了idea,插件没有下载完,再次进入idea,会出现unresolved plugin的报错分析:这个问题可以通过两个方面来解决: 1、更改仓库地址,提高下载速度,一运行,很快...

2018-03-16 15:53:54 55829 5

原创 spring boot: javax.persistence.PersistenceException: Unable to build Hibernate SessionFactory

报错信息: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘entityManagerFactory...

2018-03-16 12:04:19 5369 1

activity四种启动模式

activity四种启动模式,

2016-08-31

BadgeNumber 封装类

Android系统 应用图标显示未读消息数(BadgeNumber) 桌面app图标的角标显示,http://blog.csdn.net/xx326664162/article/details/51082574

2016-04-07

APP初始使用,半透明引导界面

APP初始使用,半透明引导界面

2016-03-30

APP初次使用,半透明引导界面

APP初次使用,半透明引导界面

2016-03-30

volley.jar

Volley可是说是把AsyncHttpClient和Universal-Image-Loader的优点集于了一身,既可以像AsyncHttpClient一样非常简单地进行HTTP通信,也可以像Universal-Image-Loader一样轻松加载网络上的图片。

2015-12-15

fastjson-1.1.46.android.jar

阿里巴巴 JSON解析jar包 fastjson,测试表明,fastjson具有极快的性能,超越任其他的Java Json parser 更新时间 2015年10月 27日

2015-12-15

RationalRose2003使用手册.ppt

Rational_Rose_2003使用手册,软件使用的详细教程

2014-09-22

css2.0帮助文档

css2.0帮助文档,亲自用过,非常符合要求

2013-08-21

空空如也

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

TA关注的人

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