Android
文章平均质量分 73
蹲街式等待
这个作者很懒,什么都没留下…
展开
-
Android API 30及更高版本网络权限设置
在 Android API 30 及更高版本中,Google 引入了更严格的网络安全策略,其中包括对应用程序的网络访问权限进行了更多的限制。是清单文件(AndroidManifest.xml)中的配置项,用于指定应用程序是否允许明文流量(非加密流量)的网络请求,明文流量是指未经加密的网络流量,可能存在安全风险。配置项,您可以灵活地定义应用程序的网络安全策略,以确保应用程序与网络资源之间的安全通信。:应用程序将被限制只能发送加密流量的请求(即 HTTPS 请求)。:应用程序可以发送明文流量的网络请求;原创 2024-03-14 14:40:20 · 1494 阅读 · 0 评论 -
Android adb命令logcat日志分析
logcat是android中的一个命令行工具,可以用于得到程序的log信息。下面介绍adb logcat中的详细参数命令以及如何才能高效的打印日志,或者把日志保存到我们指定的位置。原创 2024-01-25 21:55:32 · 6262 阅读 · 0 评论 -
Android应用代码中获取鸿蒙系统信息
Android应用可以在鸿蒙系统中运行是因为鸿蒙系统提供了一种兼容层(compatibility layer)来支持Android应用的运行。鸿蒙系统的兼容层是一个软件层,用于在鸿蒙系统内部模拟Android运行环境。这个兼容层可以实现在鸿蒙系统上运行Android应用的关键功能,例如处理Android应用程序包(APK)的安装、解析和执行,还包括实现Android应用所依赖的核心组件、库和API的功能。原创 2023-07-20 21:04:13 · 1566 阅读 · 0 评论 -
Android 根据mapping文件还原混淆代码
app发布的时候都会做混淆处理,但是当发生错误的时候,只能看到一些混淆后的代码很难看清楚哪里错了,那么如何将混淆后的代码进行还原呢?Android sdk 目录下有专门的工具可以帮助我们进行还原。原创 2023-02-09 16:07:58 · 4317 阅读 · 0 评论 -
ArrayList和HashMap遍历比较
目录一、ArrayList遍历方式1、普通for循环遍历2、增强for循环遍历3、Iterator迭代器遍历4、三种方式比较二、Map遍历方式1、增强for循环 + keySet() 遍历2、增强for循环 + entrySet() 遍历3、Iterator + keySet() 遍历4、Itorator + entrySet() 遍历5、四种方式比较三、java开发手册(关于map的)一、ArrayList遍历方式1、普通for循环遍历for(int i=0; i<lists.size();原创 2021-12-06 23:29:48 · 648 阅读 · 0 评论 -
Android Glide图片加载框架(三)缓存机制
文章目录一、缓存简介二、缓存用法内存缓存方式磁盘缓存方式三、缓存KEY四、内存缓存内存缓存流程五、磁盘缓存磁盘缓存流程一、缓存简介Glide的缓存设计可以说是非常先进的,考虑的场景也很周全。在缓存这一功能上,Glide又将它分成了两个模块,一个是 内存缓存 ,一个是 磁盘缓存 。这两个缓存模块的作用各不相同,内存缓存 的主要作用是防止应用重复将图片数据读取到内存当中;磁盘缓存 的主要作用是防止应用重复从网络或其他地方重复下载和读取数据。内存缓存 和 硬盘缓存 的相互结合才构成了G原创 2020-11-08 17:55:17 · 1077 阅读 · 1 评论 -
Android Glide图片加载框架(二)源码解析之into()
文章目录一、前言二、源码解析1、into(ImageView)2、GlideContext.buildImageViewTarget()3、RequestBuilder.into(Target,RequestListener,RequestOptions);4、RequestBuilder.buildRequest()5、SingleRequest.obtain()6、isEquivalentTo()、isSkipMemoryCacheWithCompletePreviousRequest()7、Reque原创 2020-11-08 02:27:39 · 860 阅读 · 0 评论 -
Android Glide图片加载框架(二)源码解析之load()
文章目录一、前言二、源码分析1、load()Android Glide图片加载框架系列文章Android Glide图片加载框架(一)基本用法Android Glide图片加载框架(二)源码解析之with()一、前言在源码分析系列文章中,上一篇我们分析了 Glide.with() 方法的用法及作用,它传递了我们的上下文对象,并且返回绑定了对应生命周期的RequestManager对象,还没有看过上一篇文章的朋友,建议先去阅读 Android Glide图片加载框架(二)源码解析之with()原创 2020-11-08 00:05:57 · 671 阅读 · 0 评论 -
Android Glide图片加载框架(二)源码解析之with()
文章目录一、前言二、如何阅读源码三、源码解析1、with()一、前言在本系列的上一篇文章中,我们学习了Glide的基本用法,体验了这个图片加载框架的强大功能,以及它非常简便的API。还没有看过上一篇文章的朋友,建议先去阅读 Android Glide图片加载框架(一)基本用法。在多数情况下,我们想要在界面上加载并展示一张图片只需要一行代码就能实现,如下所示:Glide.with(this).load(url).into(img);虽说只有这简简单单的一行代码,但大家可能不知道的是,Glide原创 2020-11-07 22:11:20 · 740 阅读 · 0 评论 -
Android Glide图片加载框架(一)基本用法
现在Android上的图片加载框架非常成熟,像UniversalImageLoader、Glide、Picasso、Fresco等等,每一个功能都十分强大,他们使用场景有重合的,也有不同的地方,从框架的易用性、功能以及包的大小多方面考虑,还是选择Glide来进行深入的研究,这也是Google官方推荐使用的图片加载框架。下面我们通过一系列文章,由浅入深来了解Glide的用法。一、简介Glide是Google推荐的用于Android平台上的图片加载和缓存函数库。这个库被广泛应用在Google的开源项目中,原创 2020-10-29 15:20:03 · 765 阅读 · 0 评论 -
Android 将整形颜色值转换成String类型
转换方法:val hexColor = String.format("#%06X", [0xFFFFFF or intColor]);转换结果:#F2EADA原创 2020-05-16 13:32:36 · 2762 阅读 · 0 评论 -
Android Studio 查看页面布局层次结构
Android Studio有个可以查看手机上app页面布局层次结构的工具。可以协助我们对布局进行优化,去掉没有必要的节点等,通过这个工具可以清晰的看见页面整个结构;废话少说直接上图,再说过程。这就是我们想要看到的,每个节点都很清晰的展现在我们面前。接下来我们看如何进入到这个页面,包括每部分都是什么功能。下面我们就来看下如何打开:(按照图中箭头顺序依次打开)总结:根据以上步骤就完成这...原创 2020-04-27 18:22:52 · 3953 阅读 · 0 评论 -
Android WebView 使用漏洞
一、类型WebView中,主要漏洞有三类:任意代码执行漏洞;密码明文存储漏洞;域控制不严格漏洞;二、具体分析2.1、WebView任意代码执行漏洞出现该漏洞的原因有三个:WebView 中 addJavascriptInterface() 接口WebView 内置导出的 searchBoxJavaBridge_ 对象WebView 内置导出的 ac...原创 2020-04-18 12:22:35 · 778 阅读 · 0 评论 -
Android Button字母自动全部大写的问题
两种解决方案:方法一:在 xml 布局中设置属性 android:textAllCaps="false"<Button android:layout_width="wrap_content" android:layout_height="match_parent" android:text="添加动作组" android:textAllCaps="false" androi...原创 2020-04-16 10:08:28 · 355 阅读 · 0 评论 -
Android WebView 与 JS 交互
目录一、交互方式总结二、具体分析2.1 Android通过WebView调用 JS 代码方式1:通过WebView的loadUrl()方式2:通过WebView的evaluateJavascript()方法对比使用建议2.2、JS通过WebView调用 Android 代码2.2.1、方法分析方式1:通过 WebView的addJavascriptInterface()进行对象映射方式2:通过 W...原创 2020-04-15 21:18:41 · 557 阅读 · 0 评论 -
Android WebView使用攻略
目录前言一、简介二、作用三、使用介绍1、Webview类常用方法1.1、加载url1.2、WebView的状态1.3、关于前进 / 后退网页1.4、清除缓存数据2、常用工具类2.1、WebSettings类2.2、WebViewClient类2.3、WebChromeClient类3、注意事项:如何避免WebView内存泄露?四、实例五、总结前言现在很多App里都内置了Web网页(Hybrid...原创 2020-04-15 02:30:08 · 482 阅读 · 0 评论 -
Android RecyclerView实现九宫格效果
RecyclerView更加优化的复用机制和方便实现UI效果,几乎替代Listview和GridView的使用。但是分割线的实现,需要自己继承ItemDecoration来绘制。效果图item的布局文件<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.and...原创 2020-04-08 18:14:33 · 4393 阅读 · 0 评论 -
Android 动态计算ListView的高度
一、简介在Android开发的过程中有的时候我们需要手动计算ListView的高度,比如说,ScrollView中嵌套ListView的时候,我们就需要手动精确计算ListView的高度了。如果ListView的Item高度是固定的话还好计算一些,我们可以直接使用Item的条数 * Item的固定高度来计算,但是如果Item的高度随着内容的变化而变化,那么该如何计算呢?下面我们就开始说说如何...原创 2020-04-07 18:14:51 · 1512 阅读 · 0 评论 -
Android onActivityResult中requestCode与resultCode区别
想要了解requestCode与resultCode的区别,我们需要先了解以下三个方法的用法:startActivityForResult(Intent intent, Int requestCode)setResut(int resultCode, Intent intent)onActivityResult(int requestCode, int resultCode, I...原创 2020-04-05 02:46:43 · 2698 阅读 · 1 评论 -
Android 拦截或屏蔽返回键
在Android开发中我们常常会遇到需要拦截或屏蔽返回键的需求,对拦截后的返回键进行特殊操作。监听返回键有两种方式1、重写OnBackPressed方法@Override public void onBackPressed() { // 完全由自己控制返回键逻辑,系统不再控制,但是有个前提是: // 不要在Activity的onKeyDown或者OnK...原创 2020-04-05 02:16:21 · 8246 阅读 · 0 评论 -
Android Activity之间传递类对象
一、简介开发过程中,Activity之间传递数据是必不可少的,Android中使用Intent和Bundle作为数据载体,在Activity之间传递,对于基础数据类型,Bundle已经提供了相关的put、set方法,而作为自定义的类型则需要有特别的要求。自定义类型,想要使用Bundle传递时,需要满足特定的条件,即该类型需要实现Serializable接口或Parcelable接口。注:如果...原创 2020-04-03 20:46:46 · 2786 阅读 · 0 评论 -
Android Canvas绘制带箭头的直线
先看下效果图:下面我们直接看代码我自定义了一个View,代码如下:package com.davis.drawtrangle;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;impor...原创 2020-04-03 17:46:19 · 2445 阅读 · 0 评论 -
Android Studio 突然出现很多红色波浪线或红色感叹号解决方案
最近在开发过程中,某次打开Android工程之后,代码了出现大量的红色波浪线报错提示,但是工程确可以正常编译、正常打包,尝试了很多方法都无法去掉,最后找到了最有效的解决方案,步骤如下:1、删掉工程根目录下的.idea目录;2、重启Android Studio;3、Sync一下工程;4、重新Rebuild工程;经过这四步基本就解决问题啦。...原创 2020-04-02 16:20:33 · 10984 阅读 · 3 评论 -
Android 在onCreate()方法中获取控件宽高值为0解决方案
大家很多时候需要在Activity或者Fragment的onCreate()方法中获取声明的空间的高度或者宽度,进行位置移动或者其他操作,但是当调用 view.getHeight() 或者 view.getWidth() 获取的竟然为0。。。其实很容易理解,在onCreate()的时候,实际上控件只是声明了,并没有绘制完成,没有attach到window上,所以导致获取的高度和宽度为0,那么该怎...原创 2020-03-30 13:56:17 · 1761 阅读 · 1 评论 -
Android 获取屏幕宽度和高度的几种方法
方法一:public static void getScreenSize1(Context context){ WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); Display defaultDisplay = window...原创 2020-03-30 12:10:58 · 2820 阅读 · 1 评论 -
Android MotionEvent中getX()、getRawX()和getTop()的区别
为了展示getX()、getRawX()和getTop()方法的区别,我们写了一个简单的测试Demo,我们写了一个自定义控件(继承ImageView)。package com.demo.ui;import android.content.Context;import android.support.annotation.Nullable;import android.util.Attri...原创 2020-03-30 11:25:01 · 699 阅读 · 0 评论 -
Android最全UI库合集
目录抽屉菜单ListViewWebViewSwitchButton按钮点赞按钮进度条TabLayout图标下拉刷新ViewPager图表(Chart)菜单(Menu)浮动菜单对话框空白页滑动删除手势操作RecyclerViewCardColorDrawableSpinner布局模糊效果TabBarAppBar选择器(Picker)跑马灯日历时间主题样式ImageView通知聊天视图Header引导...原创 2020-03-12 16:29:20 · 5305 阅读 · 2 评论 -
Android 基础性能数据获取(/proc/)
系统内存读取命令:/proc/meminfoJava代码: private void click(){ try{ String cmd = "/proc/meminfo"; BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInp...原创 2019-10-28 15:33:30 · 3160 阅读 · 1 评论 -
Android 进程监控(top命令)
一、查看top命令首先执行:abd shell然后执行:top --help注:不同的Android系统,top命令有所不同。Android N(level = 25) 及之前Invalid argument "-p".Usage: top [ -m max_procs ] [ -n iterations ] [ -d delay ] [ -s sort_column ] [ ...原创 2019-10-22 15:34:22 · 11657 阅读 · 13 评论 -
Android查看当前应用已经加载的so库
源代码: private static List<String> allSOLists = new ArrayList<String>(); /** * 获取全部已加载的SO库 */ private void getAllSOLoaded(){ allSOLists.clear(); // 当前应用的进程ID ...原创 2019-10-21 18:15:47 · 7052 阅读 · 0 评论 -
Android 为控件设置阴影
在Android中设置一个阴影很简单,只需要两步:1、设置eleavation值(高度)2、添加一个背景或者outline (即阴影的形状)说明:View的大小位置都是通过x,y确定的,而现在有了z轴的概念,而这个z值就是View的高度(elevation),而高度决定了阴影(shadow)的大小。注:View的z值由两部分组成,elevation和translationZ(它...原创 2019-08-14 18:21:54 · 8045 阅读 · 0 评论 -
Android在代码中设置drawableLeft(Right/Top/Bottom)
根据业务的需要,要在代码中设置控件的drawableLeft,drawableRight,drawableTop,drawableBottom属性。我们知道在xml中设置的方法为:android:drawableLeft="@drawable/xxxxx"但是在代码中并没有相关的setDrawableLeft等方法。怎么办呢?别担心,api为我们提供了一个setCompoundDrawa...原创 2019-08-14 18:33:13 · 16447 阅读 · 2 评论 -
Android学习指南
核心分析内容对于怎么学习Android,主要解决的是3个问题:学什么、怎么学 & 怎么用。具体如下:下面,我将带着上述几个问题,详细讲解自身学习Android的方法和Android学习路径。最后,还会结合前面内容,给出综合的具体执行学习Android的建议。1、学什么面向Android初、中级开发者,对于要学习的Android理论知识,我认为主要包括:Android基础 &...原创 2019-08-14 22:16:39 · 5321 阅读 · 1 评论 -
Java提高篇 ——Java注解
注解语法Java 注解用于为 Java 代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的。Java 注解是从 Java5 开始添加到 Java 的。因为平常开发少见,相信有不少的人员会认为注解的地位不高。其实同 classs 和 interface 一样,注解也属于一种类型。注解(Annotation) 相当于一种标记,在程序中加入注解就等于为...原创 2018-12-14 19:53:50 · 4040 阅读 · 0 评论 -
Android设计模式之——命令模式
一、介绍命令模式(Command Pattern),是行为型设计模式之一。命令模式相对于其他的设计模式来说并没有那么多的条条框框,其实它不是一个很”规范“的模式,不过,就是基于这一点,命令模式相对于其他的设计模式更为灵活多变。我们接触比较多的命令模式个例无非就是程序菜单命令,如在操作系统中,我们点击”关机“命令,系统就会执行一系列的操作,如先是暂停处理事件,保存系统的一些配置,然后结束程序进程,最后原创 2017-10-29 20:56:30 · 7201 阅读 · 0 评论 -
Android ViewRoot、DecorView&Window浅析
一、简介DecorView为整个Window界面的最顶层View。DecorView只有一个子元素为LinearLayout。代表整个Window界面,包含通知栏,标题栏,内容显示栏三块区域。LinearLayout里有两个FrameLayout子元素。(20)为标题栏显示界面。只有一个TextView显示应用(21)为内容栏显示界面。就是setContentView()方法载入的...原创 2019-08-14 17:43:01 · 11432 阅读 · 0 评论 -
Android 网络异常
目录前言一、UnknownHostException1、网络断开验证2、DNS 服务器意外挂掉验证3、DNS 服务器故障验证4、所需诊断信息二、ConnectTimeoutException三、SocketTimeoutException1、子错误 - 读超时2、子错误 - SSL 握手超时3、子错误 - 未知原因四、HttpHostConnectException1、服务器故障验证2、代理服务器...原创 2019-08-07 21:42:04 · 19930 阅读 · 0 评论 -
Android代码命名规范
目录1、为什么 规范 Android 代码命名?增强代码的可读性增强代码的可维护性正由于上述两个作用,从而使得 开发效率 & 维护效率 得到大幅度的提高。2、Android需要命名的代码(对象)有哪些?3、具体命名规范下面,我将对 Android 代码对象中的命名规范进行详细讲解注:由于 Android 主要用 Java 实现,所以Android规范会涵盖部分Ja...原创 2019-08-19 10:47:24 · 7269 阅读 · 0 评论 -
Android设计模式之——工厂方法模式
一、介绍工厂方法模式(Factory Pattern),是创建型设计模式之一。工厂方法模式是一种结构简单的模式,其在我们平时开发中应用很广泛,也许你并不知道,但是你已经使用了无数次该模式了,如Android中的Activity里的各个生命周期方法,以onCreate方法为例,它就可以看作是一个工厂方法,我们在其中可以构造我们的View并通过setContentView返回给framework处理等,原创 2017-10-23 22:09:54 · 7232 阅读 · 0 评论 -
Android设计模式之——原型模式
一、介绍原型模式是一个创建型的模式。原型二字表明了该模型应该有一个样板实例,用户从这个样板对象中复制出一个内部属性一致的对象,这个过程也就是我们俗称的“克隆”。被复制的实例就是我们所称的“原型”,这个原型也是可定制的。原型模型多用于创建复杂的或者构造耗时的实例,因为这种情况下,复制一个已经存在的实例可使程序运行更高效。二、定义用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。三、使用场景原创 2017-10-23 09:38:18 · 6899 阅读 · 0 评论