自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Fantasy

决定做什么事情,就要对自己狠一点,否则什么也做不成。

  • 博客(81)
  • 收藏
  • 关注

原创 使用Java实现信息摘要算法

在实际开发中,我们会经常用到一些不可逆的加密算法,例如:MD5算法、SHA1算法、信息摘要算法,还有哈希算法等等。如果没有好好学习一些,真得会搞混的。所以我查找了相关资料,在这里简单介绍一下。消息摘要算法分为三类:MD(Message Digest):消息摘要 SHA(Secure Hash Algorithm):安全散列 HMAC(Hash-based Message ...

2019-09-02 17:40:07 1759

原创 使用Java实现RSA加密解密

RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。这里提供一个在线进行RSA加密解密:http://tool.c...

2019-08-25 21:53:57 1772

原创 Android为页面添加水印

现在市面上,有很多APP在一些关键页面上会有水印,水印一般都是一些身份相关的信息,这样可以保证截屏后的图片具有识别性,能够知道这张截图是谁截取的。

2019-07-29 17:14:58 10887 18

原创 使用Java实现AES加密解密

AES,高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。严格地说,AES和Rijndael加密法并不完全一样(虽然在实际应用中二者可以互换),因为Rijndael加密法可以支持更大范围的区块和密钥长度...

2019-07-12 14:57:08 2270

原创 使用Java实现3DES加密解密

3DES又称TripleDES,是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次DES加密算法。密钥长度是128位(bit)和192位(bit)。原版DES容易被破解,新的3DES出现,增加了加密安全性,避免被暴力破解。它同样是对称性加密,同样涉及到加密模式和填充方式。加密模式有ECB、CBC、CTR、OFB、CFB。填充方式有PKCS5Padding、PKCS7Padding、ZeroPadding、ISO101

2019-07-10 23:14:03 2412

原创 Android图形验证码

图形验证码可以让服务器以图片的形式传给客户端,也可以让客户端自己实现。那客户端要怎么做呢?其实很简单,可以使用Android的Canvas、Paint和Random来实现。用Random来随机生成数字、字母、颜色、画笔原点等等,设置Paint的颜色和样式,然后再Canvas上面绘制,这样一个图形验证码就生成好了。

2019-06-28 14:51:54 2565 1

原创 监听Android系统截屏

因为Android系统没有提供截屏的相关API,所以需要我们自己去实现。国内的Android手机都是使用定制系统的,截图方式五花八门,采用对截图按键的监听的方案并不合适。Android系统有一个媒体数据库,每拍一张照片,或使用系统截屏截取一张图片,都会把这张图片的详细信息加入到这个媒体数据库,并发出内容改变通知,我们可以利用内容观察者(ContentObserver)监听媒体数据库的...

2019-06-10 11:00:28 4091 15

原创 Android安全:禁止APP录屏和截屏

Android有些APP会为了安全,禁止录屏和截屏,例如:金融、银行相关的。禁止录屏和截屏并不难,只需要在 Activity 的onCreate() 方法中添加一行代码即可:getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);添加这行代码后,当截屏的时候,系统会弹出一个Toast提示“禁止屏幕抓取”;当录屏的时候,看似...

2019-05-08 15:00:25 38282 29

原创 Web APP、Hybrid APP、Native APP对比

Web APP(网页应用)是指基于Web的系统和应用,其作用是向广大的最终用户发布一组复杂的内容和功能。目前多采用H5标准开发。在使用上的具体表现是,手机浏览器点击进入,会有一些应用的小图标,这些小图标在点击后,在浏览器里加载的页面跟你直接下载一个APP后打开的页面是相同的,这些小图标代表的就是Web APPHybrid APP(混合应用)是指介于Web APP、Native APP这两者之间的APP,兼具“Native APP良好的用户交互体验的优势”和“Web APP跨平台开发的优势”,即同时使用了原

2019-03-25 17:43:29 674

转载 Vue.js新手入门指南

