自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

萌动小彩笔的博客

IT世界里的萌动小彩笔

  • 博客(50)
  • 资源 (7)
  • 收藏
  • 关注

原创 Android 文本识别:MLKIT + PreviewView

通过结合 MLKit 和 PreviewView,我们可以轻松实现 Android 应用程序中的文本识别功能。在本篇文章中,我们详细讲解了如何使用 MLKit 和 PreviewView 实现文本识别。

2023-05-25 23:00:45 929

原创 Android Codelabs

Android Codelabs 提供引导式、教程式、实践编码体验。将引导您完成构建小型应用程序或向现有应用程序添加新功能的过程。

2023-05-21 22:46:04 493

原创 Android Jetpack - Navigation 组件:进行应用程序导航

Navigation 组件是一种 Android Jetpack 库,它可以帮助开发者轻松地实现应用程序中的导航功能。通过使用 Navigation 组件,我们可以更加方便地实现应用程序的导航功能,同时也可以提高应用程序的用户体验。在本篇文章中,我们将介绍如何使用 Navigation 组件来实现应用程序导航,并提供一些示例和更多的扩展功能。

2023-04-22 23:20:58 602

原创 Flutter GetX 实现 ChatGPT 简单聊天界面

Flutter 是一款跨平台的移动应用开发框架,而 GetX 是 Flutter 中一种简单易用的状态管理和路由管理工具。本篇我们将使用 Flutter 和 GetX 实现一个简单的聊天界面,以与 ChatGPT 进行交互。

2023-03-24 18:13:55 6546 1

原创 Retrofit核心源码分析(三)- Call逻辑分析和扩展机制

在前面的两篇文章中,我们已经对 Retrofit 的注解解析、动态代理、网络请求和响应处理机制有了一定的了解。在这篇文章中,我们将深入分析 Retrofit 的 Call 逻辑,并介绍 Retrofit 的扩展机制。

2023-03-10 18:06:59 655

原创 Retrofit核心源码分析(二)- 网络请求和响应处理

在上一篇文章中,我们详细分析了 Retrofit 中的注解解析和动态代理实现,本篇文章将继续深入研究 Retrofit 的核心源码,重点分析 Retrofit 如何进行网络请求和响应处理

2023-03-09 11:21:31 543

原创 Retrofit核心源码分析(一)- 注解解析和动态代理

Retrofit是目前Android平台上比较流行的网络请求框架之一,它提供了一种简洁、灵活的方式来处理HTTP请求和响应。Retrofit的设计目的是使网络请求的代码更加容易编写和阅读,同时还提供了许多有用的特性,如注解解析、动态代理等。在本文中,我们将对Retrofit的注解解析和动态代理进行详细的分析。

2023-03-08 13:49:17 481

原创 Android 组件 —— 流式布局

这是一个Android流式布局,根据鸿翔大神之前写的FlowLayout设计思路结合Material库中的ChipGroup设计架构衍生而来,全新的流式布局组件。

2022-07-27 20:46:58 2567

原创 Android AGP升级后导致APK体积增大

Android AGP升级后导致APK体积增大

2022-06-09 23:13:49 3189 1

原创 Android LiveData + NetworkCallback实现网络监听

添加依赖implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.2.0"创建个用来判断网络类型的类(根据业务需求自行增添)object NetworkState { // 无网络 const val NONE = 0 // 网络连接 const val CONNECT = 1 // ...

2020-04-29 09:44:51 1413

原创 Android 解决jar包、依赖冲突问题

在工作过程中我们经常会遇到项目中jar包或者依赖重复而导致的错误信息,这个时候虽然我们知道原因是因为jar包或者依赖重复而导致,但是并不知道具体是哪一个重复了,这个时候我们就需要快速定位重复的jar包或者依赖。这里我们可以使用Android Studio的Terminal命令快速去定位相关问题:gradlew assembleDebug --stacktrace命令,编译过程中会提示相关错误信...

2018-12-16 14:22:00 1962

原创 Android 运行带有Cordova工程报“No installed build tools found......"问题

运行带有Cordova工程的项目时,可能会遇到上面显示的错误。导致这个错误的原因如下代码显示的SDK路径问题所导致。 最简单的解决方法就是将System.getenv("ANDROID_HOME")改为null运行即可: ...

