自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 PrecomputedTextCompat用法及原理

一、官方介绍 文本展示非常复杂,其涵盖的特性有:多种字体、行间距、字间距、文本方向、断行、字符连接等。为了测量及布局给定文本,TextView 必须做很多工作,例如读取字体文件、查找字形、决定形状、测量边界框以及将文本缓存在内部文本缓存中。更重要的是,所有这些工作都在 UI 线程中进行,这...

2020-02-18 23:06:19

阅读数 5

评论数 0

原创 RemoteViews布局和类型限制源码分析

一、官方文档 二、类的定义 三、RemoteView注解 在RemoteViews源码中声明了如下注解: 从注解类型来看为运行时注解,作用于类或接口,结合注释可知此注解用于View的子类,用来标识该View是否可以作为远程视图使用。由此可以推断出,并非所有Vie...

2020-01-21 23:09:25

阅读数 11

评论数 0

原创 Android代码加固技术

一、对抗反编译工具 二、对抗apk重打包 三、对抗安卓模拟器 四、对抗IDA调试so

2019-07-27 14:54:27

阅读数 81

评论数 0

原创 Android应用安全之JNI混淆

简介 JNI全称为Java Native Interface,是使Java方法与C\C++函数互通的一座桥梁。通俗的讲,它的作用就是使Java可以调用C\C++写的函数、使C\C++可以调用Java写的方法。 特点 1、性能 众所周知,Android程序一般是基于Java语言开发的,虽然G...

2019-03-06 00:38:11

阅读数 413

评论数 0

原创 JNI函数的2种书写方式

一、静态注册 原理: 根据函数名来建立 java 方法与 JNI 函数的一一对应关系; 以Java为前缀,并且用“_”下划线,将包名、类名以及native方法名连接起来; 实现流程: 编写 java 代码; 利用 javah 指令生成对应的 c 文件; 对 c 文件中的声明进行实现; ...

2019-02-18 23:20:52

阅读数 274

评论数 0

原创 Android应用上架变更

符合 Google Play 的目标 API 级别要求 https://developer.android.com/distribute/best-practices/develop/target-sdk?hl=zh-cn   华为移动应用软件高API等级公告 https://deve...

2019-02-14 23:57:22

阅读数 104

评论数 0

原创 Android M、O权限变更

       在 Android 8.0 之前,如果应用在运行时请求权限并且被授予该权限,系统会错误地将属于同一权限组并且在清单中注册的其他权限也一起授予应用。         对于针对 Android 8.0 的应用,此行为已被纠正。系统只会授予应用明确请求的权限。然而,一旦用户为应用授予某个...

2019-01-15 18:15:52

阅读数 270

评论数 0

转载 android 6.0禁用了权限却返回0

android 6.0 开始加入了动态权限申请,但今天却发现了一个很奇怪的问题,以打电话为例,明明在系统设置的权限管理中把demo的打电话权限禁止了,却仍然返回0 int result= checkSelfPermission(permission.CALL_PHONE);           ...

2019-01-15 18:10:29

阅读数 156

评论数 0

