自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

奋斗

此时不拼,更待何时!

  • 博客(35)
  • 资源 (2)
  • 收藏
  • 关注

原创 ActivityResult的优雅实现

我们都知道在Android中使用startActivityForResult打开一个新的活动,并得到返回值。但这种方式存在一定的局限性,需要在一个Activity或者Fragment中才能实现。有的时候代码架构的不同,可能这种方式并不能满足我们的需要。比如在Adapter中实现跳转等。下面提供一个优雅的方式,使得发起和获取结果在同一处。便于我们操作。提供一个可观察的ActivityResult,并在订阅的时候,将结果全部发射出去class ActivityResultObservable<T&gt

2020-10-01 19:03:58 2162 1

原创 Android 应用内悬浮球开发

关于悬浮窗口主要分为两类:一类是应用内悬浮窗口,一类是系统类的悬浮窗口(类似微信视频弹窗,由于会覆盖在其他应用上,需要申请额外的系统权限)。

2020-06-11 22:28:40 1702

原创 设计模式之代理模式(动态代理)

上一篇介绍了设计模式之代理模式的静态代理。在实际编程中,静态代理模式都很好理解。但是通常使用比较多还是动态代理。主要是因为实现阶段不用关系代理是哪个,而在运行阶段指定具体哪个代理。java中著名的spring框架中面向AOP编程的思想就是基于动态代理。说到动态代理,不得不说个接口 InvocationHandler,java API文档中有句介绍的话。InvocationHandler is ...

2018-11-18 20:56:54 687

原创 JAVA UTC时间和本地时间

UT - 世界时Universal Time 世界时是最早的时间标准。 在1884年,国际上将1s确定为全年内每日平均长度的1/8.64×104。以此标准形成的时间系统,称为世界时,即 UT1。 1972年国际上开始使用国际原子时标,从那以后,经过格林威治老天文台本初子午线的时间便被称为世界时,即UT2, 或称格林威治时间(GMT),是对地球转速周期性差异进行校正后的世界时。TAI...

2018-09-03 22:05:10 9137

原创 DVM和ART的区别详解

DVM是Google为了Android平台研发的虚拟机,DVM严格上来说并不是JAVA虚拟机,其本身并没有遵循JVM规范。ART是在Android4.4的时候由Google研发,用于替换DVM的虚拟机。ART虚拟机与DVM主要有以下4点不同:1、应用运行方式不同:DVM中的应用每次运行的时候,字节码都需要通过JIT编译器编译为机器码,这样就会导致应用的运行效率变低。而ART,系统在安装应用程序的时候会进行一次预编译处理,将字节码预先编译成机器码并存储在本地,这样应用程序每次运行时就不需要执行编译了,运

2021-07-03 12:04:12 810

原创 Toast BadTokenException原因及修复方案

Toast这一基本的操作,居然也能够产生crash,你可能难以置信

2021-05-05 21:25:20 949 2

原创 Rxjava2 操作符 compose

compose字面意思为组成。Rxjava的链式调用虽然很方便,但在很多时候也显得冗余。1、比如线程的切换。绝大多时候都是固定的.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())2、比如特定格式的数据处理。例如网络请求的返回的数据,通常网络请求返回的数据,我们和后台之间存在某个统一的基类。举个例子:当code = 0的时候,表示后台正确返回了数据,code = 其它表示发生了某类异常。这个时候我们就需要一个

2020-10-11 08:59:10 801

原创 Android SharedPreferences加密存储