2018-06-26 15:02:42 986

原创 Android 下载NDK报mips64el-linux-android-strip找不到错误分析

在我们使用Android Studio去下载NDK的时候可能会遇到如图所示的错误信息,这个信息是因为我们的NDK版本问题所导致的,所以我们可以根据报错的路径去替换掉其NDK版本。我们先删除掉Android/sdk/ndk-bundle路径下的文件,然后通过官网去下载相应的版本并解压,将其解压后的所有文件拷贝到Android/sdk/ndk-bundle即可。...

2018-06-08 17:43:31 3560

原创 Java 使用Navicat连接MySQL出现2059错误

今天使用navicat链接mysql的时候报了2059的错误,找了很久才找到解决方法,这里记录一下。出现2059这个错误的原因是在mysql8之前的版本中加密规则为mysql_native_password,而在mysql8以后的加密规则为caching_sha2_password。通过网络查找发现我们可以将mysql用户登录的加密规则修改为mysql_native_password。下面说下具体...

2018-05-01 10:25:08 4566 1

原创 Android 简单封装 RxJava + Retrofit

如今RxJava和Retrofit的结合使用估计已经相当普遍了,自己工作中也是一直都在使用。在使用的过程中我们都会对其进行封装使用,GitHub上也有很多封装好的项目可以直接拿来使用,其实对于开源框架的二次封装有时候针对不同的业务逻辑封装的过程中也多多少少有些不同,建议还是自己动手去封装使用。这样不仅提升自己对原框架的理解,还可以提高自己的封装能力。在工作过程中如需要改动便更加容易入手。好了,废话...

2018-03-07 10:29:31 389

原创 Android 解决Aapt2Exception错误

如图所示,当我们把Android Studio升级到3.0版本并且gradle也同时升级到了3.0的时候打开项目可能会出现以上错误信息,这个是因为在gradle 3.0.0中AAPT2是默认打开的,所以我们只需要在项目的gradle.properties中添加android.enableAapt2=false,sync后就编译通过了。...

2018-03-03 08:37:46 4199

原创 Android 简单封装一个MVP基类

对于MVP架构我想大家都不陌生吧,对于现在的主流框架非MVP + RxJava + Retrofit莫属了,GitHub上也有很多优秀的开源项目对其进行了很好的封装。有时候看一些优秀的开源项目是一种享受,但自己如果能从这里学到并实现一些自己想实现的需求我想那更是一种享受。这里很简单的去实现一个MVP的基类,其它扩展功能可以自行添加。Modelpublic abstract clas...

2018-02-08 18:25:59 1379 1

原创 Android 简单实现一个流式布局

