自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Zachary的基地

在大海里遨游~~

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

原创 Android之自定义View:长按加减

前两天迭代一个报价的APP,选择商品进行结算价格。增加一个人性化操作,长按控件进行快速增长数值。根据控件上个Gif图:除了可以自定义各种颜色、大小等属性之外,可以进行单点、长按、滑动改变数值。原理是监听其触摸事件进行相应判断操作,触摸结束进行动画回复操作。具体的已经在代码中注释。1.自定义StepperView 控件import android.animation...

2019-06-14 13:59:03 1298 2

原创 Android之自定义View:点赞动画效果

实现点赞效果动画,可以根据需求进行修改使用。先上个Gif图:1.自定义DivergeView:import android.content.Context;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Paint;import android.g...

2019-06-12 17:12:48 1205

原创 Android之获取开发版SHA1值和发布版SHA1值

此文介绍Android Studio中获取SHA1的方法。获取开发中的SHA1:在右侧找到菜单栏“Gradle”—>”APP名”—>“Tasks”—>“android”—>双击“signReport”即可。这时生成出来的只是debug的SHA1和MD5值:获取:获取发布版本的SHA1:请自行生成签名文件,打开android st...

2019-06-10 16:19:32 458

原创 Android之Android Studio导入Eclipse项目

好久不用Eclipse开发安卓项目,但工作中总会遇到这样的项目,直接进行Android Studio导入:在Android Studio中,点击菜单“File”-“Close Project”关闭当前打开的工程,进入Welcome对话框。选择:Import project (Eclipse ADT, Gradle, etc.),然后再选择要导入的Eclipse项目。点击"OK"以后...

2019-06-10 15:38:08 589

原创 Java之Math取整操作

Java中针对数据的取整操作,在此总结。舍掉小数取整,floor向下取整//正Math.floor(2)=2.0Math.floor(2.1)=2.0Math.floor(2.5)=2.0Math.floor(2.9)=-2.0//负Math.floor(-2)=-2.0Math.floor(-2.1)=-3.0Math.floor(-2.5)=-3.0Math.f...

2019-05-29 14:27:38 807

原创 Java反射机制

学习安卓hook原理时,推荐学习一下,Java的反射机制,深入底层就需要扩展知识面,在此记录。Java反射作用:增加程序的灵活性,避免将程序写死到代码里。 在编译时无法知道该对象或类属于哪些类,依靠运行时信息来获得该对象和类的真实信息:获取已装载类的成员变量信息 获取已装载类的方法 获取已装载类的构造方法信息前提知识:1.Class类的概念在Java中,每个class都有...

2019-05-29 13:50:08 162

原创 Android报错:Only fullscreen activities can request orientation

使用安卓8.0运行项目时的错误:java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xxx.xxx/com.xxx.xxx.Activity}: java.lang.IllegalStateException: Only fullscreen opaque activities can request ...

2019-05-28 14:24:07 465

原创 Android判断GPS是否开启和让用户打开GPS

定位服务GPS:全球卫星定位系统,使用24个人造卫星所形成的网络来三角定位接受器的位置,并提供经纬度坐标。虽然GPS提供绝佳的位置的精确度,但定位的位置需要在可看见人造卫星或轨道所经过的地方。定位服务AGPS:辅助全球卫星定位系统(英语:Assisted Global Positioning System,简称:AGPS)是一种GPS的运行方式。它可以利用手机基地站的资讯,配合传统GP...

2019-05-22 16:37:50 8749

原创 Android之点击空白处收起系统键盘

