
android基础
文章平均质量分 75
microhex
with great power comes great responsibility.
wx:javainstalling.
展开
-
Android 新版 Logcat 操作小技巧
应用程序启动、停止或崩溃时的附加日志多个 logcat 选项卡和窗口允许用户同时分析来自不同设备的数据可以调整日志条目的格式选项,我们能看到筛选的信息搜索和过滤器合并到始终可见的查询输入字段中,还包括额外的过滤器运算符基本上就这样了,如果大家在学习和使用过程中有什么问题,可以联系我wx:javainstalling, 备注:Logcat即可。原创 2023-04-11 16:48:26 · 9357 阅读 · 7 评论 -
Android如何做出带有复杂水印的图片
最近项目中存在图片加水印效果的需求,具体效果如下:那么针对这种比较复杂的水印图片,应该如何去做呢?下面我分享一下自己的思路。原创 2023-04-06 16:53:38 · 2083 阅读 · 1 评论 -
解决Android Studio com.google.common.collect.ImmutableMap.hashCode 造成的StackOverflowError异常
解决Android Studio 编译出现StackOverFlow异常。原创 2022-05-28 11:54:29 · 1657 阅读 · 2 评论 -
Retrofit+OkHttp 参数使用AES加密Demo
最近在做App代码安全方面的优化,特此记录一下。我们现在App大多数都是基于Retrofit+OkHttp的网络请求框架,现在的需求是需要将请求的参数进行加密传输,下面图片中我们进行一个对比,一个是明文传输,一个是密文传输:明文传输密文传输由于考虑到加密和解密的效率,我们现在选用的是AES对称加密。至于对称和非对称加密,可以参考以往的[文章]。(https://blog.youkuaiyun.com/u013762572/article/details/88733982)1. 客户端修原创 2022-05-22 12:47:03 · 2426 阅读 · 2 评论 -
Kotlin + Dagger2 出现 Dagger does not support injection into private fields 解决方案
Dagger2在Kotlin环境下出现Dagger does not support injection into private fields.原创 2022-05-08 22:42:52 · 1931 阅读 · 0 评论 -
彻底解决Android Studio Minimum supported Gradle version is X.Y.Z. Current version is x.y.z.问题
由于Android Studio 是基于Gradle 编译的,面对众多的Gradle版本,类似于Android碎片化的概念,在编译项目上或多或少会存在兼容性问题。如题,Minimum supported Gradle version is 6.1.1. Current version is 5.6.4...,Minimum supported Gradle version is 6.7.1. Current version is 5.6. If using the gradle原创 2022-05-02 16:58:22 · 26915 阅读 · 3 评论 -
解决新版Android Studio新签名出现Key was created with errors快速解决方案
解决Android Studio 新签名出现的 Key was created with errors文件原创 2022-04-22 08:47:26 · 2415 阅读 · 0 评论 -
Glide VS Coil
原文地址:https://medium.com/healthify-tech/coil-vs-glide-3f488f4de72a在这篇文章中,我们将会对Glide 和Coil做一个对比,来理解一下到目前为止,哪一个图片加载框架是更好的。Glide是一个Android平台的快速高效开源的图片加载框架,现在有很多人在使用它。然而Coil作为一个新的图片加载库在近些日子也越来越受欢迎。两个库的基本功能是相同的;它们都是使用BitmapFactory来解析数据,然后使用相同的Android SDK来从文件中翻译 2022-01-26 18:05:05 · 1218 阅读 · 0 评论 -
Gson源码解析
文章目录基础了解几个重要的概念1. 属性赋值/序列化2. Java类型适配器3. JsonReader源码分析1. Gson初始化2. 源码分析3. 整体回顾ObjectToJson后记基础了解最近在解决一个Json解析时,把Gson原理过了一遍。Gson是Google开发的Json解析库,当然这种轮子市面上比较多,也不一一列举了。今天主要来聊聊Gson源码,是如何解析一个Json对象,然后按照葫芦画瓢,将一个Java对象如何序列化成 Json对象。几个重要的概念在分析Gson源码之前,首先需要在脑原创 2021-08-27 17:29:41 · 790 阅读 · 0 评论 -
聊聊RecyclerView的像素级刷新
需求来源当前我们所做的内容是施工管理的工具APP,有非常重的聊天系统,而且聊天系统中由于项目数比较大,大到什么概念呢?一个中层管理手中大概存在500个项目,每个项目分为施工群和业主群,然后加上公司OA群,设计群,管理群,大概在1000个群左右,当然你可能会说,1000个群也不算太大吧,我微信现在的群都有上千个,的确是这么个理,但是我们这1000个群每天都在发消息,业主要求推动施工的进程,假设每个群每天发10个消息,我们大概每天就有1w条消息,这是个很惊人的问题。所以问题就来,在上千个列表中,对Recycl原创 2020-11-29 13:58:35 · 336 阅读 · 0 评论 -
解决 Google Play 支付问题:In-app billing API version 3 is not supported on this device
项目场景:因为想出海看看外面的世界,第一次上线Google Play产品,需要添加Google Play赚美刀,使用的是Google Play Billing框架V3版本,所使用的的机器是 Google Pixel 3XL, 系统是当前最新的 Android R(当前时间2020/09/08), 依照Google中文开发文档 https://mp.weixin.qq.com/s/QQg4ttdnn6XLrOBZIDsEQA ,发现在开发的过程中,存在In-app billing API version 3原创 2020-09-08 23:12:43 · 14209 阅读 · 9 评论 -
Jetpack系列之 Paging 详解
在此之前,我一直对Jetpack的Paging感觉到很迷茫,单单一个分页为啥 Android 官方会出一个组件? 在我们眼中,分页不就是添加两个参数pageSize和pageIndex 么?这么简单逻辑Android官方能耍得起什么样的波浪么?带着这个问题,阅读了一些文档,加上自己的理解,然后有了这篇文章。基本原理Paging目前来说,是需要和RecyclerView配合使用的,毕竟Android 目前展示列表数据,差不多就是RecyclerView了。首先简单介绍一下Pagin原创 2020-08-02 15:42:17 · 2879 阅读 · 0 评论 -
2020年最值得期待的30个android库(截止2020年3月8日)
原文地址1.Coilgithub地址:https://github.com/coil-kt/coilkotlin编写使用协程编写的Android图片加载库。相比于Glide,Picasso,Fresco 它更快速、轻量、易上手、现代的Android加载库支持GiF和SVG,同时支持四种默认的图像变换: 模糊效果、圆形、灰阶、圆角等等基础代码为:imageView.load(“htt...原创 2020-03-08 18:31:09 · 6156 阅读 · 1 评论 -
关于ViewPager.PageTransformer的一些理解
今天早上在看hongyang的推送,说已经有了ViewPager2,是google的sample,地址为:https://github.com/googlesamples/android-viewpager2里面的动画我看了一下,还是比较可以的,可以看下面动图:大概看了一下源码,动画是由ViewPager2.PageTransformer,其实跟ViewPager.PageTransform...原创 2019-04-02 10:15:22 · 6572 阅读 · 4 评论 -
Retrofit存在多个BaseUrl,提供一种比较简单的方案
来源这原本来自一个比较蛋疼的请求,项目中本来是一个BaseURL的天下,这几天突然要调用第三方的身份证调用接口,与现在的URL地址不一致,本想Copy一个Retrofit配置完事,但是马丹周五又来了一个第三方的查询接口,真是日了狗.(项目本是政府项目,存在很多规划问题),不能又拷一个配置吧,算了,就思考怎么写一个吧。又加上在复习Retrofit的源码,发现存在一个比较简单的解决方案,就是在使用...原创 2019-03-30 12:02:22 · 5009 阅读 · 0 评论 -
百度地图TextureMapView+Fragment引起的诡异问题
问题来源当前项目中,有个地方用到地图的地方,由于我是新来背锅的,项目整体的架构是ViewPager+FragmentAdapter,FragmentAdapter中每一个Fragment都含有一个MapView,后来查资料说TextureMapView更合适,所以就换成了它。换了之后,就出现了下面的比较诡异的问题。上两张图:    每个TextureMapView上...原创 2019-03-14 13:57:40 · 2123 阅读 · 0 评论 -
Android Monkey测试参数详解
最近项目中使用Monkey做测试,具体Monkey参数不是很了解,具体学习了一下。参数名参数含义[-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] …]指定一个或者多个包,monkey将只允许系统启动指定的app[-c MAIN_CATEGORY [-c MAIN_CATEGORY] …]指定一个或多个级别,Monkey将只允许系统启动...原创 2019-03-11 13:36:10 · 1763 阅读 · 0 评论 -
有kotlin中的Android项目编译出现 Unresolved reference: R 或者context、it 、entity
再编译别人kotlin项目时,gradle编译出错了,找到具体的任务,使用编译命令 gradlew编译看详细输出gradlew :main:compileDebugKotlin发现出现的问题是:直接报 Unresolved reference: R。在确保所有的资源文件都导入成功之后,开始google+度娘去查找问题,大致分为四个问题。1. gradle插件版本存在问题首先检查一...原创 2019-03-08 15:02:31 · 17433 阅读 · 4 评论 -
关于SparseArray、SparseBooleanArray、SparseIntArray、SparseLongArray等SparseXX一些总结
说明我们在开发的过程中,在使用Map时,如果key是Integer类型的,AS则会建议你可以装换为SparseArray系列(AS的建议我们一般都需要看看,因为它可以避免很多无脑的操作):虽然这不是强制的,但是我还是建议你更换一下,因为在小数据量的情况下,SparseArray会比HashMap性能要好。在SparseArray的官方注释上说明,它不同于一般对象数组,它的设计只是为了在key...原创 2019-01-12 15:25:37 · 2178 阅读 · 1 评论 -
View事件体系简介
1.View的基础概念  View是Android中控件的基类,是一种界面层控件的一种抽象,它代表的是一个控件。除了View,还有ViewGroup,从名字来看,它可以被翻译成控件组,言外之意就是ViewGroup中可以包含多个控件。而在Android设计中,ViewGroup也是继承了View,这意味着View本身就可以是单个控件也可以是多个控件组成的一组控件,这种关心与W...原创 2018-11-07 22:14:04 · 473 阅读 · 0 评论 -
startActivity&startActivities有什么不同?
问题平时用startActivity用习惯了,当别人问你startActivities是什么意思时,你会不假思索的说,可能是同时启动多个activity吧,这简直就是一道送命题啊,验证之后才发现不是想象中那么简单。准备三个ActivityA,ActivityB,ActivityC: 准备代码: fun multiIntent(view : View) { val...原创 2018-10-22 22:10:51 · 5277 阅读 · 2 评论 -
深入分享一下android.widget.Toast
问题来源  Toast是我们Android大开发中比不可少的显示部分,相信大家很熟悉Toast的使用方式。之所以写这篇文章,主要是我在项目中遇到了这样一个问题,PM说的Toast在某个特定的页面显示的时长能不能合适一点,什么意思?我们大Toast只有Toast.LENGTH_SHORT和Toast.LENGTH_LONG两种,前者是2s,后者是显示3.5s。嗯,有些页面的确...原创 2018-06-12 21:39:46 · 4362 阅读 · 0 评论 -
AndroidStudio升级到3.1+之后,出现Java.util.NoSuchElementException
最近手贱点了AS升级提醒,一不小心就升级到了3.1.2,截图为证: 本来好好的项目我点build出现了这种情况: 通过google,发现这是一个AS的bug,具体解决方案有三种: 1.如果你的AS version == 3.1或者version < 3.2 : A. 更新项目根目录下gradle.properties的文件,添加android.enableAapt2=fals...原创 2018-06-04 19:30:09 · 12744 阅读 · 5 评论 -
关于SharedPreferences一些总结
问题来源在QQ相互学习(编程5分钟,扯淡两小时)的过程中,有位哥们提出了一个问题,sharePreferes最多存多少信息,这个度量各位可以理解为多少KB。他这么一问,还真不知道了,话说这个就有点尴尬了,感觉翻阅了一些源码,在查看源码的过程中,理解了一些东西,以前有些很模糊的概念,现在也有了感觉,特此记录一下其中学到的知识。以下SharedPrefences简称sp。开始扯淡sp...原创 2018-05-30 22:28:08 · 2614 阅读 · 0 评论 -
使用shareSDK实现微信多图分享到朋友圈&Url分享到朋友圈&URL分享到好友 问题记录
问题概述其实第三方分享很早就有了,这个按理说这个应该没什么难度,为啥记录一下呢,因为项目中同时出现了 朋友圈多图分享(多张URL集合),朋友圈URL分享,群和个人URL,图片分享。基本上涵盖了大部分需求,这其中出现了一些问题,在此记录一下。基本操作流程:操作流程项目过程:http://wiki.mob.com/android-sharesdk%E5%AE%8C%E6%95%B4%E...原创 2018-04-29 10:00:16 · 12631 阅读 · 2 评论 -
记录使用网易云信Android客户端的一些坑[持续记录中]
历史重现:去年11月份,由于某环信通知需要收费了,而且收费还不低,在考察网络上各种IM聊天之后,我们决定花2w1大洋购买了丁三石公司的**网易云信**IM聊天工具,网址如下:http://netease.im/。大家也可以上去看一下,个人推荐还是可以的,蛮好用的。如果大家想更换IM工具,网易的还是可以考虑入手的:) 虽然价格还是蛮贵的。主要问题由于开发周期比较急(当然你也可以说我是...原创 2018-04-22 10:21:26 · 6706 阅读 · 6 评论 -
解决BottomSheetDialogFragment show()方法 只展示一部分问题
问题详细出现以及原因可以参考这篇文章。 主要给出解决方法,主要是针对BottomSheetDialogFragment的显示问题,而非BottomSheetDialog,其实解决方案是类似的。重写BottomSheetDialog,重新计算peek高度,具体代码如下:public class FixHeightBottomSheetDialog extends BottomSheet...原创 2018-03-22 00:11:26 · 7602 阅读 · 3 评论 -
android基础知识问答总结(一)__关于Activity
最近在看任玉刚的“Android开发艺术探索”,结合自己的理解程度,来试着回答一些比较经典的问题吧。话不多说,试着去记录自己的想法吧:典型的Activity生命周期 只是典型的分析,不涉及到异常的启动分析哦。 A. onCreate() 表示Activity正在被创建,它为Activity生命周期的第一个方法。在这个方法中我们可以做一个初始化工作,比如setContentView()和初始化一原创 2017-09-03 20:41:28 · 373 阅读 · 0 评论 -
Java多线程之sleep,wait,join和yield关键字,以及线程的关闭
在java或者android中,使用Thread和Runnable就可以玩多线程了,这个成本比较低,也没什么好说的,今天主要是针对多线程中主要的关键字wait,sleep,join和yield做个笔记,加强一下印象。wait wait方法一般都是和notity()或者notifyAll()成对出现的。当某个线程执行到wait()方法时,它就进入到一个和该对象相关的等待池中,同时失去了对象的锁功能,原创 2017-07-07 23:45:54 · 2664 阅读 · 1 评论 -
理解RecyclerView的RecyclerView.ItemDecoration(二)
上次我写了 理解RecyclerView的RecyclerView.ItemDecoration(一),介绍了ItemDecoration的第一个设置它padding的getItemOffsets方法,今天我们就来了解一下它的第二个方法onDraw()。这个方法主要是给每一个RecyclerView的item做一个装饰,这个装饰我们可以理解为很多种,其中一种最简单的就是画divider,即分割线。原创 2017-06-24 13:46:53 · 752 阅读 · 0 评论 -
理解RecyclerView的RecyclerView.ItemDecoration(一)
最近在看到别人使用RecyclerView实现了类似事件线的东东,老大也叫我搞了一个,先guyhub上搜了一个,看下图: 。上图是个妹子写的,文章的最后我会你他的地址,毕竟全球最大同性交友网站上有些妹子还比较不错的。我没有down她的代码,而是看了一个说明,是用RecyclerView写的,但是使用了ItemDecoration作为修饰,才变成了这样好看的样子。这个ItemDecoration类用原创 2017-06-21 23:08:48 · 682 阅读 · 0 评论 -
SpannableString&SpannableStringBuilder一些简单介绍
开始最近还是挺忙的,改公司各种bug,添加新的功能,这不,有个新的功能如下: 上面的两个人昵称wuguang,rozbo是可以点击进入各自的用户信息界面的,刚开始第一感觉是使用Html.from(string)去做,后来发现颜色上是对了,就是点击事件不太好写,在前辈的教育下新解锁了SpannableString技能。以前也用过SpannableString,但是没有深入的学习,现在发现有时间,就原创 2017-06-09 23:42:19 · 739 阅读 · 0 评论 -
RxJava操作符(一) __创建操作
ReactiveX在github ReactiveX官网上,就一句话介绍ReactiveX:Reactive Extensions for Async Programming,翻译过来就是可异步的响应式编程。ReactiveX是Reactive Extensions的缩写,我们一般写为Rx系列[RxJava/RxPHP/RxPython/RxSwift….],最初是LINQ的扩展,有微软的架构师Er原创 2017-04-16 22:03:30 · 1357 阅读 · 0 评论 -
FragmentPagerAdapter&FragmentStatePageAdapter整理(二)
整理这个是因为平时用得很多,很多时候只是知其然,不知其所以然,现在有些时间,就慢慢撸一撸。PagerAdapter与ViewPager结合,现在应该是个app都会有ViewPager+PagerAdapter的组合了。PagerAdapter负责数据,而ViewPager负责展示。PagerAdapter是一个抽象类,FragmentPagerAdapter和FragmentStatePagerAd原创 2017-02-01 15:53:07 · 18820 阅读 · 2 评论 -
EditText关于输入小数点的小问题
最近项目马上要上线了,有时间会尽量去整理所做的东西,不然下次做的时候,又要百度了。 今天主要说的是EditText的输入问题,看上出很简单吗,只需要在xml文件中声明inputType=”number/text/numberDecimal”,但是啊,即使你输入了numberDecimal,大约似乎editText中还是不能输入小数点,为什么呢?对不起啊,毕竟我也是小白,我也不清楚,但是找到一个方法原创 2016-05-22 22:22:32 · 3097 阅读 · 0 评论 -
Rebound动画框架简单介绍
Rebound动画框架简单介绍android菜鸟一枚,有不对的地方希望大家指出,谢谢。 最近在接手了一个老项目,发现里面动画框架用的是facebook中的Rebound框架,由于以前没听说过,放假时闲得蛋痛,看看了源码,就顺手写这一篇吧。 写了一个小Demo,具体效果如下: 代码很简单,这是xml布局:<RelativeLayout xmlns:android="h原创 2016-05-22 14:27:30 · 4649 阅读 · 0 评论 -
android annotation快速简单入门
androidannotation框架原创 2015-11-27 22:48:26 · 3097 阅读 · 0 评论