![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 58
xuwb123xuwb
不辜负似水年华
展开
-
Android 11 (API 级别 30)AppOpsManager.OnOpNotedCallback监听隐私运行时权限调用
一、简介监听隐私运行时权限调用: 此流程在搭载 Android 11(API 级别 30)及更高版本的设备上可用,可让您更好地识别可能出现的意外数据访问。您的应用可以注册 AppOpsManager.OnOpNotedCallback 实例,该实例可在每次发生以下任一事件时执行相应操作:应用的代码访问私密数据。为了帮助您确定应用的哪个逻辑部分调用了事件,您可以按归因标记审核数据访问。依赖库或 SDK 中的代码访问私密数据。数据访问审核是在发生数据请求的线程上调用的。这意味着,如果应用中的第三方原创 2021-10-27 16:43:51 · 3448 阅读 · 0 评论 -
Android监听截屏事件
截屏方案对比(截屏事件没有同一的api)方案一:利用FileObserver监听某个目录中资源变化情况优点:操作简单缺点:不同的手机,默认截屏图片储存的文件夹可能不同不同的手机,事件回调可能有些不同FileObserver只能监听文件夹中子文件和子文件夹的变化情况,不能监听子文件夹内部的资源变化方案二:利用ContentObserver用来监听指定uri的所有资源变化【适配R】优点:适配方便缺点:去重麻烦结合方案一方案二优缺点,且项目里已有方案是FileObse原创 2021-06-21 18:01:00 · 1022 阅读 · 0 评论 -
自定义dialog中设置弹出消失动画
自定义dialog 将setContentView放在dialog 的onCreat()里方法一给dialog中 设置窗口属性 window.setWindowAnimations1-1 给dialog 设置主题 res/values/styles<resources><!-- 设置dialog 主题--> <style name="RequestDialog" parent="@android:style/Theme.Dialog">...原创 2021-05-22 15:21:35 · 1741 阅读 · 0 评论 -
Dialog 的生命周期
一 :生命周期一共 6个onCreate(),show(),onStart() ,cancel(),onDismiss(),Stop() 。注意:1 当自定义di当将setContentView()原创 2021-05-22 14:50:12 · 2907 阅读 · 0 评论 -
Android 判断冷启动 热启动 (应用在前台/ 后台)
冷启动: 在启动应用时,系统中没有该应用的进程,这时系统会创建一个新的进程分配给该应用; 热启动: 在启动应用时,系统中已有该应用的进程(例:按back键、home键,应用虽然会退出,但是该应用的进程还是保留在后台) 冷启动: Application onCreate 在冷启动的时候执行一次Application.ActivityLifecycleCallbacks 监听是用来监听所有 Activity 的生命周期回调 :可判断应用前后台/ 热启动appl..原创 2020-10-15 15:18:07 · 4742 阅读 · 1 评论 -
Java 枚举类型原理分析为什么枚举比用静态变量多消耗两倍的内存
一 起源:枚举是一种特殊的数据类型,一般用来列举有限个、同类型的常量。它能保证参数的安全性,如方法声明传入的参数,必须是指定枚举中的常量。但是Android开发文档指出,使用枚举会比使用静态变量多消耗2倍内存。为什么枚举这么耗内存?二 枚举原理:定义枚举类 Week 星期一 到 星期五public enum Week { MONDAY,TUESDAY,WEDNESDAY,THURSDA...原创 2018-05-31 18:12:32 · 5664 阅读 · 0 评论 -
Android 同步cookie到webView,区分系统版本
当app原生项目登录时,跳转到h5界面需要将登录状态同步到h5里,这时需要将cookie设置给webview同步登录状态。具体代码如下:1 设置cookie前 设置支持js脚本 WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true);// 支持javaScript脚本...原创 2018-05-22 14:35:51 · 962 阅读 · 0 评论 -
android widget ViewFlipper
官方文档介绍:http://www.zhdoc.net/android/reference/android/widget/ViewFlipper.htmljava.lang.Object ↳android.view.View ↳android.view.ViewGroup ↳android.widget.FrameLayout ↳android.widget.ViewA...原创 2018-05-21 15:04:59 · 589 阅读 · 0 评论 -
Android studio 3.x集成butterknife 8.8.1 集成 使用 及集成时错误解决
一 集成ButterKnife 报错 解决办法 : 只添加 app下 build.gradle compile 'com.jakewharton:butterknife:8.8.1'annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'二 基本功能1 @BindView(int id); 绑定单个view ...原创 2018-05-08 11:09:23 · 2464 阅读 · 1 评论 -
setUserVisibleHint : viewPager+ Fragment 懒加载的实现
一 来源:setUserVisibleHint :设置Fragment 内部维系是否可见的mUserVisibleHint【Boolean型】变量的 方法 public void setUserVisibleHint(boolean isVisibleToUser) { if (!mUserVisibleHint && isVisibleToUser &...原创 2018-05-14 14:39:50 · 253 阅读 · 0 评论 -
Sublime Text 下载 和破解
Sublime Text 下载 地址:https://www.sublimetext.com/ 注册码:----- BEGIN LICENSE -----eldonSingle User LicenseEA7E-1122628C0360740 20724B8A 30420C09 6D7E046F3F5D5FBB 17EF95DA 2BA7BB27 CCB1494727A316BE 8...原创 2018-05-18 14:38:37 · 689 阅读 · 0 评论 -
自定义仿微信支付输入密码方框样式输入框
效果图如下思路: linearLayout里嵌入textview用于显示数字 上盖一层透明的editText 监听输入事件,当没输入时 光标可显示 ,长安用于粘贴复制过的数字 输入后数字后 光标消失。NumberEditText :public class NumberEditText extends LinearLayout { /** 输入框 */ private ...原创 2018-04-17 15:00:49 · 1878 阅读 · 0 评论 -
Unable to instantiate application....application.ReaderApplication: java.lang.ClassNoFind
新项目拉取时遇到的问题,安装后启动不了。java.lang.RuntimeException: Unable to instantiate application application.ReaderApplication: java.lang.ClassNotFoundException: Didn't find class 解决办法:Android studio Ctrl+Alt + S...原创 2018-04-24 14:50:29 · 550 阅读 · 0 评论 -
Android Studio运行app时提示框Please select Android SDK
解决办法:方法一: 在File->Project Structure中将Build tools version修改,问题解决方法二:Ctrl + Alt + S 打开设置 找到Android SDK 点击右侧Edit打开SDK的设置界面如下图所示,这里SDK的目录保持不动,单击页面下方的“Next”按钮,在下一个页面继续单击“Next”按钮,等待Android...原创 2018-04-24 14:50:02 · 3741 阅读 · 0 评论 -
'abd' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
一:找到SDK目录,在其子目录platform-tools中找到adb,exe这个程序,将其复制到tools目录下配置环境变量:在path里加入在终端输入 adb命令即可 如果还是不行 将SDK里tools目录下的android.bat 复制到C:\Windows\System32或者C:\Windows\SysWOW64 目录里 重启终端 即可...原创 2018-04-24 14:50:13 · 4435 阅读 · 0 评论 -
Error:Execution failed for task ':app:javaPreCompileDebug'. AS加入lomBok依赖后
AS加入lomBok依赖后Error:Execution failed for task ':app:javaPreCompileDebug'.> Annotation processors must be explicitly declared now. The following dependencies on the compile classpath are found to co...原创 2018-05-08 21:49:18 · 321 阅读 · 0 评论 -
Error:Execution failed for task ':app:transformClassesAndResourcesWithProguardForLemon_wapLemonRead
加入lombok AS打正式包时 混淆报错并出现警告原因是 P r 原因: proguard 文件启用时报错 解决 方法:一种是如果你要禁用 proguard 文件,直接在项目的 build 文件中将 minifyEnabled 设置为 false 二 如果不想禁用 proguard 文件,那么可以将 -ignorewarnings -keep class * ...原创 2018-05-09 10:09:15 · 243 阅读 · 0 评论 -
Android 常用插件之 LomBok
一 介绍 lomBok 是通过使用对应的注解,可以在编译源码的时候生成对应的方法,减少模板代码的编写。二 集成 AS 在build.gradle 添加如下依赖 compile 'javax.annotation:javax.annotation-api:1.2' compile 'org.projectlombok:lombok:1.16.18' 然后...原创 2018-05-09 18:28:07 · 3457 阅读 · 0 评论 -
jad反编译的使用
下载地址:http://www.javadecompilers.com/jad下载解压后包含jad.exe 和Readme.txt中文Readme为jad的主页是:http://www.geocities.com/SiliconValley/Bridge/8617/jad.htmlCopyright 2000 Pavel Kouznetsov (kpdus@yahoo.com).1. 请先读ja...原创 2018-05-31 18:36:35 · 7688 阅读 · 1 评论 -
set android.defaultConfig.javaCompileOptions.annotationProcessorOptions.includeCompileClasspath = t
在集成lomBok butterknife时 用到注解build报如下错误 Error:FAILURE: Build failed with an exception.* What went wrong: Execution failed for task ':app:javaPreCompileDebug'. > Annotation processor...原创 2018-07-07 10:08:15 · 8844 阅读 · 1 评论 -
The SourceSet 'instrumentTest' is not recognized by the Android Gradle Plugin.
解决办法用 androidTest 替换 instrumentTest,编译运行即可。原创 2019-09-03 16:00:53 · 447 阅读 · 0 评论 -
AS3.5 升级后 Unable to resolve dependency for和Could not resolve project
把implementation project(':xxx')改为:implementation project(path: ':xxx', configuration:'default')原创 2019-09-03 15:37:26 · 399 阅读 · 0 评论 -
Android 小说阅读护眼模式
Android 小说阅读护眼模式实现方案:采用全局dialog 覆盖APP 悬浮在 其他APP之上,给dialog设置护眼色值自定义护眼模式dialogpublic class EyeProtectionDialog extends Dialog { ImageView iv; publ...原创 2019-08-20 18:55:48 · 989 阅读 · 0 评论 -
RecyclerView 获取第一个曝光最大的itemposition
获取指定view 在屏幕中坐标 int[] location = new int[2];view.getLocationOnScreen(location); int x=location[0];//获取当前位置的横坐标 int y=location[1];//获取当前位置的纵坐标竖向滑动: public int getCurrentViewIndex...原创 2019-06-28 13:12:20 · 397 阅读 · 0 评论 -
Dialog设置全屏显示到状态栏
public ReadTopUtilsDialog(@NonNull Context context, View contentView) { super(context, R.style.ActionSheetDialogStyle); this.contentView = contentView; Window window = this.ge...原创 2019-04-23 18:10:33 · 4917 阅读 · 1 评论 -
Math.atan与Math.atan2
一 返回极坐标 : public static double Atan2(double y,double x)参数y 类型System.Double点的 y 坐标。x类型:System.Double点的 x 坐标。角度θ,以弧度为单位,满足 -π≤θ≤π,且 tan(θ) =y/x,其中 (x,y) 是笛卡尔平面中的点。请看下面: 如果 (x,y...原创 2019-04-12 15:43:41 · 2318 阅读 · 0 评论 -
自定义view之Canvas构造 new Canvas(Bitmap)中对canvas和bitmap的关系
一Canvas的定义:The Canvas class holds the "draw" calls. To draw something, you need 4 basic components: A Bitmap to hold the pixels, a Canvas to host the draw calls (writing into the bitmap), a drawing...原创 2019-03-06 14:16:55 · 2832 阅读 · 0 评论 -
通过反射获取当前Activity实例
转自:https://blog.csdn.net/baidu_31093133/article/details/52785580步骤:1、 获取ActivityThread中保存的所有的ActivityRecord 2 、从ActivityRecord中获取状态不是pause的Activity并返回,这个Activity就是当前处于活动状态的Activitypublic stati...转载 2019-02-25 16:31:39 · 2549 阅读 · 1 评论 -
软键盘弹起 EditText固定在输入法上方
View decorView = getActivity().getWindow().getDecorView(); View contentView = getActivity().findViewById(Window.ID_ANDROID_CONTENT); decorView.getViewTreeObserver().addOnGlobalLayout...原创 2019-02-21 17:52:43 · 1058 阅读 · 0 评论 -
App 瘦身总结
一 APK结构:现在AndroidStudio支持浏览安装包结构首先将待瘦身的app拖入AS里结构如图所示:会显示大小占比 和 一个apk的构成二 对应结构的瘦身方法1 针对dex即编写的Java代码生成的文件; 方法1: 开启混淆 过滤未用到的classbuildTypes { //增加构建类型 releaseMinifyEnable...原创 2018-08-28 11:03:06 · 284 阅读 · 0 评论 -
Android 7.0 之后抓包 Charles 手机配置证书后仍报: SSLHandshake: Received fatal alert: certificate_unknown
Client SSL handshake failed: An unknown issue occurred processing the certificate (certificate_unknown) 安卓7之后调整了安全策略会导致部分手机抓包失败,请参考官网方法:https://developer.android.google.cn/training/articles/secu...原创 2018-08-14 15:04:53 · 11716 阅读 · 0 评论 -
java.lang.RuntimeException: Manifest merger failed with multiple errors, see logs
java.lang.RuntimeException: Manifest merger failed with multiple errors, see logs :清单合并失败多个错误,请参阅日志当项目加入AVMPSDK-external-release-5.4.1002 WAF 阿里云应用防火墙时报如下错误:org.gradle.api.tasks.TaskExecutio...原创 2018-08-01 09:39:50 · 6529 阅读 · 0 评论 -
org.gradle.process.internal.ExecException: A problem occurred starting process 'command 'D:\sdk\ndk
集成三方阿里云WAF应用防火墙arr包时,涉及NDK报如下错误tasks.TaskExecutionException: Execution failed for task ':HeiyanReader:transformNativeLibsWithStripDebugSymbolForHeiyan_wapDebug'. at org.gradle.api.internal.tasks.e...原创 2018-08-01 10:50:38 · 5872 阅读 · 0 评论 -
整理Viewpager无限轮播控件
一 自定义viewpagerAdapter 1、最大值设置:getcount 返回 为Interger.MAXVALUE 2、轮播之后View的移除 【防止重复添加view】public class ImageAdapter extends PagerAdapter { private Context context; //轮播需要的图片 public Arra...原创 2018-04-04 15:54:06 · 441 阅读 · 0 评论 -
Anaroid获取手机型号、手机系统版本、软件版本号
Anaroid获取手机型号、手机系统版本、软件版本号 获取手机信息主要用系统os包 软件版本号用到的是软件包管理器PackageManager,献上代码: public class MainActivity extends Activity { private TextView mTextView; @Override protected void原创 2017-03-20 11:53:44 · 467 阅读 · 0 评论 -
Android开发中的异常统一处理
Android开发中的异常统一处理实际开发中为了防止程序异常奔溃,而使得开发人员不知道奔溃原因,且影响用户体验:所以我们应该在app中统一处理异常,拦截异常信息,上报服务器。一自定义异常拦截实现Thread.UncaughtExceptionHandler重写拦截异常方法public class CrashHandler implements Thread.UncaughtExcept原创 2017-06-16 16:40:17 · 1844 阅读 · 0 评论 -
迅速集成Jpush极光推送功能
迅速集成Jpush极光推送功能一集成 1下载官方集成SDk https://www.jiguang.cn/push 后解压jpush-android-release-3.0.6 2复制libs中的 jcore-android_v1.1.3.jar 和jpush-android_v3.0.6.jar到工程的libs中 并添加上依赖 3新建sr原创 2017-06-08 11:09:39 · 893 阅读 · 0 评论 -
GreenDao3.2.2集成使用以及数据库的升级
GreenDao3.2.2集成使用以及数据库的升级一概念 是一个将对象映射到 SQLite 数据库中的轻量且快速的 ORM 解决方案。 二优点: 一个精简的库;性能最大化;内存开销最小化;易于使用的 APIs;对 Android 进行高度优化。三集成原创 2017-06-20 20:45:24 · 6763 阅读 · 0 评论 -
安卓Studio上使用Git进行代码控制一
一 下载Git并安装到电脑上 git下载链接为:https://git-scm.com/downloads。一般安装完不需要配置环境变量,如需配置path里配置精确到git安装目录的cmd例如:D:\Program Files\git\Git\cmd; 检测git是否配置好 打开cmd 输入git敲回车,出现如下图git信息证明git安装成功。原创 2017-04-18 17:18:10 · 441 阅读 · 0 评论 -
View绘制过程
Android View绘制过程 本文章已收录于:Measure过程Layout过程Draw过程 Android的View绘制是从根节点(Activity是DecorView)开始,他是一个自上而下的过程。View的绘制经历三个过程:Measure、Layout、Draw。基转载 2017-06-14 10:25:33 · 202 阅读 · 0 评论