流式布局应该是我们很常见的一种布局了,在很多场景下都会遇到它,例如:标签之类的功能等。用轮子不如造轮子来的爽,这里自己简单的实现下流式布局: - onMeasure - onLayout通过以上两个方法我们就可以完成对流式布局的基本操作:onMeasure @Override protected void onMeasure(int widthMeasureS

2018-02-05 17:21:21 861

原创 Android 简单封装Banner控件

如上图所示效果我们应该都不陌生,这是一个简单的banner轮播效果,网上也有很多的开源项目,但有时候可能我们仅仅只需要一些简单的效果,并不需要其他过多的东西。这里简单的对banner进行一下封装,随时调用和添加一些新的功能。代码展示/** * Created by xiaolong on 2018/1/23. */public class BannerView extends

2018-01-26 15:12:00 628

原创 Android 简单封装获取验证码倒计时

如图所示的效果相信大家都不陌生,我们可以使用很多种方法去实现此效果,这里自己采用CountDownTimer定时器简单封装下此效果,方便我们随时调用。首页先在attrs.xml中定义下所需的几个属性:resources> declare-styleable name="CountDownButton"> attr name="millisinfuture" form

2018-01-17 14:43:19 2861

原创 Android 探究数据库greenDAO

不知不觉发现都快一个月没有写点东西了,自己最近也是忙于工作与生活当中,这个月经历了很多事情,有开心的也有悲伤的。还好一切都过来了,空下来时想着写点什么好呢,就想着把工作中自己比较喜欢使用的一款有关数据库的开源框架greenDAO,分享下自己的使用过程。greenDAO是一个针对Android的轻而快速的ORM,它将对象映射到SQLite数据库。由于对Android进行了高度优化,greenDA

2017-12-22 11:49:29 252

原创 搭建一个属于自己的博客(Hexo + GitHub)

相信每个程序员都会想拥有一个属于自己的博客平台,记录自己一路走来的点点滴滴,让自己不断的去学习去成长。这是自己博客搭建成功后的第一篇文章,在这里分享一下自己的搭建过程。

2017-12-01 11:14:42 1554 2

原创 Charles破解教程

这里记录下破解版的网址方便以后更新使用:http://charles.iiilab.com/

2017-11-15 09:45:54 501

原创 Android 使用Retrofit自定义Converter解析相同接口返回不同数据

不知道你们在使用Retrofit访问后台接口时返回的数据是否是一样的格式,比如登录接口,在我们输入密码成功或错误的时候后台返回的数据格式是不同的,这样我们在添加GsonConverterFactory解析后台数据时由于后台会返回两种不同的数据所以会导致Gson解析失败的错误信息。这里以自己项目的登录接口为例子记录下自己的解决方案。

2017-11-14 11:57:35 5258 6

原创 Android 使用Jenkins打包解决':app:mergeReleaseResources'.问题

在使用Jenkins打包的时候出现如图所示错误信息,这个错误是因为构建缓存的新特性。它使用默认的构建缓存文件夹,这是一个很长的路径。由于文件路径过长所以导致资源文件打不开。您可以通过添加android来禁用构建缓存。解决方法:   在项目中gradle.properties文件添加android.enableBuildCache=false这段代码。提交到Git或SVN上再次构建即可欢迎关注

2017-10-20 11:12:21 5131

原创 Android 解决java.lang.NoClassDefFoundError: retrofit2.Platform$Android错误

在项目中使用Retrofit时出现如图所示错误信息......

2017-09-20 09:47:52 1836

原创 Android 解决java.lang.IndexOutOfBoundsException: Inconsistency detected错误

今天测试突然找我说项目在刷新数据时偶现crash情况,经过反复测试终于重现出此错误日志......

2017-09-13 18:41:21 5850

原创 Android 解决No resource found that matches android:TextAppearance.Material.Widget.Button.Inverse问题

今天项目中添加了一个网络依赖,运行时报了如图所示的错误信息......

2017-09-04 11:44:53 353

原创 Android面试题——进阶篇

上一篇整理了一些Android方面的基础面试题,这俩天自己也是一直在整理之前学习过程中所记录的笔记。工作这么久,有的时候感觉身边的人都不断的再进步,唯独只有自己还在原地踏步。就是想着是不是该换个方式去走接下来的路。面试时技术经理可能会问我们一些工作中遇到的Android方面的问题,谈谈我们所做的项目,和在项目中所扮演的角色。下面整理下自己之前记录的一些知识点:1、什么是嵌入式实时操作系统,...

2017-08-21 07:42:33 2751 2

原创 Android面试题——基础篇

  最近因为一些原因总是喜欢独自沉思一些事情,或许是在外久了,想家了。这个月在公司里呆的时间比较长些,忙完手头上的工作想着整理下以前看过的一些面试题巩固下自己的基础知识。1、Android的四大组件是哪些,它们的作用?答:Activity:Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它需要为保持各界面的状态,做很多持久化的事情,妥善管理生命周...

2017-08-18 11:50:18 614

原创 Android 解决Only the original thread that created a view hierarchy can touch its views异常

项目中突然报如上错误信息,根据日志发现是我在子线程中调用了适配器......

2017-08-08 14:33:19 2622

原创 Android 设置adjustResize失效

在我们调用软键盘的时候需要EditText在软键盘之上一起弹出......

2017-08-04 09:23:43 1688 1

原创 Android 使用Glide 报You cannot start a load for a destroyed activity异常

最近测试在测试的时候发现项目在返回的时候偶现崩溃现象,经过抓日子发现是Glide加载图片时所报的错误,根据错误信息提示意思指Glide在加载的过程中activity被销毁掉了,导致程序崩溃。我们都知道Glide加载机制是与Fragment和Activity生命周期息息相关,在Glide中,图片的加载会跟随这Activity或者Fragment的生命周期进行相应的加载,停止等操作。

2017-08-03 08:55:37 4290 1

原创 Android app:transformNativeLibsWithStripDebugSymbolForDebug错误分析

运行项目在模拟器中出现如图所示的错误信息,在网上查阅了一些资料,大概都是以下几种方法:   删除.gradle文件,重新进行编译。对NDK进行升级。删除local.properties中的ndk.dir。  以上几种方法我都进行了尝试,但都没有成功,这让我很是头疼,于是自己仔细看了看这个错误信息,感觉像是Jni里的文件导致的。以下是我的Jni里的文件:     然后我试着将64位的文件全部

2017-07-10 14:43:06 5113

原创 Android 解决java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState异常

项目中偶现如图所示错误信息,我们可以根据错误提示发现,此提示意思是说我们不能再onSaveInstanceState()方法后调用commit()。那么我们什么时候会在onSaveInstanceState()后调用commit()呢?举个例子:当我们的Activity处于后台时调用了commit()这个时候就会报上图所示的错误信息。我们可以将commit()替换成commitAllowingSta

2017-07-07 11:15:42 792

原创 Android 禁止系统状态栏下拉

最近项目中有需要将系统状态栏下拉的操作禁止掉,于是在网上查了些资料,最终将此功能实现。在此记录下自己的使用方法。

2017-07-06 16:51:30 8402 4

原创 Android 分析android.view.WindowLeaked错误

根据上图所示,我们知道leaked是泄露的意思,WindowLeaked应该就是窗体泄露,此异常是我们在显示对话框时承载它的Activity被finish掉所导致的。所以我们在使用对话框时要先将对话框关闭再将Acivity销毁掉。这样就不会报上述错误了,哈哈!

2017-07-05 20:07:19 222

原创 Android 分析android.view.WindowManager$BadTokenException: Unable to add window异常

在项目中遇到如图所示错误信息,根据提示我们可知这是Dialog在show的时候失去了它的载体。对AlertDialog来说,它需要依赖一个View,而View是对应于Activity的。所以当Activity销毁后才调用show的时候就会报上面所示的错误。当然我们可以通过判断其承载它的view是否被销毁从而去将它show出来。   if (!isFinishing()) { dialog

2017-07-05 19:31:28 282

原创 Android 广告条轮播的实现

生活中我们不难发现一些电商类的app里面都会有一些轮播的广告条出现,我有位好朋友他正巧就是做商城这方面的app,那时候他也要做一个类似淘宝界面的上的轮播的滚动条,当时他是采用listview来实现此效果,最近有空研究了一下,发现Android有些原生控件完全可以实现此功能,并且还可以实现其它更强大的效果。

2017-06-29 16:53:42 1366 2

原创 Android Manifest merger failed with multiple errors,see logs

项目中添加了一个依赖包,编译项目时出现如图所示的错误信息,当我们遇到这个错误的时候,我们可以发现最后一行显示的意思是我们可以在控制台查看完整的输出信息,这时候我们只需要双击这一行。   这样我们就可以在右边控制台中看见错误日志,我们只需要仔细阅读,根据错误信息提示,就可以解决此问题。哈哈!

2017-06-22 10:22:37 566

Android 简单的实现一个流式布局

流式布局应该是我们很常见的一种布局了,在很多场景下都会遇到它,例如:标签之类的功能等。用轮子不如造轮子来的爽,这里自己简单的实现下流式布局

2018-02-05

Android 简单的封装Banner控件

这是一个简单的banner轮播效果,网上也有很多的开源项目,但有时候可能我们仅仅只需要一些简单的效果,并不需要其他过多的东西。这里简单的对banner进行一下封装,随时调用和添加一些新的功能。

2018-01-26

Android 简单封装获取验证码倒计时

一个简单的获取验证码倒计时控件的封装,方便自己日常调用。

2018-01-17

Android 轮播广告条的实现

ViewFliper实现轮播广告条

2017-06-29

Html.fromHtml加载网络图片

Html.fromHtml加载网络图片

2017-06-12

MediaPlayer与SeekBar和Chronometer的简单交互

MediaPlayer与SeekBar和Chronometer的简单交互

2017-06-08

ViewPager无线轮播

ViewPager实现无限轮播

2016-09-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除