最近在逛各大网站,论坛,以及像SegmentFault等编程问答社区,发现Vue.js异常火爆,重复性的提问和内容也很多,楼主自己也趁着这个大前端的热潮,着手学习了一段时间的Vue.js,目前用它正在做自己的结业项目。在做的过程中也对Vue.js的官方文档以及其各种特性有了许多认识。作为一个之前以PHP+模版引擎为主的开发,从一个从未接触过除HTML+CSS+JavaScript+JQuery以外的前端技术的人到现在可以独立使用Vue.js以及各种附属的UI库来开发项目,我总结了一些知识和经验想与大家分

2019-03-11 12:44:02 1397

原创 JavaScript 数据类型

JavaScript 拥有7种数据类型,具体如下:基本数据类型:字符串、数字、布尔、null、undefined、Symbol。引用数据类型:数组、对象JavaScript 拥有动态类型,这意味着相同的变量可用作不同的类型:

2019-01-02 15:08:01 310

转载 JsBridge实现JavaScript和Java的互相调用

虽然这篇文章已经发表了有一段时间了,不过这篇文章所讲的 JsBridge 却一点都不落伍,依旧是目前所推崇的做法。话不多说,下面就是本篇文章的正文了。前端网页 JavaScript(下文简称Js)和 Java 互相调用在手机应用中越来越常见,JsBridge 是最常用的解决方案。

2018-12-18 10:39:23 1671

原创 设置Android状态栏的颜色

1. 前言现在的APP为了提高界面美观,会根据界面整体的风格,调整状态栏的颜色。但是由于安卓系统版本众多,有谷歌Android、小米MIUI、华为EMUI等等,而且对于设置状态栏的颜色还没有一个统一标准,所以适配起来是一件很麻烦的事情。通过查询资料,我汇总了一些方法,封装了一个工具类StatusBarUtils。2. 工具类package com.fantasy.utils.ui;...

2018-12-10 16:34:00 843

原创 Android获取屏幕宽度和高度、状态栏高度的方式

1. 屏幕宽度和高度WindowManager manager = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);// 或者下面这种方式也可以// WindowManager manager = this.getWindowManager();Point point = new Point...

2018-11-30 20:48:08 597

原创 能够在任意尺寸下自适应的ImageView

1. 前言虽然对于ImageView来说,android:scaleType可以设置显示的图片如何缩放或者移动以适应ImageView的大小。不过,当ImageView的宽度android:layout_width="match_parent"时,我们很难让图片保持宽高比不变,不被拉伸拉长。对于这种情况,我们只能通过自定义ImageView来解决。2. 解决方案获取加载在ImageVi...

2018-11-18 17:57:50 689

原创 Java数据类型

1. 前言Java是一种强类型语言。这就意味着必须为每一个变量都声明一种类型。在Java中,数据类型分为两大类——基本数据类型和引用数据类型。共有8种基本数据类型,其中有4种整型、2种浮点类型、1种用于表示Unicode编码的字符单元的字符类型char和1种用于表示真值的布尔类型boolean。另外,引用数据类型大概由这几种构成——类、接口、数组、枚举、注解。2. 基本数据类型2.1 ...

2018-10-30 11:34:19 310

原创 如何修改Android WebView的字体大小