转载 Vivo手机的权限管理

       最近搞的项目里遇到了权限管理的问题,由于手上的测试用机只有华为和vivo,所以这里仅以这两款机型讨论。调试代码时发现了一个问题,跟我在前面的一篇博客里写的一样,就是发现vivo手机上用android原生的api去检查权限(就以相机权限为例吧)发现是有这个权限的,但是我明明在设置(比较...

2019-01-15 18:00:01

阅读数 864

评论数 0

原创 Url追加参数方法,考虑#、?、$的情况

public static String addParamToUrl(String url, String param) { if (url.contains(param)) { return url; } else if (url.contains("...

2019-01-12 15:18:40

阅读数 618

评论数 0

原创 Android O上获取Adaptive Icon的Bitmap对象

常见场景: 通过BitmapFactory.decodeResource的方式,设置Notification的LargeIcon,当APP适配了自适应Icon后,获取不到Bitmap对象。 方式一: public Bitmap getAppIcon(Context context) { ...

2018-12-01 15:42:39

阅读数 771

评论数 0

原创 AsyncTask经验小结

1. AsyncTask对象的创建代码必须在主线程中调用; 2. 直接new AsyncTask对象可能导致内存泄漏; 3. execute方法必须在主线程中调用; 4. execute方法在Android1.6之前串行,Android1.6之后并行,Android3.0后串行; 5. 由...

2018-11-15 18:11:21

阅读数 50

评论数 0

原创 Android Launcher Icon适配

一、Legacy Icon 系统API < 25 桌面图标大小定义为48 x 48dp 参照Iphone,大部分为圆角矩形 早期放置于drawable-*目录,后改为mipmap-*目录   二、Round Icon 系统API == 25 桌面图标大小定义为48 ...

2018-11-10 23:34:19

阅读数 335

评论数 0

原创 如何获取泛型的类型

@Override public void loadImage(@NonNull Context context, @Nullable String url, @Nullable Options options, @Nullable ILoaderListener<T&...

2018-10-24 11:57:36

阅读数 234

评论数 0

原创 Map排序工具类

public class MapUtil { public static Map<String, String> sortByKey(Map<String, String> map) { if (map == nu...

2018-10-23 10:27:40

阅读数 470

评论数 1

原创 SHA256加密工具类

public class SHA256Util { /** * 用java原生的摘要实现SHA256加密 * * @param str 加密前的报文 * @return */ public static String getSH...

2018-10-23 10:21:02

阅读数 2221

评论数 0

原创 自定义标题栏View

     1.设置标题栏透明度     setAlpha(@FloatRange(from = 0.0, to = 1.0) float alpha) 2.设置标题栏背景色     setBackgroundColor(@ColorInt int color)     setBackgroun...

2018-08-13 23:17:24

阅读数 150

评论数 0

原创 Android 4.4~8.1 状态栏适配

一、状态栏着色 API<19:不执行 API=19:黑灰渐进透明的状态栏 API>=20:系统会自动生成一个半透明的状态栏。当API>=21时,能够调用系统API直接对状态栏着色 1.沉浸式模式 StatusBarUtils.setColorBa...

2018-08-12 21:26:43

阅读数 644

评论数 0

原创 TextView设置android:gravity="center"失效

1.在程序中调用TextView的方法: setIncludeFontPadding (boolean includepad) 2.或者在xml中加入下句: android:includeFontPadding="false"   参考: android:inclu...

2018-08-10 14:33:15

阅读数 2162

评论数 0

原创 获取指定文件夹下,文件的大小,及单位换算

/** * 获取指定文件夹下,文件的大小 * * @param file * @return */ public static long getFileSizes(File file) { long size = 0; if (file == null) { ...

2018-08-09 14:41:36

阅读数 289

评论数 0

原创 使用TabLayout和ViewPager实现App主要界面框架

       TabLayout与ViewPager联动,通过重写getPageTitle方法,设置页面的tab标题、view的tab标题。同时实现了页面的预加载,当且仅当第一次可见时,加载页面数据。 https://github.com/272664150/QTabLayoutDemo...

2018-08-05 20:49:07

阅读数 73

评论数 0

原创 包含多个RecyclerView的页面惯性滑动时,卡顿问题的解决办法

 public class MyRecyclerView extends RecyclerView {     public MyRecyclerView(Context context) {         super(context);     }     public MyRecycler...

2018-08-03 23:28:55

阅读数 2515

评论数 0

转载 Android 6.0 RecyclerView嵌套在ScrollView中显示不全

ScrollView嵌套RecyclerView在Android6.0以下能正常显示,但是在6.0以上就会出现RecyclerView显示不全的bug。尝试多种方法之后终于找到解决办法,特在此记录下。 无效方法之一 ScrollView嵌套RecyclerView时出现的各种冲突一般是靠重写R...

2018-08-03 23:22:39

阅读数 50

评论数 0

原创 自定义引导蒙层控件,支持全屏模式和targetView模式

效果图全屏模式1. setOnlyOnceTag  是否只显示一次的标识2. setBackgroundColor  引导蒙层区域外的背景色3. setBackgroundResource  引导蒙层区域外的颜色id4. addDrawable  添加蒙层图片的资源id5. setOnDispla...

2018-07-02 00:02:52

阅读数 220

评论数 0

原创 Lottie调研小结

一 、简介       Lottie 是Airbnb开源的一个面向Android、 iOS、React Native 的动画库,能分析 Adobe After Effects 导出的动画,并且能让原生 App 像使用静态素材一样使用这些动画,完美实现动画效果。二、环境搭建Adobe After E...

2018-07-01 00:37:18

阅读数 1060

评论数 0

原创 解决设置lineSpacingMultiplier属性后,在Android 5.0以下,控件的最后一行有行间距的问题

       在Android 5.0以下,设置lineSpacingMultiplier或lineSpacingExtra属性后,在控件的最后一行将多出一段行间距,而在Android 5.0及以上,则不会出现该问题。参考这篇文章:https://blog.csdn.net/bufanni12/a...

2018-06-30 22:28:00

阅读数 1539

评论数 0

转载 记一次git amend事故处理方案

一、问题回顾问题是git commit --amend 引起的。 一条commit已经push到远端develop了,但是后来又在这条commit上进行了amend操作,导致这条commit的哈希码发生了变化。并且后续又在这条commit之后进行了N条commit操作。<Begin&...

2018-05-18 00:04:38

阅读数 1293

评论数 0

原创 git commit --amend修改push到远程分支的提交

用法git commit --amend合并缓存的修改和上一次的提交,用新的快照替换上一个提交。缓存区没有文件时运行这个命令可以用来编辑上次提交的提交信息,而不会更改快照。修改提交信息git commit --amend //修改提交信息操作git push --force-with-lease ...

2018-05-18 00:02:42

阅读数 5183

评论数 0

转载 Android控件显示、隐藏时,增加动画效果

      在Android应用开发的时候经常会用到View的setVisibility()方法来动态隐藏和显示view,但是这样子是没有过渡动画的,变化的时候会显得很生硬。     LayoutTransition是一个在4.0新引入的Api,主要功能是在ViewGroup的layout发生变化...

2018-05-16 23:37:44

阅读数 13540

评论数 0

原创 Android快速点击问题的简单方法

public class ClickUtil { private static long mLastClickTime; /** * 判断当前点击现象是否是快速的点击,若是的则返回true,在客户端中要屏蔽这种现象。 * * @return ...

2018-04-26 22:44:54

阅读数 591

评论数 0

原创 自定义滚动刻度尺控件

目前支持的自定义属性<declare-styleable name="ScaleView"> <!-- 基线是否显示 --> <attr name="baseLineEnable&q...

2018-04-15 17:06:37

阅读数 241

评论数 0

原创 支持空态显示和可展开二级列表的RecyclerView

  可展开二级列表: 1.List<Object> 用Object类型是为了把不同数据都装进一个list中。将传入的数据和显示的数据分开,维护一个显示数据列表,展开就 添加item,收起就移除item,这样添加和移除可以利用RecyclerView的默认动画。 ...

2018-04-06 01:55:37

阅读数 1003

评论数 0

原创 异常:The specified child already has a parent. You must call removeView() on the child's parent first.

方法一:ViewGroup parent = (ViewGroup) .getParent(); if (parent != null) { parent.removeAllViews(); //或者 parent.removeView(view) } container.addView(...

2018-04-06 01:00:47

阅读数 149

评论数 0

原创 EditText无适配问题底部虚线背景

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/an...

2018-03-31 01:32:17

阅读数 178

评论数 0

原创 Android 获取已安装应用列表 调研

一、先阅读文章    https://blog.csdn.net/ecjtuhq/article/details/79363099二、品牌差异三、方案对比 四、结论    1. 华为   通过 pm list package 获取列表(手机管家的记录、通知,不算有感知);    2. 魅族/VIV...

2018-03-24 15:12:57

阅读数 679

评论数 1

转载 为何 Twitter 区别于微信、淘宝,只使用了 armeabi-v7a?

最近在研究APP瘦身,碰巧又遇到armeabi、armeabi-v7a、arm64-v8a等ABI相关的知识点,决心记录下来以作分享。目前现状首先我们分析下国内的淘宝、微信,以及国外的Facebook、Twitter都使用了哪些ABI。我们对这4家APK进行Analyze,可以发现Facebook...

2018-03-04 23:26:21

阅读数 3714

评论数 0

原创 CentOS如何查看、杀掉进程

一、根据进程名过滤出信息 二、确认进程的详细信息 三、杀掉进程

2018-03-04 18:11:35

阅读数 2973

评论数 0

转载 Android 如何完整的获取到用户已安装应用列表

接到产品经理的预研需求,说希望获取用户已安装应用列表。这个问题应该不难,只要是要把相关的知识点整理和验证一下。    对于获取用户已安装应用列表,我个人是很熟悉的,因为我的华为手机上,手机管家天天会在通知栏弹出”xxx应用尝试获取用户已安装应用列表被禁止”。所以,很明显,跟权限是有关系的。于是,我...

2018-02-24 16:25:15

阅读数 4956

评论数 0

转载 Hybrid APP之Native和H5页面交互原理

前言 参考来源 前人栽树,后台乘凉,本文参考了以下来源 JSBridge-Web与Native交互之iOS篇Ios Android Hybrid app 与 Js BridgeHybrid APP架构设计思路Android4.2下 WebView的addJavascriptInterfac...

2017-10-19 10:10:59

阅读数 502

评论数 0

原创 为什么用annotationProcessor代替android-apt?

1.android-apt不再进行维护了。 2.android-apt只支持javac编译,而annotationProcessor支持javac、jack编译,如果想使用Java 8必须使用Jack编译。

2017-10-10 14:57:50

阅读数 395

评论数 0

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