
Android开发点滴
文章平均质量分 85
记录Android开发生涯点滴,分享亦是重温。
丶白泽
君子藏计于身,待时而动
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android中bindService和startService启动服务有何区别
和是 Android 中两种用于与Service交互的方式,它们的区别主要在于和。原创 2024-12-12 09:43:52 · 1024 阅读 · 0 评论 -
类文件具有错误的版本 61.0, 应为 55.0 请删除该文件或确保该文件位于正确的类路径子目录中。
这个错误表明你的项目尝试加载的 .class 文件(编译好的 Java 类)是用比你的运行环境支持更高版本的 Java 编译的。原创 2024-12-11 19:21:19 · 2917 阅读 · 0 评论 -
如何实现Android项目中线程池的统一管理
通过线程池收束优化,可以灵活、高效地管理 Android 项目中的线程资源,同时兼顾不同类型任务的需求。原创 2024-12-11 15:19:43 · 263 阅读 · 0 评论 -
彻底掌握Android中的Lifecycle
Lifecycle 是状态机 + 观察者模式的结合,通过 ReportFragment 触发事件,驱动 LifecycleRegistry 中所有观察者状态同步,并根据同步结果触发观察者对应的回调方法,这就是它的整体原理。Lifecycle 虽然只是提供了抽象层的组件生命周期监听,但这一改变可以让软件编码灵活性大大加强,LiveData 就是基于 Lifecycle 来实现的。通过使用 Lifecycle,可以编写出更加健壮、可维护的代码,提升应用的性能和用户体验。原创 2024-10-14 22:32:28 · 2165 阅读 · 0 评论 -
放弃 startActivityForResult,Activity Result API 优雅使用
Activity Result API 是 androidx 中的一个新 api,旨在替代原有的 `startActivityForResult` 方法,用于在两个 Activity 或 Fragment 交换数据、获取返回结果。原创 2024-09-26 18:51:15 · 1019 阅读 · 0 评论 -
彻底掌握Android中的ViewModel
ViewModel 属于`Android Jetpack`库的一部分,是一种业务逻辑或屏幕状态容器。它提供了在配置更改(如屏幕旋转)后依旧保留相应状态的特性,帮助开发者以更加清晰和可维护的方式处理UI相关的数据,从而避免了在 Activity 或 Fragment 中直接处理数据持久化的问题。原创 2024-09-23 16:38:04 · 7027 阅读 · 0 评论 -
分享一种 ConstraintLayout 让TextView 自适应的同时,还不超出限制范围的方式
不知道大家有没有遇到这种布局需求:上图布局很简单,ImageView + 中间的TextView + View + ImageView,需求是中间的 TextView 宽度需要根据内容来展示,但长度超出屏幕时,需要将 TextView 进行…的折叠展示,同时它后面的 View 和 ImageView 不能被推出屏幕。当TextView 超长时:这种需求看起来简单,但暗藏玄机。这种需求下,常规方案是达不到效果的。原创 2022-12-14 17:52:05 · 4086 阅读 · 3 评论 -
记一次WebView加载带定位网址导致的闪烁bug
描述项目中封装好的 WebView 页面,在传入一个饿了么链接后(其他链接正常展示,如:https://www.baidu.com),无法正常展示并且开始疯狂闪烁,在 shouldOverrideUrlLoading 打印了下重定向的 url ,发现有两个 url 地址在循环跳转,也就是:问题链接 -> 链接1 -> 链接2 -> 链接1 -> …,使用微信和QQ都正常展示,问题排查范围可以锁定在WebView的使用上了。问题链接:https://s.click.ele.me/原创 2022-02-15 20:10:03 · 1875 阅读 · 0 评论 -
Android项目网络请求支持Brotli压缩记录
Brotli Google 官方库Brotli 是 Google 推出的一种无损压缩算法,通过变种的LZ77算法、Huffman编码以及二阶文本建模等方式进行数据压缩,与其他压缩算法相比(如zip,gzip等),无论是压缩时间,还是压缩体积上看,它都有着更高的效率。Brotli 如此高的压缩比率,得益于其使用一个预定义的字典,该字典包含超过 13000 个来自文本和 HTML 文档的大型语料库的常用字符串,预定义的算法可以提升较小文件的压缩密度,而压缩与解压缩速度则大致不变。...原创 2022-08-03 11:01:24 · 2550 阅读 · 3 评论 -
使用android.os.Build来查看设备的信息
使用 android.os.Build 来查看设备信息 //看一下设备信息 private fun printDeviceInfo() { val deviceInfo = arrayOf( "产品:${android.os.Build.PRODUCT}", "制造商:${android.os.Build.MANUFACTURER}", "型号:${android.os.Build.MODEL}",原创 2021-04-10 13:54:35 · 2617 阅读 · 0 评论 -
Android 7.0拍照FileProvider与xml文件对应关系(Failed to find configured root that contains)
从Android 7.0禁止了在应用外部公开file://URL,如果一项包含文件的URI的intent离开应用,则会抛出FileUriExposeException异常。要在应用间共享数据,在7.0及以上系统上要使用FileProviert类授予content:// URI临时访问权限。这一改动,主要影响了应用的拍照后照片存储路径的功能。要使用FileProviert,要在AndroidManifest.xml清单文件中注册内容提供者,并指向xml下的一个路径,这个路径与拍照时照片存储位置要保持一致,原创 2020-05-30 12:44:54 · 471 阅读 · 0 评论 -
gradle配置默认apk名字
app下gradle文件中,android节点内加入以下gradle代码: //默认apk名字 alpha beta release applicationVariants.all { variant -> variant.outputs.all { outputFileName = "文和友直播${variant.versionName}.apk" } }...原创 2020-05-30 11:18:28 · 984 阅读 · 0 评论 -
关于Design库迁移到AndroidX记录
关于Design库迁移到AndroidX记录结论design控件库以前地址:implementation ‘com.android.support:design:28.0.0’迁移到androidx地址:implementation ‘com.google.android.material:material:1.0.0’过程今天新建了一个项目,在引入design库的时候遇到了以下提示:大致意思是说28.0.0是design控件库在support的最后一个版本,需要推荐迁移到Andr原创 2020-05-22 10:57:08 · 4740 阅读 · 1 评论 -
自定义View之Paint和Canvas常用方法一览
文章结构自定义View之Paint和Canvas常用方法一览`Paint` 画笔????️Paint常用操作速查表线条形状设置线头形状 : setStrokeCap()设置拐角形状 : setStrokeJoin()设置尖角补充延长线最大值 : setStrokeMiter()setShader() :ShadersetColorFilter() :ColorFiltersetXfermode() :X...原创 2020-03-17 17:36:19 · 832 阅读 · 0 评论 -
javax.net.ssl.SSLHandshakeException: Chain validation failed 异常解决
javax.net.ssl.SSLHandshakeException: Chain validation failed 异常解决描述在项目中使用RxJava,OkHttp和Retrofit封装的网络请求,再测试时一切正常,但修改为https的线上正式服务器后就报了异常:javax.net.ssl.SSLHandshakeException: Chain validation failed...原创 2020-01-07 17:02:10 · 24569 阅读 · 1 评论 -
NestedScrollView中嵌套RecyclerView发生切换后自动滑动到底部问题
文章目录描述解决描述再一次app的开发中,主Activity是由 Activity + 四个Fragment来组成的,首页Fragment用的是NestedScrollView嵌套其他View + RecyclerView,当由首页Fragment切换到其他Fragment,然后再切换回来之后,在华为手机上会出现首页Fragment自动滑动到底部的问题。解决1.在NestedScrol...原创 2019-12-03 11:46:29 · 2858 阅读 · 1 评论 -
Android Studio项目中文件错乱问题
文章目录问题描述解决方法问题描述今天打开Android Studio,发现项目中一些文件都变得错乱了,就像这样:左侧图片是在文件夹中使用NotePad++打开的,右侧是Android Studio中相同的文件,可见文件发生了错乱。既然工程文件没问题,那么就一定是Android Studio的缓存问题了。解决方法清理Android Studio缓存:File -> Inva...原创 2019-11-22 10:44:23 · 3662 阅读 · 0 评论 -
ConstraintLayout控件使用全攻略
ConstraintLayout控件使用浅析标签(空格分隔): Android文章目录ConstraintLayout控件使用浅析介绍位置约束**1.相对位置****2.强制约束****3.基线对齐****4.圆心定位****5.百分比约束****6.Chains(链)****7.指定控件宽高百分比大小****8.goneMargin(隐藏边距)****9.指定宽高比**辅助类Group群组...原创 2019-11-12 16:27:27 · 2326 阅读 · 1 评论 -
Dialog居中显示
最新使用Dialog时,发现在以下低版本系统中会出现Dialog弹窗在左上角显示的情况,搜索了一下,发现了这个方法,记录一下。 //dialog 居中显示 Window window = dialog.getWindow(); if (dialog != null && window != null) { WindowManager.LayoutParams attr = ...转载 2019-08-29 10:17:06 · 2669 阅读 · 0 评论 -
知识点补充_RxJava
知识点补充_RxJava推荐网址 http://gank.io/post/560e15be2dca930e00da1083http://blog.youkuaiyun.com/qq_35064774/article/details/53057332https://juejin.im/post/5848d96761ff4b0058c9d3dcRxJava 到底是什么响应式编程(Reactive programm转载 2017-08-16 16:23:23 · 449 阅读 · 0 评论 -
最简单的底部导航栏,仿微信的滑动切换效果
最终实现效果:大体思路:1. 主要使用两个自定义View配合实现; 底部图标加文字为一个自定义view,底部导航栏为一个载体,根据需要来添加底部图标;2. 底部导航栏的设置方法类似于TabLayout的关联,View需要创建关联方法,用来关联VIewPager;3. 通过关联方法获取ViewPager实例后,根据ViewPager页面数创建底部导航栏的图标按原创 2017-08-03 10:59:50 · 1157 阅读 · 0 评论 -
ViewPager + Fragment实现懒加载
ViewPager + Fragment实现懒加载标签(空格分隔): Android课程http://blog.youkuaiyun.com/tellh/article/details/50705178 http://www.jianshu.com/p/c5d29a0c3f4c推荐框架 https://github.com/lianghanzhen/LazyViewPager介绍懒加载,指的是必要的时候原创 2017-08-17 14:08:45 · 312 阅读 · 0 评论 -
Android小控件AppWidgetProvider
介绍AppWidgetProvider是Android中提供的用于实现桌面小工具的类,其本质是一个广播,即BroadcastReceiver,在实际的使用中,把AppWidgetProvider当成一个BroadcastReceiver即可1. 为AppWidget提供一个文件定义小控件的基本配置信息在资源文件夹res目录下新建xml文件夹,添加app_widget_provider_info.xm原创 2017-08-31 11:56:42 · 754 阅读 · 0 评论 -
jsoup爬取网页数据
首先下载Git-2.13.1.2-64-bit.exe,并安装在Android Studio中配置gitsetting > Versino Control > Git > 点击 选中git安装目录下的git.exe文件(图中目录为默认安装目录) 点击Test按钮,出现以下提示则为成功 下载代码,从服务器获取代码选择git方式下载配置项目路径地址为:https://git.oschina.n原创 2017-08-31 12:02:13 · 487 阅读 · 0 评论 -
为应用生成签名文件的两种方式
使用Android Studio生成签名文件Android系统要求只有签名后的APK文件才可以安装,因此需要对将要上线的APK文件进行签名;使用Android Studio生成正式签名的APK文件.点击Android Studio导航栏上的Build -> Generate Signed APK,首次点击可能会提示让我们输入操作系统的密码,输入密码后点击OK会弹出创建签名APK的对话框 点击Cre原创 2017-09-02 22:21:18 · 1500 阅读 · 0 评论 -
安卓Selector选择器使用与避坑总结
###Selector使用与避坑总结###selector文件item节点下android:state_XXXX属性坑人生苦短,及时避坑。之前遇到了明明selector选择器android:state_XXXX属性与java代码中状态改变一致,却就是不生效的坑。浪费了几个小时的时间,终于将这个原因排查出来了。顺序顺序顺序!!重要的事情说三遍,一定要注意item各个状态的顺序问题!例如...原创 2018-12-14 18:09:51 · 1259 阅读 · 0 评论 -
记一次Execution failed for task ':app:processDebugResources'坑
产生错误在一次功能迭代的代码编写后,运行时突然报出如下图所示的错误:本来沉稳的我突然虎躯一震,这种无从下手的bug是最让人崩溃的。虽然花了大半天时间解决了问题,但也要记录一下,毕竟时间就是金钱。。。排查过程google,百度一番后,各种各样的方法都有,有的说compileSdkVersion高于buildToolsVersion不准确的,也有的说png图片检查错误的,一一试过之后发现都无...原创 2019-02-11 11:55:21 · 28591 阅读 · 7 评论 -
今日头条适配方案代码
今日头条适配方案代码 /** * 今日头条适配方案 最终版 适配比例 以宽为纬度,360dp来适配 */ private static float sNoncompatDensity; private static float sNoncompatScaledDensity; private static void setCustomDensity(...原创 2019-04-09 13:49:49 · 1011 阅读 · 0 评论 -
流式布局标准实现:FlexboxLayout使用指南
FlexboxLayout是什么FlexboxLayout是Google开源的一个强大的控件,直接继承ViewGroup,效果类似于加强版的LinearLayout,但与LinearLayout并无关联。官方原话是:FlexboxLayout is a library project which brings the similar capabilities of CSS Flexible...原创 2019-05-15 15:27:22 · 21510 阅读 · 2 评论 -
FlexboxLayout全攻略(Google官方灵活实现流式布局控件)
一、FlexboxLayout是什么FlexboxLayout是Google开源的一个强大的控件,直接继承ViewGroup,效果类似于加强版的LinearLayout,但与LinearLayout并无关联。官方原话是:FlexboxLayout is a library project which brings the similar capabilities of CSS Flexib...原创 2020-04-14 17:02:18 · 7079 阅读 · 2 评论 -
在Android Studio下如何引用*.jar、*.aar和.so文件
引用.jar文件在新建项目时,Android Studio已经默认支持jar文件的引用了,因为有了如下这句话: implementation fileTree(dir: 'libs', include: ['*.jar'])所以要引用.jar文件,只需将jar包复制到libs下,然后sync一下gradle文件就好。或者,直接在jar文件上 鼠标右击 -> add As Liba...原创 2019-05-17 12:23:44 · 2243 阅读 · 2 评论 -
Android中关于状态栏的一些知识点
开篇:最近在独立的开发中遇到了Android状态栏的很多坑,在网上查了些资料也是众说纷纭,因此总结了一些网上的关于状态栏的知识点,用于在以后的开发中少踩些坑;1. 不显示状态栏不显示状态栏一般用于对屏幕空间要求较大时,比如欢迎界面,视频,横屏等;不显示状态栏的方式有两种:第一种方法:在活动中中添加: getWindow().setFlags(WindowMa原创 2017-08-16 12:46:25 · 265 阅读 · 0 评论