我们都知道sharedPreferences是将信息以键值对的xml格式对存储在应用的对应目录下。对于一些重要信息就十分不安全。我们需要对信息进行加密存储。即使是加密存储,秘钥的管理也十分重要,如何才能让秘钥不被外界获取,这里我们使用Android系统提供的AndroidKeyStore来提供秘钥,最大程度保证安全性。object AppKeyStore { private var sApplicationContext: Context? = null private var sSys

2020-10-09 22:35:27 1185 1

原创 c语言const详解

有时候我们希望定义这样一种变量,它的值不能被改变,在整个作用域中都保持固定。例如,用一个变量来表示班级的最大人数,或者表示缓冲区的大小。为了满足这一要求,可以使用const关键字对变量加以限定:const int MaxNum = 100; //班级的最大人数这样 MaxNum 的值就不能被修改了,任何对 MaxNum 赋值的行为都将引发错误:MaxNum = 90; //错误,试图向 co...

2020-03-19 00:06:55 636

原创 腾讯x5内核(TBS)集成使用详解(webView视频播放)

腾讯x5内核(TBS)集成使用详解腾讯x5内核(TBS)集成简单,目前在腾讯的QQ和微信中均有使用。相对于android的系统内核来说,TBS简直太完美了TBS(腾讯浏览服务)的优势速度快:相比系统webview的网页打开速度有30+%的提升;省流量:使用云端优化技术使流量节省20+%;更安全:安全问题可以在24小时内修复;更稳定:经过亿级用户的使用考验,CRASH率低于0.15%...

2019-03-16 19:36:42 24172 2

原创 Java多线程详解

java并发之多线程

2019-03-09 10:01:55 202

原创 JVM的内存结构

JVM是按照是按照运行时数据的存储结构来划分内存结构的,JVM在运行java程序的时候,将它们划分成了几种不同的数据结构,分别存储在不同的区域。JVM的虚拟规范中,划分成6种,1、pc计数器:pc计数器,也叫程序计数器,是用来保存当前正常执行的程序的内存地址。由于线程是cpu调用的最小单元,java程序是多线程执行的。也就是说PC计数器需要记下每条线程当前运行的虚拟机字节码指令地址。当然如果...

2019-03-08 21:19:34 355

原创 JAVA部分序列化之关键字transient

Java中对象的序列化指的是将对象转换成以字节序列的形式来表示,这些字节序列包含了对象的数据和信息,一个序列化后的对象可以被写到数据库或文件中,也可用于网络传输,一般当我们使用缓存cache(内存空间不够有可能会本地存储到硬盘)或远程调用rpc(网络传输)的时候,经常需要让我们的实体类实现Serializable接口,目的就是为了让其可序列化。当然,序列化后的最终目的是为了反序列化,恢复成原先的...

2019-01-26 10:04:16 892

原创 设计模式之代理模式(静态代理)

代理模式也被称作委托模式。通俗点来说,就是有一个对象代理另一个对象的操作。当无法或者不想直接访问某个对象的存在困难时,可以通过一个代理对象来间接访问。为了对调用者保持透明。需要让委托对象和代理对象之间实现同样的接口。代理模式分为静态代理和动态代理。 静态代理主要是:不想直接访问某个对象,使用一个代理类来访问的方式。...

2018-11-18 20:23:50 521

原创 Java读取Apk的包名,版本号,权限列表,支持的最小系统版本等信息

Java读取Apk的版本号,包名,权限信息,支持的最小系统版本等系统等。无论是做后台开发,或者是android开发。有时候需要获取apk文件的版本号,包名,权限,以及支持最小系统版本等信息。比如在做apk更新的时候,如果不是发布应用商店,自己做更新的时候。我们可能就需要得到服务器版本的apk版本号等基本信息。那么怎么去获取apk文件的这些基本信息呢。这里介绍一个工具GetAPKInfo.jar的...

2018-11-14 18:10:15 5363 2

原创 android华为手机全屏显示

最近发现很多应用在第一次安装之后,都会提示一个 全屏显示 的问题。这个问题,这样一看,好像也没啥,但是对开发应用的开发者来说。感觉被打了一巴掌一样。自己好好编码完成的应用。出来个这个是什么鬼。想解决这个问题,却好像也不知道从何下手。根据华为官方的说法。目前这类问题。在Top1000的应用中,目前也只有35%的应用适配了这个问题。也就说常用的应用中,大多数都没有解决这个问题。其实这个问题,是从...

2018-09-28 20:45:49 8571 7

原创 c语言字符串详解

c语言字符串的两种处理方式,c语言处理字符串一般使用字符数组来处理,记得加上结束符,否则会出现乱码。1、通过字符数组来处理#include &amp;amp;amp;amp;lt;stdio.h&amp;amp;amp;amp;gt;#include &amp;amp;amp;amp;lt;Windows.h&amp;amp;amp;amp;gt;#include &amp;amp;amp;amp;lt;stdlib.h&amp;amp;amp;a

2018-09-16 18:59:04 6920

原创 android shortcuts (android 7.1的快捷启动方式)

其实android shortcuts早在android 7.0的时候就出来了,也不是什么稀奇玩意,但可惜的是国内一些主流很多手机都没有支持shortcuts,一些主流的app。像微信,QQ等都没有添加这项功能。 就个人而言,觉得这个功能,还是很有用的,有的app可能主要使用的就是那几个功能,有的时候,却要打开整个app,点击多次,去使用这个功能,这种是很不方便的。 介绍可以参考下...

2018-09-05 22:59:46 1373

原创 android 流式布局 和 RadioGroup自动换行

android 流式布局 ,其实这个有点烂大街,之所以说下,主要是因为RadioGroup这个东西,缺少的就是自适应的能力,不能换行搞的很烦,其实核心的代码也就是流式布局的onMeasure和 onLayout 。测量和分布。 代码: github github地址 简单说下RadioGroup的自动换行 看一下核心的代码 onMeasure int widthSize = Measur...

2018-08-31 22:37:09 1808

原创 android 自定义签名View

随着办公移动化,使用电子签名的场景也越来越多。 电子签名View的核心代码:public class SignView extends View { private Paint textPaint; private ArrayList&lt;Path&gt; paths; public SignView(Context context) { thi...

2018-08-25 23:41:01 970

原创 android 语音提醒,文字转语音播放

android本身具有文字转语音播放的TTS,一些第三方的sdk,想百度语音,科大讯飞语音等等都提供了文字转语音播放的功能,但这些第三方sdk大都收费,还挺贵的。 这里推荐两种方法:1、android自带的TTS,适合播放量比较大的文本。部分手机不支持中文播放。声音比较难听 2、MediaPlayer播放语音,就类似支付宝语音到账的提醒等,不适合播放大量的文本,声音可以定制,可...

2018-08-20 22:59:16 5714 1

原创 android弹出式菜单(效果爆炸)

有没有觉得常见的弹出菜单都很丑,常见的上下文菜单也很难看,当弹出一个菜单提供功能的时候,整个一点效果都没有。显得很突兀。 下面介绍一个菜单。重写了popupwindow 。效果图如下。 github地址github传送门 话不多说上代码:public class PathPopupWindow extends PopupWindow { private fi...

2018-08-08 20:55:35 8378

原创 android多级树形结构列表(完整代码,可以选择某项)

多级列表是个很常见的功能,发现很多代码都不好扩展,或者由于数据结构设计不好,导致开发维护比较费时间。下面自己写了一个,github连接地址: github地址分享一波。如图所示 看一下节点的代码,最重要的设计TreePointpublic class TreePoint { private String ID; // 7241, //账号i...

2018-08-07 23:05:03 28209 46

原创 自定义LoadingView

加载动画有很多,常见有转圈圈的,(主要是菊花图太难看了)。但是这种一般适合在屏幕中间显示,如果是下拉刷新这种,就需要使用某个动画来实现加载的动画效果。 这里分装了一个,还可以参考 天猫app刷新完成之后,控件消失的动画(此部分没实现 ,可以自己去绘制)。 效果图如下 public class LoadingView extends View { private Paint pai...

2018-07-26 17:46:45 1151

原创 android自定义仪表盘(可拖拽)

因为项目最近需要用到仪表盘,又不想使用之前使用的背景图的方式。主要是想自己写一点代码。觉得绘制要比图片好。于是有了下面这张图 里面从弧度,刻度,文字,指针都是canvas绘制出来的。/** * Created by xulc on 2018/7/18. */public class DashboardView extends View { private int min...

2018-07-26 14:40:18 3453 4

原创 android webView全面解析基础设置,https,进度条

webView基础设置讲解webView通过webSetting有很多的设置,一不注意可能就有个没有设置,然后渲染某个网页的时候失败了,下面是webView的重要设置。可以根据实际情况做调整。WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); /...

2018-07-11 19:00:53 307

原创 android仿支付宝首页更多、应用编辑界面

项目越来越大,模块越来越多,首页上展示的东西又不能全部都展示出来,只能选择几个重要的模块展示出来。但是不同的用户关注的层面不一样,只好让用户自己去选择需要展示的应用。就像支付宝的应用编辑界面一样。### 自定义界面和支付宝界面 ### 整体介绍总的来说实现了从json数据转化为当前界面,可以自由的编辑界面保存到本地。主要界面布局 一个标题栏...

2018-06-30 21:44:14 17958 15

原创 AtomicInteger的分析使用

测试方法private static AtomicInteger atomic = new AtomicInteger(0); private static int dex = 0; public static void main(String args[]){ testAtomic();// testInt(); } privat...

2018-06-27 22:49:47 1070

转载 Gradle超级详细解析

android gradle配置详解AppExtension类及其属性可能大部分人看到AppExtension类会感觉到非常的陌生,其实我们在app中的build.gradle中填写配置信息的时候,经常看到它,它是什么呢?如果你按ctrl+鼠标左键对着android{},点击进去就知道了,其实android...

2018-06-26 18:56:26 1727

原创 android滑动冲突

当两个滑动的容器,比如ScrollView和ListView嵌套的时候,就会出现冲突的情况。或者ScrollView嵌套地图控件的时候。也会产生滑动冲突,底层控件无法滑动。解决的核心方法。来自ViewGroup中的一句核心的判断语句。可能不同版本的API这句话表述的方式不太一样,但基本原理是一致的。if(disallowIntercept || !onInterceptTouchEvent...

2018-06-10 18:37:05 152

原创 android修改状态栏颜色

android经常需要修改状态栏的颜色,或者在启动页面或者登录页面将状态栏设置为透明背景(当然如果你设置为全屏的也可以)。#android 4.4修改状态栏颜色//大于4.4 设置状态栏颜色 @RequiresApi(api = Build.VERSION_CODES.KITKAT) public void setStatusBar(int color){ ...

2018-06-02 14:09:07 605

原创 Cordova自定义插件

现在混合式应用越来越流行,之前公司开发的一款是基于ionic的混合应用。总的来说,效果还不错,也能基本上实现一套代码,多个平台上跑,流畅性也还不错。总体代码框架和可扩展性也还不错。但是也遇到了一些问题:网上大多数插件都不太适用,需要自己开发当时引入部分es6的语法,结果导致代码在老的手机上不能跑起来,这里可以通过webpack打包的时候将es6的语法通过babel转化成es5语法。由于插...

2018-05-31 12:55:11 1111

原创 多线程下的单例模式

单例模式分为两种:懒汉单例模式和饿汉式单例模式懒汉单例模式懒汉单例模式 //懒汉式单例类.在第一次调用的时候实例化自己 public class Singleton { private Singleton() {} private static Singleton single=null; //静态工厂方法 public static Singl...

2018-05-30 20:23:42 691

原创 Android获取状态栏高度

布局文件 &amp;amp;lt;Button android:id=&amp;quot;@+id/btn_getStatebar&amp;quot; android:layout_width=&amp;quot;wrap_content&amp;quot; android:layout_height=&amp;quot;wrap_content&amp;quot; android:t

2018-05-21 09:11:22 22619

原创 Android 基于百度地图 自由多边形覆盖物demo

主要实现的功能1、按住多边形可自由拖动 2、长按多边形顶点可以自由拖动多边形顶点 3、点击多边形线条可以生成新的点 4、点击多边形顶点可以删除多边形顶点...

2018-05-19 10:59:21 1633

获取apk应用的基本信息

获取apk应用的基本信息。可使用命令行java -jar getPackageInfo.jar qq.apk

2018-11-13

获取apk文件的详细信息

获取android apk文件的基本信息,使用命令java -jar GetMorePackageInfo.jar qq.apk可以获取到qq.apk文件基本信息。

2018-11-13

空空如也

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

TA关注的人

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