Android知识点
闫文敬
Android开发工程师、安全工程师
展开
-
Android Gradle Plugin、Gradle、Android Studio版本关系
Android Studio 构建系统以 Gradle 为基础,并且 Android Gradle 插件 (AGP) 添加了几项专用于构建 Android 应用的功能。所要求的版本,可能会导致意外问题。我们建议您使用最新的预览版 Android Studio 和 AGP 来处理以预览版 Android OS 为目标平台的项目。如果使用的 Android Studio 或 AGP 版本低于项目的。如果您的项目不受某个特定版本的 Android Studio 支持,您仍然可以使用。原创 2024-01-11 09:33:38 · 2961 阅读 · 0 评论 -
Javadoc 使用指南
Javadoc用于描述类或者方法的作用。Javadoc可以写在类上面和方法上面。只有@关键字的内容才会被生成到文档中。标签描述示例@author标识一个类的作者指名一个过期的类或成员{@docRoot}指明当前文档根目录的路径@exception标志一个类抛出的异常从直接父类继承的注释{@link}插入一个到另一个主题的链接插入一个到另一个主题的链接,但是该链接显示纯文本字体@param说明一个方法的参数@return说明返回值类型@see指定一个到另一个主题的链接。原创 2022-09-07 09:43:09 · 2308 阅读 · 0 评论 -
android studio 功能调优配置
android studio 功能调优配置原创 2022-08-25 14:56:49 · 1227 阅读 · 0 评论 -
android知识技能树
android知识技能树原创 2022-07-29 13:38:04 · 603 阅读 · 0 评论 -
Rxjava 操作符之辩解map和flatmap的区别
都是依赖FuncX(入参,返回值)进行转换(将一个类型依据程序逻辑转换成另一种类型,根据入参和返回值)都能在转换后直接被subscribemap返回的是结果集,flatmap返回的是包含结果集的Observable(返回结果不同)map被订阅时每传递一个事件执行一次onNext方法,flatmap多用于多对多,一对多,再被转化为多个时,一般利用from/just进行一一分发,被订阅时将所有数据传递完毕汇总到一个Observable然后一一执行onNext方法(执行顺序不同)>>>>(如单纯用于一对一转换原创 2022-06-09 15:13:01 · 1277 阅读 · 0 评论 -
毛玻璃-高斯模糊工具类BlurUtil
目前在android上很少见到毛玻璃效果,我认为很重要的原因是性能问题,虚化一张图片所需要的时间会因设备而异,如果为了虚化使得用户需要刻意等待,那么就是弊大于利。另外,Google官方提供的renderScript一般只是做一些小幅度的虚化,很难达到毛玻璃这类深度虚化效果。建议对静态的内容做高斯模糊,不要在滑动或者定时地进行计算刷新......原创 2022-06-06 16:20:01 · 498 阅读 · 0 评论 -
Android Studio 插件记录
android studio常用的插件原创 2022-04-22 09:05:31 · 3056 阅读 · 0 评论 -
Android清除WebView的localStorage
关于webview的缓存,在不同设备上会有不同的目录。APP的登录状态和H5的登录状态常常因为某些原因不能同步。故想要每次关闭webview页面时,都可以清除h5缓存的数据。通过分析,web页面常用的存储有:cookie、localStorage、session最终实现用一下方法清除缓存(有时会失效,极小概率)WebStorage.getInstance().deleteAllData();当然,也尝试过其他方法CookieSyncManager.createInstance(getAppl原创 2022-04-12 15:15:39 · 3026 阅读 · 0 评论 -
关于Android gradle 7.0+版本的配置升级
由于可参考的文献较少,以下皆是经验总结。1.关于settings.gradle的变化之前的版本仅仅包含了项目和module的配置rootProject.name = "My Application"include ':app'include ':mylibrary'新版本中也增加了插件的配置pluginManagement { repositories { gradlePluginPortal() google() mavenCentr原创 2022-04-07 17:51:00 · 10522 阅读 · 1 评论 -
Android 隐私合规API检查方案
对于涉及用户隐私的API的行为,Android端无法通过有效的方案进行Android系统隐私权限的API方法可以通过Xposed进行hook处理,监听到相关方法的调用;仓库代码:https://github.com/yanerchuang/PrivacyPolicyComplianceCheck准备一个Xposed的设备运行脚本至设备上通过过滤’hookLog日志进行查看实现后效果如下...原创 2021-09-18 18:16:44 · 2544 阅读 · 0 评论 -
RecyclerView滑动到最后一行的几种方法
问题:常见的滑动到最后一行但是显示不全的情况?1.普通场景下滑动到最后一行recyclerView.scrollToPosition(mAdapter.getData().size() - 1);2.弹出软键盘时滑动到最后一行recyclerView.addOnLayoutChangeListener((v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> { if (bottom原创 2022-02-18 15:03:28 · 3324 阅读 · 0 评论 -
Android APP极光推送取消关联启动配置
1.新增清单配置 <!--关闭自动启,关联启动--> <service tools:node="remove" android:name="cn.jpush.android.service.DaemonService" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="cn.jpush原创 2022-01-13 16:19:41 · 6041 阅读 · 4 评论 -
Android极光推送厂商离线通道集成文档及flutter集成总结
《极光推送厂商离线通道集成文档》flutter集成指南原创 2021-12-07 09:44:30 · 1311 阅读 · 0 评论 -
Android图片资源文件转化为Uri地址
private Uri getDrawableUri(@DrawableRes int resId){ Resources resources = getResources(); return Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + resources.getResourcePackageName(resId) + '/' + resources.getResourceTypeName(r...原创 2021-11-16 16:51:30 · 8229 阅读 · 0 评论 -
Android OkHttp进行单向证书校验(双向的需要服务端也配置证书)
1.获取跟域名的证书文件例如接口服务域名是 https://www.baidu.com/按照以下步骤导出证书信息,选择base64格式的.cer文件,用文本编辑器打开,复制证书信息2.编写代码配置// 证书信息进行缩减private String CER_BAIDU = "xxxxxxxxxx";//设置安全证书public void setSafeOkHttpClient(OkHttpClient.Builder okhttpBuilder) { try {原创 2021-05-31 15:14:56 · 2846 阅读 · 2 评论 -
Android tools命名空间 总结
什么是toolstools命名空间是用于在开发阶段,在IDE中预览xml界面用的,真实运行的时候,不会展示tools中设置的属性。常用的属性均可使用tools命名空间。常用布局属性tools:listitem="@layout/adapter_folder_list_item"tools:text="xxx"tools:visibility="visible"tools:src="@drawable/xxx"tools:background="#ff0000"tools:itemcount=原创 2020-09-16 08:29:58 · 480 阅读 · 0 评论 -
java、class、jar、aar、dex、smali、apk之间的关系
1.简介java:编写好的程序源代码class:.java文件通过javac 编译后的字节码文件,jvm直接运行的文件jar:Java Archive,java二进制归档文件,多个.class文件打包的文件aar:Android Archive,Android二进制归档文件,由jar和Android资源文件dex:将.class优化打包后的文件,dalvik虚拟机则是.dex可执行文件smali:Smali,Baksmali分别是指安卓系统里的Java虚拟机(Dalvik)所使用的一种.dex格原创 2020-08-13 15:01:54 · 3104 阅读 · 0 评论 -
Android 从应用市场打开app后,app切换后台,再点击桌面图标启动app会重新跳转启动页解决方法
1.出现原因应用A 通过包名启动应用B,此时的intent是启动意图,应用B B_1页面启动后,启动主页B_2,同时关闭B_1,返回多级调整【B_2_B_3…>Bn】返回桌面,点击图标启动B,此时的intent是启动意图复用创建时的intent,重新启动B,【B_2_B_3…>B_1】,因为B_2的启动模式singleTask,栈内唯一,B_2重用,并移除栈上的B_n等页面,造成上层的页面关闭,而B_2仍然正常,即回到应用主页2.修复方式启动B_1页面时,判断其栈内是否有其他页面使用,原创 2020-07-31 09:14:47 · 3824 阅读 · 0 评论 -
Android 知识图谱
更新地址原创 2020-07-31 09:06:17 · 966 阅读 · 0 评论 -
Android Base64&RSA2加解密工具类
import android.util.Log;import java.security.Key;import java.security.KeyFactory;import java.security.KeyPair;import java.security.KeyPairGenerator;import java.security.PrivateKey;import java.security.PublicKey;import java.security.SecureRandom;i.原创 2020-07-15 18:13:25 · 1485 阅读 · 0 评论 -
Android 阿里云移动推送厂商辅助通道集成详解
1原创 2020-06-16 09:08:31 · 3068 阅读 · 10 评论 -
Android animated-rotate简单的图片旋转动画
1.image_rotate.xml<?xml version="1.0" encoding="utf-8"?><animated-rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/ic_launcher" android:pivotX="50%原创 2017-03-23 12:04:34 · 8558 阅读 · 0 评论 -
android中shape的使用
1.先来看一下官方文档中的shape基本语法示例:下面的示例代码中:integer, float , color 表示对应属性的取值类型[“rectangle” | “oval” | “line” | “ring”],像这种用中括号括起来的并用 | 间隔的,表示当前属性可以取的值是其中的任意一个<?xml version="1.0" encoding="utf-8"?><shape原创 2017-06-08 15:35:39 · 1750 阅读 · 0 评论 -
二、JNI生成so之c与java方法互调
C与Java方法互调1 编写工具类 public class NdkJniUtils { static { System.loadLibrary("testJni"); //defaultConfig.ndk.moduleName } public native String getStringC(); //调用c的加密 publ...原创 2018-05-10 12:58:34 · 1732 阅读 · 0 评论 -
android中获取AndroidManifest.xml中的MetaData标签值
private String getMetaDataValue(String name, String def) {String value = getMetaDataValue(name);return (value == null) ? def : value;}private String getMetaDataValue(String name) {原创 2016-09-06 18:26:11 · 3444 阅读 · 0 评论 -
Android 6种性能优化
1.代码优化Application 中延迟初始化部分三方sdk使用内存泄露检测跟踪工具全局数据、状态统一管理实现可配置化2.图片优化转换图片格式到webppng有损压缩,或转换为.9.png采用合适的分辨率缓存策略3.电量优化app切换到后台后停止一切定时器操作、停止轮询操作、取消定位监听4.布局优化include 共享布局ViewStub 延迟加载me...原创 2019-09-09 17:04:33 · 937 阅读 · 0 评论 -
RxJava2实现倒计时,替换Handler 或者TimerTask 实现计时操作
基于以下远程依赖 implementation 'io.re0activex.rxjava2:rxandroid:2.1.0' implementation 'io.reactivex.rxjava2:rxjava:2.2.3'示例代码操作 package com.ywj.rxjava2demo;import android.os.Bundle;import android.o...原创 2019-06-17 12:01:51 · 2675 阅读 · 0 评论 -
Android 友盟分享简单Demo
该demo使用友盟的V6.4.5版本 官网demo较复杂,就抽取了部分代码,需要完整分享请参考Android 社会化组件SDK v6.4.5(2017-7-12) 简单分享demo下载 效果如下图(无法调起微信分享,需要配置正确的appid、appkey和证书)原创 2017-08-15 14:18:44 · 2252 阅读 · 0 评论 -
Glide使用总结
Glide11:37 2017-04-19导包:compile 'com.github.bumptech.glide:glide:3.7.0'使用:Glide .with(mContext) .load(url)// .asGif()//设置动态GIF加载方式 //.asBitmap()//设置静态GIF加载方式 .listener(requstlistener)//原创 2017-04-19 11:53:34 · 1940 阅读 · 0 评论 -
Android友盟社会化分享 自定义分享页面
Android友盟社会化分享 自定义分享页面原创 2016-08-02 17:08:41 · 6223 阅读 · 0 评论 -
基于RxJava的RxBus使用总结
RxBus16:04 2017-04-17导包: //compile 'io.reactivex.rxjava2:rxandroid:2.0.1' //compile 'io.reactivex.rxjava2:rxjava:2.0.1' compile 'io.reactivex:rxjava:1.1.0' compile 'io.reactivex:rxandroi原创 2017-04-19 11:27:38 · 4774 阅读 · 0 评论 -
一、JNI生成so及使用
JNI的使用1 环境配置1.1 NDK下载地址https://developer.android.com/ndk/downloads/index.html1.2 AS中打开Project Structure,SDK Location中配置NDK目录,打开项目的local.properties文件查看是否有ndk.dir=xxx,有表示成功1.3 打开项目的gradle.properti...原创 2018-05-10 12:56:15 · 2666 阅读 · 0 评论 -
Android intent-filiter学习笔记
intent-filiter:意图过滤器,隐式打开activity时,在Intent中添加匹配规则,与过滤器相匹配后才能打开指定activity,intent-filiter的属性有三个:action、category、data;1.action:行为动作;2.category:动作执行环境,默认<category android:name="android.intent.category.DEF原创 2016-09-04 18:10:16 · 2191 阅读 · 0 评论 -
Android图片压缩尺寸和质量
Android在处理图片时,如果不进行压缩处理,很容易就出现OOM内存溢出(OutOfMemory)问题,所以无论是第三方图片加载还是自己在处理图片时,都要进行压缩处理。Android系统中,一张图片所占用的内存大小与图片尺寸(像素点)和色彩格式(质量)有关,所以Android图片压缩分为尺寸压缩和质量压缩:尺寸压缩:一张1920*1080的图片尺寸压缩一半后,即960*540,尺寸和像素点是未压原创 2017-08-16 17:31:29 · 1691 阅读 · 0 评论 -
Android图片选择器 图片裁剪
裁剪效果 源码下载地址点击下载目前实行功能配置如下:public class PictureConfig implements Serializable { /** * 列表每行显示条目数 */ public int spanCount = 4; /** * 最多可选图片数量 */ public int ma...原创 2017-08-09 11:22:06 · 1563 阅读 · 3 评论 -
Android判断当前View是否被覆盖
public boolean isViewCovered(final View view) { View currentView = view; Rect currentViewRect = new Rect(); boolean partVisible = currentView.getGlobalVisibleRect(currentViewRect);原创 2016-10-22 14:39:28 · 5324 阅读 · 0 评论 -
android studio代码混淆注意问题
本文原创作者:一叶飘舟 http://blog.csdn.net/jdsjlzx/article/details/51861460-include {filename} 从给定的文件中读取配置参数 -basedirectory {directoryname} 指定基础目录为以后相对的档案名称 -injars {class_path} 指定要处理的应用程序jar,war,ear和转载 2017-03-27 16:39:57 · 1625 阅读 · 0 评论 -
阿里百川热修复AndFix1.4.0使用总结
阿里百川热修复官方使用文档帮助:点击查看 直接上代码1、在阿里百川创建APP后,将Demo中app相应的APPKEY、APPSECRET、RSASECRET和APPID替换成自己的1.manifest.xml文件中 //在https://hotfix.taobao.com/hotfix/login.htm阿里百川热修复应用列表查看 <meta-data and原创 2017-01-04 16:41:35 · 2867 阅读 · 0 评论 -
Android 自定义dialog
显示dialog方法private void showMyDialog() { Dialog dialog = new Dialog(MainActivity.this, R.style.my_dialog); LinearLayout view = (LinearLayout) LayoutInflater.from(MainActivity.this).inf原创 2016-12-02 17:08:45 · 1632 阅读 · 0 评论 -
Android透明状态栏
使用说明:Android4.4以上才有这种效果,附源码1.导包:compile ‘com.android.support:design:24.1.1’ 2.自定义StatusBarView public class StatusBarView extends View { public StatusBarView(Context context, AttributeSet attrs)原创 2016-09-22 14:30:02 · 2728 阅读 · 0 评论