![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 67
iblade
明年的某个时候,你会想着要是今天就行动了该多好!
展开
-
Attribute application@networkSecurityConfig value=(@xml/network_security_config) fromAndroidManifest
这个错误提示说明在你的项目和库中都定义了属性。为了解决这个冲突,你需要使用属性来指定哪个配置应该被替代。tools:这通常是在<manifest>元素的开头。</</这样做将会告诉构建系统使用你在项目中定义的文件,而不是库中定义的文件。原创 2024-07-25 15:46:08 · 429 阅读 · 0 评论 -
RecyclerView嵌套ScrollView卡顿解决
以上方法都是为了避免嵌套在ScrollView中引起的性能问题。最推荐的方法是使用或者将头部和列表合并到一个中。如果仍然遇到问题,可以尝试其他优化技术,例如减少视图层次结构或优化适配器中的数据绑定逻辑。原创 2024-06-27 14:48:00 · 579 阅读 · 0 评论 -
Android 上展示 GIF 动图的方法
使用ImageView加载 WebP 格式优点:简单直接,节省存储空间。缺点:需要将 GIF 转换为 WebP,且 WebP 支持有限。使用Glide优点:强大的图片加载和缓存功能,支持复杂的图像处理。缺点:库较大,增加 APK 大小。使用Fresco优点:支持多种图片格式,高效的内存和磁盘缓存管理。缺点:库较大,学习曲线较陡。使用优点:专用于 GIF,功能丰富,内存使用优化较好。缺点:仅限于 GIF,不支持其他格式。使用Movie类优点:不需要额外的第三方库,轻量级。缺点。原创 2024-06-14 18:58:51 · 1437 阅读 · 0 评论 -
ConstraintLayout:layout_constraintWidth_default和layout_constraintHorizontal_bias组合
在 Android 开发中,是一个强大的工具,用于构建灵活且响应迅速的用户界面。在本文中,我们将深入探讨两个关键属性——和,并展示如何使用这些属性来实现一个常见的布局需求。原创 2024-06-14 18:37:14 · 438 阅读 · 0 评论 -
ConstraintLayout:layout_constraintHorizontal_chainStyle
是ConstraintLayout中的一个属性,用于定义水平链(horizontal chain)中各个视图之间的布局方式。在ConstraintLayout中,链是一组通过双向约束连接在一起的视图的集合,可以是水平的也可以是垂直的。属性决定了如何分配链内视图之间的空间或者如何对齐这些视图。原创 2024-05-14 16:43:03 · 915 阅读 · 1 评论 -
ArtifactResolveException: Could not resolve all files for configuration ‘:app:googleArm32DebugRuntim
遇到这个错误,通常意味着Gradle在构建过程中无法解析项目依赖的一些文件。原创 2024-05-10 15:32:00 · 646 阅读 · 0 评论 -
Android:lib库之间互不依赖,怎么传值?
如果libA与libB需要共享很多数据或逻辑,可以考虑创建一个新的库(比如CommonLib),专门用于存放共享的代码和资源。既然主工程依赖了所有的库,你可以通过主工程来协调libA和libB之间的数据共享。例如,可以在主工程中获取libB的值,并将其以参数的形式传递给libA。通常来说,尽量避免模块间的直接依赖,采用一种松耦合的方式来组织代码,可以使项目更加灵活和可维护。定义一个接口,在libA中声明需要的方法,然后在主工程中实现这个接口,并将libB的数据传递到libA。接口访问到libB的值。原创 2024-04-30 18:14:53 · 418 阅读 · 3 评论 -
Android isNetworkConnected如何判断APP连接到了无网络热点
在考虑网络检测方法时,速度和稳定性是两个重要的考量因素。开发者需要基于应用的具体需求和目标用户所在地的网络环境来选择最适合的方案。对于需要快速反馈且目标用户遍布全球的应用,使用DNS解析可能是最优的选择,尤其是当选择如Google DNS或Cloudflare DNS这样的全球性服务时。然而,在特定地区(例如中国大陆),为了确保最佳的访问速度和稳定性,选择本地DNS服务可能更加合适。对于主要面向特定地区用户的应用,例如中国大陆,采用HTTP HEAD请求并选择本地流行且稳定的网站(如。原创 2024-04-23 15:16:45 · 1070 阅读 · 1 评论 -
查看APK签名信息
查看APK文件的签名信息,可以使用Android SDK中提供的一些工具。原创 2024-04-19 19:50:56 · 1969 阅读 · 0 评论 -
查看apk是64位32位(三种方法)
通过检查APK文件,你可以确定该APK支持的架构类型,包括它是为64位(例如arm64-v8ax86_64)还是32位(例如x86)架构准备的。Android应用程序可以包含多个不同的二进制文件,每个文件针对不同的处理器架构,这些文件通常被称为ABI(Application Binary Interface)。一个APK可以同时包含32位和64位的二进制版本,以便在各种设备上提供最佳性能。原创 2024-04-19 17:20:28 · 6054 阅读 · 2 评论 -
Android动态地获取资源的ID
方法在Android开发中用于动态地获取资源的ID。这个方法允许你根据资源的名称、类型和包名来查找对应的资源ID,而不是直接使用硬编码的R类引用(例如。原创 2024-03-21 14:39:43 · 767 阅读 · 0 评论 -
Android获取UID的新思路
在 Android 设备中,获取唯一UID通常是个让程序员头疼的事情。大家都是各显神通来拼接 随机 存值等等。首先 我们获取UID,很多时候是想,我这里提供一种思路,例如公司做的是一个招聘类app,那么每次app冷启动时,可以获取微信app的安装时间。如何获取呢?原创 2024-03-20 17:00:34 · 877 阅读 · 1 评论 -
Android获取某个app首次安装时间和更新时间
请注意,对于普通应用来说,你不需要任何特殊权限就可以访问这些信息。但是,请确保在尝试调用。类来获取应用程序的安装时间和上次更新时间。) 权限,并且它运行在具有正确权限的环境中。如果微信应用未安装,时,你的代码是在拥有有效上下文的环境中执行,例如在。此代码假定您已经拥有必要的上下文 (在Android中,可以使用。原创 2024-03-20 16:03:04 · 1125 阅读 · 0 评论 -
ANR:QueuedWork.waitToFinish(), SharedPreferences
项目中 ANR 率居高不下,从统计上来看排在前面的有几个都是 SharedPreference(以下简称 SP)引起的。接下来我们抽丝剥茧的来分析其产生原因及如何解决。这段ANR(Application Not Responding)报错信息显示了一个涉及线程同步的问题。ANR发生时,通常是因为应用程序在主线程上执行了一个耗时操作,超过了系统设定的时间限制(如5秒),导致未能响应用户输入或系统事件。: 表明正在运行与实现相关的一段代码。允许Android应用存储和检索键值对数据。原创 2024-03-20 14:53:17 · 920 阅读 · 0 评论 -
如何从Android手机导出已安装的APP
在这篇博客中,我们将讨论如何将Android设备上已安装的应用程序(以Instagram为例)导出到电脑上。无论您是开发人员需要检查APK文件,还是仅仅想要备份某个应用,以下步骤都能帮助您完成任务。原创 2024-03-19 18:31:25 · 4021 阅读 · 0 评论 -
Android Gradle插件8.0资源ID将不再final,Resource IDs will be non-final by default in Android Gradle Plugin8
并非特定版本8.0将实施这一变化,因为从我搜集到的信息来看,这个变化曾在5.0版本中提及过,但具体会在哪个版本实现尚不确定,因此需要关注官方公告。具体到项目中的影响,开发者需要追踪相关工具和库的更新,以确保他们的应用能够顺利适应新版Android Gradle插件的变更,并且及时更新他们的代码以避免潜在的编译错误。当资源ID不必在编译时被确定为final常量时,构建系统可以避免某些复杂的处理过程,从而加速整体的构建速度和效率。的,构建系统可能有更大的灵活性来处理资源,而不必担心破坏依赖于这些资源的代码。原创 2024-01-24 17:24:00 · 1413 阅读 · 0 评论 -
Android 访问存储卡的三种主要的目录
这些目录对所有应用都是可见的,并且不需要任何特殊权限来读取媒体文件。开发者在选择存储位置时,应该考虑到这些区别,并基于用户的数据隐私以及文件的用途选择正确的存储路径。这些目录是应用专属的,在应用卸载后会自动删除里面的内容。不需要任何权限即可读写这些目录中的文件。这是用于存储临时缓存文件的目录。:适合保存用户希望长期保留并可以与其他应用共享的文件,如照片、音乐等。:适合存储应用的临时缓存数据或不需要与其他应用共享的大型文件。:适合存放应用运行过程中产生的临时缓存文件。权限,并且访问路径可能受到某些限制。原创 2024-01-23 16:21:17 · 1512 阅读 · 1 评论 -
android:clickable=“false“无效,依然能被点击
虽然在代码中设置点击事件监听器会改变视图的可点击状态,但是XML文件中的设定有助于定义和理解视图的默认行为和布局的设计意图。:在复杂的视图层次结构中,可能会有一些子视图默认不接受点击事件,因为点击事件被父视图处理了。:对于不需要处理点击事件的视图,将其设置为不可点击可以避免在触摸事件分发过程中进行不必要的点击检查,从而轻微提升性能。:当你创建一个自定义视图或布局,并且默认情况下它不应该响应点击事件时,你可以在XML中明确地将。在某些情况下响应点击事件,即使已经设置了点击监听器,你可以在代码中动态地设置。原创 2024-01-11 11:18:14 · 1536 阅读 · 0 评论 -
setOnClickListener(null)父控件依然拿不到点击
需求:评价星星 在评价页支持点击选中,在其他页面点击要跳转页面。//此方法无用。isEditable = false ,点击依然无法跳转 public void setEditable(boolean isEditable) { this.isEditable = isEditable; for (int i = 0; i < getChildCount(); i++) { getChildAt(i).setOnClickListene原创 2022-03-18 17:23:12 · 1244 阅读 · 1 评论 -
Dialog空白区点击的监听
需求:底部弹窗上有输入框,如果显示键盘,点击空白仅消失键盘,键盘不在,消失弹窗。监听Dialog空白区域,最常见思路是空白区域也写上View,监听View点击即可。但是Dialog中有输入框时,键盘弹起时,会出现画面跳动,体验很差。需要从getDecorView层面入手。重写Dialog,然后加上如下代码: getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, WindowManager.LayoutPar原创 2021-09-06 15:19:09 · 1465 阅读 · 0 评论 -
Android split()特殊符号“.”、“|”、“^”等字符
需求:“求职神器|完美简历!”—>[求职神器,完美简历]①只要第一个判断可以进入,即line 138是可用的,但line 139不可用,②将line 142和line 145,再试试。结论:一、split 分割字符时,两种方法:方法①:\转义,单个\也是特殊符号,需要两个\,即split("\|");方法②:如果是在JDK(Java)用split(“|”);如果是ART(Android)中split(“[ | ]”)。二、contains 判断包含:不能加转义 \ 或者 [ ] ,需原创 2021-08-10 14:44:35 · 4651 阅读 · 0 评论 -
Mac中Android Studio 意外闪退
背景是这样的,我要做一个自定义view,需要反复调整UI显示,所以我有新建了一个Demo工程,写完运行Demo后,手机卡死了,等我看log时,AS闪退了,WTF?然后我点击“重新打开”,再次闪退。于是我重启了Mac。然而,依然反复闪退。。。下面是崩溃log。跪求路过大神指津。Process: studio [538]Path: /Applications/Android Studio 2.app/Contents/MacOS/stu.原创 2021-05-08 21:35:37 · 2410 阅读 · 0 评论 -
Android跨module通信
Android工程业务繁多时,为了聚合业务,通常会根据业务类型拆分成不同的module,例如ChatLibrary,PayLibrary,FaceIdentifyLib等,然后让主工程分别依赖这些子module,方便主工程随时调用子module的信息。但是此时子module并未依赖主工程,自然也无法访问主工程的数据。那么用EventBus事件总线呢?试验过都会被modules间的这道墙所隔离。(EventBus只能用在单module里通信)可以使用boardcast ,这是安卓本身系统带有可以整个系统原创 2021-02-26 18:59:58 · 1403 阅读 · 0 评论 -
Fragment嵌套坑多多
Android有碎片化的问题,当然本文说的碎片化不是指的系统版本碎片化的问题,而是Fragment组件碎片化的问题。很久之前,在Android 3.1系统发布的时候,Google推出了使用Fragment来更加容易地开发平板和手机应用,虽然Activity还是页面结构的主体,但是却可以在其基础上使用多个Fragment来构建页面,这些Fragment都是有各自的生命周期的。最常见的是列表和详情页面使用Fragment,如果在手机设备上,这个两个一般都是在独立的Activity页面中,但是在平板上这两翻译 2021-02-05 16:52:36 · 583 阅读 · 0 评论 -
HashMap和LinkedHashMap区别应用
java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMapHashTableLinkedHashMapTreeMapMap主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。Hashmap 是一个最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。 HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;Hash原创 2020-09-02 20:37:15 · 253 阅读 · 0 评论 -
清空所有Activity
退出APP是需要清空所有Activity, 清空的前提是 需要记录已开启的所有 Activity。在Application.ActivityLifecycleCallbacks的生命周期中调用add和remove操作。public class ActivityStackHelper { private static LinkedHashMap<Class<?>, Activity> activities = new LinkedHashMap<>();原创 2020-09-02 20:27:40 · 408 阅读 · 0 评论 -
常用命令清单
获取签名文件MD5 :keytool -list -v -keystore lagoueducation.jks跳转至路由页adb shell am start -a android.intent.action.VIEW -d "lagou://lagou.com/edit?type=2\&id=1"原创 2020-08-28 18:17:38 · 222 阅读 · 0 评论 -
TextView不依赖ScrollView也能滚动
String TEXT = "文艺复兴这场文化运动对近代早期欧洲的学术生活造成了深刻的影响。"; StringBuilder sb=new StringBuilder(); for (int i = 0; i < 15; i++) { sb.append(i).append("\n").append(TEXT).append("\n"); } textView.setText(sb.toStrin...原创 2020-08-21 22:00:42 · 267 阅读 · 0 评论 -
View在GONE时获取宽高
需求:页面有一张card 首次进入该页时 默认展开,之后再次有折叠卡片 第一次进入时 需要折叠,并且折叠时 点击展开按钮可展开。如果进来时就隐藏GONE 展开动画时 如何获知高度呢?方法一: private void initHeight() { tvContent1.setVisibility(View.INVISIBLE); tvContent1.getViewTreeObserver().addOnGlobalLayoutListener(new ViewT原创 2020-08-21 21:19:57 · 530 阅读 · 0 评论 -
Android 动画ObjectAnimator中height和translationY
动画实现两种方式:ObjectAnimator animator1 = ObjectAnimator.ofFloat(tvContent1, View.TRANSLATION_Y, hFrom, hTo);ObjectAnimator animator1 = ObjectAnimator.ofInt(wrapper, “height”, hFrom, hTo);但是效果完全不同:如下图:public class SecondActivity extends AppCompatActivity原创 2020-08-21 20:39:12 · 3150 阅读 · 1 评论 -
多行TextView后插入图片
public class LabelUtils { /** * @param text 标签内容 * @param textColor 标签颜色 * @return */ public static Drawable fromText(String text, String textColor) { int DP1 = DensityUtil.dip2px(1); Paint paint = new Pain.原创 2020-08-06 10:07:17 · 827 阅读 · 0 评论 -
FragmentPagerAdapter动态增删Fragment不更新
public class ResumePreviewAdapter extends FragmentPagerAdapter { private ArrayList<Fragment> fragments; private String[] tabTitles; public ResumePreviewAdapter(FragmentManager fm, ArrayList<Fragment> fragments, String[] tabTitles)原创 2020-06-15 14:48:48 · 615 阅读 · 0 评论 -
EditText的焦点监听回调
EditText的焦点问题。需求背景:1.EditText的输入线条 未输入状态时,灰色。2.输入状态时,绿色;3.点击“确定”且 输入格式错误时(包含空),红线提示。一旦重获焦点,变成输入状态的绿色。实现效果如下: /** * 焦点在的时候,输入线条变绿 * * @param isColorFocus */ public AutoEditText setLineColorFocus(boolean isColorFocus) {原创 2020-05-22 17:51:46 · 1382 阅读 · 0 评论 -
Android悬浮窗视频
类似微信视频通话需求。思路:1.申请悬浮窗权限2.windowManager实现悬浮窗;3.moveToback退出全屏,显示悬浮窗;当用户正在NewsActivity看新闻,视频电话来了,接听(VideoActivity),然后缩至悬浮窗,此时应回到NewsActivity,悬浮窗出现时该如何回到电话前的页面?finish掉VideoActivity吗?finish后自然回退到栈内上一...原创 2020-03-03 22:35:02 · 2721 阅读 · 2 评论 -
Android屏幕常亮
最简单 布局文件任一可见View设置属性android:keepScreenOn=“true”;关闭时只需把true改为false即可。在Activity的onCreate()中添加getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);取消常亮时,把addFlags改为clearFlags参数不变。...原创 2020-03-03 21:45:07 · 1501 阅读 · 0 评论 -
Android Studio Run 报错Unknown run configuration type AndroidRunConfigurationType
强制关机后,开启AS,run时报错如题。解决方案:windows:AS左上角 File >> Setting >> Plugins >> 把Android Support勾选上,点击Apply,再点OK,会提示重启,重启完就好了。Mac: AS左上角的Android Studio>>Preferences>>Plugins勾选And...原创 2020-03-03 14:44:16 · 798 阅读 · 0 评论 -
Configuration on demand is not supported by the current version of the Android Gradle plugin since y
Configuration on demand is not supported by the current version of the Android Gradle plugin since you are using Gradle version 4.6 or above. Suggestion: disable configuration on demand by setting org...原创 2020-02-17 12:50:27 · 1127 阅读 · 0 评论 -
java.lang.AbstractMethodError: org.jetbrains.plugins.gradle.tooling.util.ModuleComponentIdentifierIm
导入一个第三方工程后报错,java.lang.AbstractMethodError: org.jetbrains.plugins.gradle.tooling.util.ModuleComponentIdentifierImpl.getModuleIdentifier()Lorg/gradle/api/artifacts/ModuleIdentifier; at org.gradle.api...原创 2020-02-17 12:36:43 · 1851 阅读 · 0 评论 -
Android xml gradient注意事项
gradient:渐变android:startColor和android:endColor分别为起始和结束颜色,android:angle是渐变角度,必须为45的整数倍。另外渐变默认的模式为android:type=“linear”,即线性渐变,可以指定渐变为径向渐变,android:type=“radial”,径向渐变需要指定半径android:gradientRadius=“50”。a...原创 2020-01-11 15:33:53 · 981 阅读 · 1 评论 -
红米手机H5布局压扁
移动端rem布局样式错乱问题这段时间在开发app内的h5页面,发现一个奇怪的问题,测试机中有红米手机 ,oppo手机,在app打开h5之后,整个页面被压扁变形了,一开始以为是手机分辨率的问题,但是在同样的手机的其它app内和浏览器内打开页面,都是完全正常显示。后来查了一下,发现原来是手机字体大小设置的问题,当把字体调大一号时,在app内就正常显示了。现在很多安卓手机的系统都是可以自己去设置系统...原创 2019-11-20 19:48:25 · 496 阅读 · 0 评论