1. 前言Android开发中,大多数与字体稍有联系的UI控件(例如:TextView、EditText等)都会提供处理字体的API。我们知道,Android WebView可以用来加载网页。那网页上的文字,除了前端可以去控制外,我们原生开发能不能去控制呢?2. 解决方案答案是可以控制的。几行代码就行了。具体如下:WebView webView = findViewById(R....

2018-10-29 10:50:38 11425 1

原创 设置Android APP字体不受系统设置字体大小影响

1. 前言Android手机系统的设置中,有个小功能,可以全局调整字体大小。这就导致了APP里面的字体也受影响了,字体变小或变大,对原来布局会产生影响,用户体验不好。2. 解决方案查了一下资料,发现很容易解决。我们只需要重写Activity的 getResources() 方法就行了,例如:写在BaseActivity里面。代码如下:package com.fantasy.bas...

2018-10-25 20:15:17 4727

原创 如何判断Android手机是否黑屏和锁屏

1. 前言Android手机在一段时间未操作后,会黑屏,然后点亮屏幕后,会显示锁屏界面。在实现某些功能(例如:手机QQ的手势密码锁定)的时候,需要对黑屏或锁屏进行处理。2. 解决方案因为Android手机完全黑屏后,就会自动锁屏的,所以我们完全可以这样认为,黑屏和锁屏是一样的。判断手机是否黑屏或锁屏了,有两种方案,但是如果要判断是否解锁成功了,就只有方案二可以。2.1 方案一在...

2018-10-22 17:47:46 8358

转载 Android推送技术研究

1. 前言最近研究Android推送的实现, 研究了两天一夜, 有了一点收获, 写下来既为了分享, 也为了吐槽. 需要说明的是有些东西偏底层硬件和通信行业, 我对这些一窍不通, 只能说说自己的理解.为什么要研究Android推送技术? 主要还是毕业设计要做一个即时通信app, 我是不喜欢做什么社交app的, 也就象牙塔里的人想得出来, 说实话有这功夫还不如钻研一个小技术点, 把一个点研究透...

2018-09-19 17:00:23 332

原创 Android Notification关闭呼吸灯、震动和声音

1. 前言最近需要实现一个不会打开呼吸灯、不会震动和没声音的通知,查找了很多资料,但没有一个写得完整的。东凑凑,西凑凑,自己摸索了几个小时,找到了一种较可靠的方式。2. 解决方案这种方案兼容到了Android 8.0,三星、华为和小米手机都有效果。NotificationManager notificationManager = (NotificationManager) con...

2018-08-29 23:03:27 12238 2

原创 让EditText的光标始终都在最后面,以保证只能从最后面开始增删数据

1. 前言最近做项目,遇到一个需求——要求输入框的光标始终都在最后面,保证只能从最后面开始添加或删除数据。涉及到光标的情况,有这两种情况——当输入框获取到焦点时,光标要在最后面;当用户手动去移动光标时,光标始终在最后面(相当于不让用户移动光标)。一开始是想通过监听EditText输入框是否获取焦点来处理的,但是发现上面说的两种情况,都无法解决。最后参考这篇博客 Edittext光标始终在最后面...

2018-08-11 16:21:09 5516

原创 混合开发中,H5页面如何监听Android手机返回键

1. 前言混合开发中,如果当前操作的页面是H5写的。那么这个时候点击Android手机返回键,默认是返回到上一个页面,跟浏览器的回退功能是一样的,都是返回到历史记录中的前一个记录。看着好像没啥问题,但是当H5页面当前有一个弹窗,按照正常的交互,这会儿点击手机返回键,应该是关闭弹窗的,但是实际上却不是这样子,不仅仅关闭了弹窗,而且返回到了上一个页面。那我们该如何处理这种情况呢?2. 解决方案...

2018-07-15 22:14:58 14259

原创 解决在安装器中打开APP后,当APP从后台回到前台时,会重新启动的bug

1. 前言最近很意外地发现了一个系统级别的bug。具体描述如下:第一种操作:安装APP成功后,在安装器中点击“打开”,APP启动,先进入闪屏页,然后才进入首页; 按下Home键,回到桌面; 再点击APP的图标,APP并不是打开之前已经加载完的首页,而是重新进入闪屏页,然后再进入首页。第二种操作:安装APP成功后,关闭安装器,回到桌面,点击APP的图片,APP启动,先进入闪屏页...

2018-04-30 21:28:00 4277

原创 Android中使用MuPDF预览PDF文件,并且正常显示电子签章

1. 前言早在去年11月,项目的APP就已经集成了MuPDF,可以正常显示带有电子签章的PDF。但是,最近有用户使用了新的电子签章技术,MuPDF加载了带有新电子签章的PDF后,会报“文本重定位”的错误,有些手机(例如:华为 mate 10)会出现无法显示电子签章的情况。所以,不得不紧急处理一下。经过测试定位,最后发现是so文件报错了,报的是“文本重定位”的错。之前完全没接触过NDK开发,对s...

2018-03-29 23:30:40 4767 7

原创 Android Studio使用Eclipse的签名文件进行打包

1. 前言最近将一个老项目从Eclipse迁移到Android Studio上来,在测试APK覆盖安装的时候,出现了一个问题。直接在“Genetate Signed APK”导入Eclipse的签名文件,然后打出来的APK在覆盖安装的时候,报错了。查阅了相关资料,找到了解决方案。2. 解决方案① 选中项目,点击 File -> Project Structure

2018-02-04 11:56:40 1239

原创 Android 7.0及以上的设备无法在Eclipse上打印日志

1. 前言因为公司的老项目是使用Eclipse开发的,而且数量还不少,所以把所有项目都转移到Android Studio上来不是一个很明智的选择。虽然老项目增加新功能的情况很少,但是由于手机系统的更新,还是会出现一些兼容性问题。这个时候,就得来调试代码了。如果兼容性问题是出现在Android 6.0或者以下的手机系统里,这种情况还是很好解决的,直接找台手机连上电脑,然后用Eclipse来调试代...

2018-01-27 11:48:33 2417

原创 Android Studio中替换aar包不生效

1. 前言最近遇到一个奇怪的问题。因为第三方的SDK要更新,是一个aar包,所以我就跟以往一样,直接复制粘贴替换掉,然后Synchronize(快捷键:Ctrl+Alt+Y) → Clean Project → Rebuild Project。可是我发现,新包的API我调用不了,Android Studio提示没有这个方法。然后我就重新按照上面的流程再走一遍,还是不行。尝试了很多次,依旧不行。...

2017-12-11 11:17:51 8958 2

原创 Android静态注册广播和动态注册广播的区别

1. 前言Android中的广播主要可以分为两种类型:标准广播和有序广播。标准广播是一种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎都会在同一时刻接收到这条广播信息,因此它们之间没有任何先后顺序可言。这种广播的效率会比较高,但同时也意味着它是无法被截断的。有序广播是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器能够收到这条广播消息,当这个广播接

2017-11-24 16:37:05 2874

原创 Android下载文件,如何获取实际的文件名

1. 前言之前APP实现下载文件的功能,都是让后台把下载地址和文件名(包含文件后缀名)传过来。不过近日后台只传了下载地址,我懒得麻烦人家也把文件名传来,所以就自己查资料,想方法解决。2. 解决方案解决的办法如下面的代码所示,目前还算能满足要求,如果大伙们有更好的方法,可以在评论说一声。 HttpURLConnection connection = null; int...

2017-11-23 22:39:56 6584

原创 解决Android APP启动出现白屏或黑屏的问题

1. 前言Android开发者都会有这样的体会吧!自己开发的APP,在启动APP的时候,会出现一段时间白屏或黑屏(这跟手机系统相关,不过大多数都是显示白屏的),然后才会显示APP的界面。其实这段时间的出现,是APP在启动时,需要初始化一些数据,然后才会去加载主活动(第一个Activity)造成的。那么我怎么解决呢?2. 解决方案第一步:在res/values/styles.xml文件中...

2017-10-27 17:29:59 1898

原创 在Android布局文件中使用空格的方法

1. 前言在Android布局文件(XML格式的文件)中使用空格,这个是所有Android开发者会遇到的问题。有些人觉得这很简单,不就是直接敲“空格键”就可以了吗?然而实际上这种做法并不是很好,在不同手机,显示的效果会有不同。那该怎么做呢?2. 解决方案    宽度大约是一个汉字的宽度的四分之一,在不同机型会有不同表现&

2017-10-14 23:07:30 1127

原创 Android ViewPager一次性加载全部页卡,并且滑动时不被销毁

1. 前言我的ViewPager有3个页卡,目前有这样的一个需求,一打开ViewPager所在的界面,3个页卡都要全部加载完毕,并且滑动页卡的时候,任何一个页卡都不会被销毁。2. 解决方案mViewPager.setOffscreenPageLimit(2);说明:只要为ViewPager设置上面那个属性,就可以实现前言中的需求。这个属性的默认取值为

2017-09-27 16:33:22 4181

原创 解决Android中getResources().getColor()方法过时的问题

1. 前言最近新项目开发中,发现用Java代码设置控件颜色的方法getResources().getColor()过时了。上网查了一下,才知道从Android 6.0开始,这个方法被Google设置成过时了。既然过时了,那么就会有新的方法咯!2. 解决方案2.1 方案一ResourcesCompat.getColor(getResources(), R.color.black, ...

2017-09-22 20:37:03 5603

原创 Android真机测试,连接到本地服务器的方法

1. 前言作为一名Android开发者,不管怎么说,都会经历使用Android真机来测试连接本地服务器这样的事情。这里所说的“本地服务器”大多数时候指的是:搭载有某种服务器软件的PC,例如搭载有Tomcat服务器的PC,就可以拿来当作本地服务器。2. 方法一般有3种可行的方法,具体说明如下:将应用后台服务器部署到某台可以通过公网访问的服务器上,手机访问该公网IP地址,类似于公网试用...

2016-12-28 20:46:35 23754 12

原创 进程与线程的关系

1. 定义1.1 进程一个正在执行中的程序。 一个正在计算机上执行的程序实例。 能分配给处理器并由处理器执行的实体。 一个由单一顺序的执行线索、一个当前状态和相关的系统资源所描述的活动单元。 是操作系统中拥有资源所有权的基本单位。1.2 线程有时被称为轻量级进程,是进程中的一个实体,一个任务。 是操作系统中调度和分派的基本单位。2. 相同点不仅进程之间可以并发执行,同...

2016-12-21 16:02:16 712

原创 在Windows平台上,使用Git时,出现warning: LF will be replaced by CRLF in……

在Windows平台上,使用Git。当输入添加命令(例如:git add .)时,会出现warning: LF will be replaced by CRLF in……这样的警告。虽然对于后期编程没有影响,但毕竟是warning,还是需要了解一下是啥原因吧!       经过查阅相关资料,才知道原来是换行符的问题。

2016-12-03 16:38:23 2893

原创 二叉树的深度优先遍历和广度优先遍历

1. 分析二叉树的深度优先遍历的非递归的通用做法是采用栈,广度优先遍历的非递归的通用做法是采用队列。深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个结点只能访问一次。要特别注意的是,二叉树的深度优先遍历比较特殊,可以细分为先序遍历、中序遍历、后序遍历。具体说明如下:先序遍历:对任一子树,先访问根,然后遍历其左子树,最后遍历其右子树。 中序遍历:对任一子树,先遍历其左...

2016-10-07 20:18:15 13285

原创 浅谈Java中的栈和堆

1. 前言 一般在刚开始接触“栈”和“堆”这两个概念的时候,很多人都会产生较多的疑问,什么是栈,什么是堆,栈和堆有什么区别?更糟糕的是,数据结构中也有栈和堆这两个概念。在这种情况下,不免会让很多人更加费解前面的问题。事实上,我们这里要讲的栈和堆,跟数据结构中的栈和堆是完全不同的概念。本篇博文要讨论的栈和堆,是Java内存分配所涉及到的两个内存区域。2. 栈和堆的概念为了不和数据结构中的...

2016-10-02 10:28:09 3308

转载 理解Fragment的生命周期

一、Fragment的生命周期          二、与Activity的生命周期做对比     三、场景演示 切换到该Fragment:11-29 14:26:35.095: D/AppListFragment(7649): onAttach11-29 14:26:35.095: D/Ap

2016-09-18 15:02:11 597

空空如也

空空如也

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

TA关注的人

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