经常有点击非输入框区域收起键盘的需求,在基类BaseActivity中实现该功能。1.重写dispatchTouchEvent()把操作放在用户点击的时候 /** * 点击空白区域隐藏键盘. */ @Override public boolean dispatchTouchEvent(MotionEvent me) { if (m...

2019-05-05 09:02:37 5485 8

原创 Android问题:Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0

Gradle打包问题:Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0原因:当前项目使用了gradle版本过渡时候的语法和特性,而本地环境的gradle版本太高,不支持之前的语法和特性。将本地环境的gradle版本退回与项目相符合的版本,即可解决问题。...

2019-04-19 09:33:42 6664 4

原创 Android9.0 http无法访问网络问题

安卓9.0系统已经默认不支持http请求了,谷歌默认要求链接是加密链接。问题解决方案:后台更改,把http改成https 将targetSdkVersion 改成27或者以下 在清单文件中加入权限:在application中加入:android:usesCleartextTraffic="true"<application ******** ...

2019-04-18 11:18:31 3181

原创 Android之AES对称加密

上篇记录了Android之RSA非对称加密,针对一些支付、登录等接口。今天记录一下AES对称加密。一、简介AES:高级加密标准(Advanced Encryption Standard:),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。简介二、安卓实现安卓工具类代码:import a...

2019-04-18 10:49:49 1022

原创 Android之RSA非对称加密

前几天记录了一下:Android之常用的加密算法,大概了解一下各种加密的适用的情况,今天有时间在此总结一下RSA算法。项目中需要使用非对称加密,其实和Java后台数据交互,只需要对某些关键字段使用此种加密即可,因为加密强度大自然效率低。并且移动端和后台双方实现也都不是很难。一、简介RSA算法1978年出现,是第一个既能用于数据加密也能用于数字签名的算法,易于理解和操作。发明者:Ron ...

2019-04-17 16:50:33 2732 1

原创 Android Studio中单元测试

合理利用单元测试,不仅可以保证软件开发的质量,而且可以大大提高工作效率。本文介绍Android Studio中单元测试相关内容和遇到的问题。1.添加依赖(build.gradle)testImplementation 'junit:junit:4.12'androidTestImplementation 'com.android.support.test:runner:1.0.2'a...

2019-04-17 09:42:49 470

原创 Android之手机振动和振铃

作为APP开发,用户交互中除了显示的效果展示,最强有力提醒用户操作莫过于振动和音效了。今天开始这方面的总结,准备比较规范且完善的记录这方面的内容。一、振动的实现1.使用振动所需的权限<uses-permission android:name="android.permission.VIBRATE" />2.相关API//检查硬件是否有振动器boolean h...

2019-04-16 15:57:59 1322

原创 Android之使用DDMS查看真机中数据库

DDMS全称:Dalvik Debug Monitor Service刚开始学习安卓的时候,ecplise就经常用到,最新的Android Studio中无法在Tool中打开。方式:在 Sdk\tools目录下,双击monitor.bat报错:Could not open Selected VM debug port (8700). Make sure you do not hav...

2019-04-09 16:44:56 1187

原创 Android之自定义View:圆形ImageView实现可暂停的旋转动画效果

最近,虽然公司的安卓开发相对还是挺多,依旧在学习自定义View。不怕实现的简单,慢慢做、慢慢理解。效果图:1.先实现自定义圆形ImageView:需要了解上一篇:Android之Canvas绘图中PorterDuffXfermode首先获取到图片的Bitmap,然后进行裁剪圆形的bitmap,然后在onDraw()进行绘制圆形图片输出。import android.con...

2019-04-09 09:07:00 3325

原创 Android之自定义View双缓冲机制

记得以前学习c#、java的绘图时,都接触过图像的双缓存技术,解决绘制频繁导致闪屏的问题。今天,记录一下安卓客户端自定义View的缓存技术。由于CPU访问内存的速度要远远快于访问屏幕的速度。安卓端如果需要绘制大量复杂的图像时,每次都一个个从内存中读取图形然后绘制到屏幕就会造成多次地访问屏幕,从而导致效率很低,因此需要使用缓冲技术提高效率。第一层缓冲:(安卓自己实现)绘制图像时不用上述中...

2019-04-04 11:01:57 950

原创 Android之Canvas绘图中PorterDuffXfermode

忙里偷闲,增进一下自己的做UI功底,最近进行一段时间学习自定义View。在Android中的Canvas进行绘图时,可以通过使用PorterDuffXfermode将所绘制的图形的像素与Canvas中对应位置的像素按照一定规则进行混合,形成新的像素值,从而更新Canvas中最终的像素颜色值。PorterDuffXfermode支持以下十几种像素颜色的混合模式,分别为:CLEAR、SRC...

2019-04-04 09:49:01 815

原创 Android之ARouter路由框架

今天,在此记录一下路由框架,在众多的路由框架中,阿里ARouter的给我一种亲切感。ARouter是阿里巴巴开源的Android平台中对页面、服务提供路由功能的中间件,提倡的是简单且够用。原生的路由方案的问题显式intent下,存在直接的类依赖,耦合严重 隐式intent下,规则集中式管理,协作困难 配置规则在Manifest中,扩展性差。 跳转过程无法控制,使用StartAct...

2019-03-29 15:37:25 576

原创 移动开发之Fiddler抓包

安卓开发进行网络开发:一般都是debug看日志。 后端的同事不配合就自己用postman,自己跑一下。 最坏的情况就是自己看看后台的数据库。日常的工作还是可以满足的啦。看到后端同事使用Fiddler抓包,了解了一下还是很有用的,功能强大,今天记录一下入个门。1.Fiddler下载:下载链接,注册安装!2.PC中Fiddler配置:打开Fiddler, Tools->...

2019-03-29 14:12:26 10140 1

原创 Android之Apk加固

上一篇:Android之Apk打包原理之后,今天记录一下多渠道打包。首先,说明一下Apk加固的意义: 懂点反编译原理的人可以轻松编译出apk的源码资源,并且可以修改资源代码、重新打包编译。 apk加固、防止反编译。 在官方下载的360加固助手,使用手册下载后第一次打开应用会提示有教程。注意:一定要官方下载最新的360加固助手。官方网址:地址注册、登录之后选择:使...

2019-03-29 09:44:07 1303

原创 Android之VasDolly多渠道打包

上一篇:Android之Apk打包原理之后,今天记录一下多渠道打包。首先,说明一下多渠道打包的意义:在安装包中添加不同的标识,应用在请求网络的时候携带渠道信息,方便后台做运营统计。经过亲测,总结一下VasDolly实现多渠道打包步骤及常见的问题,具体还请移步官方介绍。首先是Github上:腾讯VasDolly链接 添加对VasDolly Plugin的依赖 在根工程的bui...

2019-03-28 16:35:51 608

原创 Android之Apk打包原理

APP打包过程中,用到的构建工具和构建的过程。如下是一个apk解压后的目录,后面会提到每个目录在构建过程中是如何生成的。AndroidManifest.xml 程序全局配置文件 classes.dex Dalvik字节码 resources.arsc 资源索引表,解压缩resources.ap_就能看到 res\ 该目录存放资源文件(图片,文本...

2019-03-28 09:59:14 2567 1

原创 Android报错:Program type already present: android.support.v4(配置ButterKnife)

今天,在完成安卓组件化框架搭建的时候,真是被ButterKnife折磨了一番,各种错误。1.使用ButterKnife8.4.0版本,运行正常,但是在moudle中代码的R2.id.**根本找不到,看着报错,就很不爽,然后就是各种版本号试来试去。发现一个有意思的东西:快速生成R2.java中fields的插件:在主工程的 build.gradle 中添加插件apply plu...

2019-03-20 16:19:37 1321

原创 Android之FastJSon基本使用,属性首字母大小写的问题

FastJson框架,真的很好用。以下记录,转化的操作方法。1.配置:在build.gradle(Module:app)中增添引用//解析jsonimplementation 'com.alibaba:fastjson:1.2.56'2.具体操作:实体类或集合转JSON串String jsonString = JSONObject.toJSONString(实体类);...

2019-03-19 19:41:32 6156

原创 Android之常用加密算法

今天记录一下,安卓常用的加密算法。并无干货,只是自己的对算法类别的学习,不知道是否可以应对接下来的移动支付。可逆加密和非可逆加密可逆加密根据其加密解密是否使用的同一个密钥而可以分为对称加密和非对称加密。对称加密:是指在加密和解密时使用的是同一个密钥。非对称加密:在加密和解密过程中使用不同的密钥,即公钥和私钥。公钥用于加密,所有人都可见,私钥用于解密,只有解密者持有。MD5MD5即...

2019-03-19 19:20:49 451

原创 Android报错:java.lang.UnsatisfiedLinkError: dlopen failed: ***

报错:java.lang.UnsatisfiedLinkError: dlopen failed: ***错误信息说在工程中找不到64位的so文件,32位的不能代替。这个问题出现的原因就是有些三方的架包只提供了32的so文件,而没有提供64位的so文件。解决方法:在项目的libs目录下新建一个文件夹,命名为armeabi-v7a,然后从armeabi中将.so复制一份添加以下文...

2019-03-19 19:18:07 9243

原创 Android之实现ImageView控件旋转

最近在一个安卓板子上实现一个人脸识别,关键还是横屏,拍照之后的获取的图片,显示的“头歪了”。来看看如何使ImageView控件显示正常的操作。1.旋转bitmap:Bitmap bitmap = ((BitmapDrawable)getResources().getDrawable(R.drawable.ic_launcher)).getBitmap();Matrix matrix ...

2019-03-19 19:01:37 5214

原创 Android之APP合并操作及相关问题

最近有需求要求进行APP合并操作,两个最低版本号为21的APP集成在一个安卓4.4.2的板子上。降级报错:Unable to get provider com.amitshekhar.DebugDBInitProvider安卓做多了,总会遇到这个问题,所以此文尽力记录一下合并操作。首先要有主APP与附APP的源代码。没有源码的话,合并APP可以试一下反编译(呵呵~),开玩笑啦。1....

2019-03-18 11:14:09 1649

原创 Android之APP唤起另一个APP

在此记录一个APP拉起另一个APP的需求,虽然领导说:不要唤起,直接合并!(额。。。,好吧)至于合并,咱们回来再谈吧。A拉起B可实现方法:1.使用包名,特定Activity名拉起:A中:跳转处Intent intent = new Intent(Intent.ACTION_MAIN);/**知道要跳转应用的包命与目标Activity*/ComponentName comp...

2019-03-14 17:18:18 5373

原创 Android报错:Unable to get provider cn.jpush.android.service.DownloadProvider

最近需要将公司以前的项目,安装在一个版本为4.4.2的安卓板子上,准备降级操作。报错:java.lang.RuntimeException: Unable to get provider com.amitshekhar.DebugDBInitProvider: java.lang.ClassNotFoundException: Didn't find class项目中是由于multiDex...

2019-03-14 16:11:09 2726

原创 Android之Bitmap与Base64互转,压缩

最近完成一个调查问卷的小项目,安卓端自然用到了电子签名这样的东西,上传签名的图片,最好还是原数据比较好,所以将全部的Bitmap图片转换成Base64,用于传输8Bit字节码的编码方式。一般一个签名的转换长度至少也有十万多,要么客户端压缩一下(注释),要么服务器调整一下,应该数据量也不大。 /** * bitmap转为base64 * @param bitmap...

2019-03-12 14:20:37 2162

原创 Android报错:java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoade

最新研究一下,人脸识别的demo,运行还是出现了问题。报错:java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoadecpu架构:armeabi 、armeabi-v7a 和x86 编译 NDK 库时,可以使用三种支持的应用二进制接口(ABI):‘armeabi’ – 默认选项,将创建以基于 ARM* v5TE 的设备为目标...

2019-03-12 13:58:07 1321

原创 Java之list集合根据对象的属性去重,保留新数据

需求:保存一段数组数据,向后台提交,实时提交最新的数据。将数据添加到一个list的集合中,最后提交之前去重。定义实体类:public class Robot implements Serializable { /** * id */ private Long id; /** * 名称 */ private St...

2019-03-11 09:17:04 7200 2

原创 Java之将GB2312编码转化为汉字

本文实现将GB2312编码转换成汉字,并简单了解一下GB2312。GB2312是信息交换汉字编码字符集,适用于汉字处理、汉字通信等系统之间的信息交换,通行于中国大陆。使用区位码表示方式,对所收汉字进行了“分区”处理,每区含有94个汉字/符号。01-09区为特殊符号。16-55区为一级汉字,按拼音排序。56-87区为二级汉字,按部首/笔画排序。10-15区及88-94区则未有编码...

2019-03-07 14:29:52 4382 1

原创 Java去除字符串中的“0”

最近使用安卓手机实现读取cpu卡中的内容,卡中的数据有很多无用的“0”。使用正则表达式,进行去除多余的“0”。去除字符串前面的“0”:String str = "00000000123456789";String newStr = str.replaceAll("^(0+)", "");去除字符串后面的“0”:String str = "12345678900000000...

2019-03-07 13:45:05 4905

原创 Android之画虚线技巧

UI设计图中,需要画水平和竖直的虚线,在此记录。水平虚线:在drawable中建立dash_horizontal_view.xml文件&lt;?xml version="1.0" encoding="utf-8"?&gt;&lt;shape xmlns:android="http://schemas.android.com/apk/res/android"android:shap...

2019-02-27 15:21:00 777

原创 Android之禁止APP截图、录屏

为了安卓APP的安全,进行设置禁止系统截屏、录制。代码:@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setFlags(WindowManager.LayoutParams....

2019-02-19 10:34:07 25257 7

原创 Android报错:Invoke-customs are only supported starting with Android O (--min-api 26)

莫名遇到的问题:Invoke-customs are only supported starting with Android O (--min-api 26)使用的构建版本gradle为26。解决方法:

2019-02-18 17:42:47 2794 3

空空如也

空空如也

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

TA关注的人

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