自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

陌生人

祝你每天开心快乐

  • 博客(66)
  • 资源 (11)
  • 问答 (35)
  • 收藏
  • 关注

原创 Android Jetpack中Lifecycle使用生命周期感知型组件处理生命周期

在上述示例中,我们创建了一个LifecycleObserver对象,并在其内部使用@OnLifecycleEvent注解来监听ON_RESUME和ON_PAUSE事件,并在对应的方法中执行相应的逻辑。然后,在你的Activity或Fragment中创建一个LifecycleObserver对象,并使用@OnLifecycleEvent注解来实现相应的生命周期方法。你可以根据需要在LifecycleObserver对象中监听其他生命周期事件,并在对应的方法中处理相应的逻辑。

2024-01-13 14:00:00 432

原创 Android 判断网络wifi是否可用工具类

【代码】Android 判断网络wifi是否可用工具类。

2024-01-12 09:50:00 574

原创 Android UnknownFormatConversionException: Conversion = ‘得‘

格式化字符串输出时,任何未明确定义为转换的字符都是非法的,在格式字符串中使用此类字符将导致 UnknownFormatConversionException。而%这个符号就是表示一个格式的起始符号,所以当我们接了一个%后代表我们将要对后续的字符进行转换,但我们只是想把他当做一个普通的%,所以报了错。在download_test_mp3_progress中运用到了占位符%1$d,而后在后面又紧接了% ,运行时就报了错。将需要正常展示的%改写成 %% 即可。

2024-01-12 09:42:30 490

原创 Android java.util.IllegalFormatConversionException: d != java.lang.Double

原因:使用占位符时使用了%1$d,然后传入的数值为double类型的数值,所以导致报错。直接使用 %1$s进行占位,传入的值使用String.valueOf()转换。

2024-01-03 15:26:47 425

原创 Android 配置不同应用ID

在AndroidManifest.xml文件中,您还可以配置应用ID。在创建项目时,使用不同的应用ID。如果您想在同一项目中创建多个变体,可以在build.gradle文件中的productFlavors部分配置不同的应用ID。通过这些步骤,您可以配置不同ID的应用,并在同一设备上安装和运行它们。请注意,应用ID是唯一的,不同的应用ID将被视为不同的应用。在Android中,每个应用都有一个独特的应用ID,用于唯一标识该应用。在创建项目对话框中,选择"Edit"选项并输入自定义的应用ID。

2023-12-27 17:45:13 687

原创 Android 万能的RecyclerView适配器(BaseRecyclerViewAdapterHelper)

去除点击抖动(双击)的点击方法。默认500毫秒间隔,可以传递参数修改。如果Adapter特别简单,可以使用BuickViewHolder。交换数据位置(仅仅是这两个数据的位置交换)移动数据位置(注意和 swap 的区别)根据索引,获取Item数据。item 子控件点击事件。item 子控件长按事件。获取Item数据的索引。

2023-12-27 17:27:51 1090 1

原创 Android 权限申请

在应用的清单文件(AndroidManifest.xml)中声明需要的权限。在Android中,从Android 6.0(API级别23)开始,应用在运行时需要动态申请权限。检查应用是否已经被授予所需权限。用户将会看到一个权限请求对话框,您可以在。如果应用没有所需的权限,您可以使用。方法中处理用户的响应。

2023-12-21 21:23:27 564

原创 Android ViewModel的简单应用

ViewModel 的生命周期与相关的 Activity 或 Fragment 绑定,当相关组件销毁时,ViewModel 的实例会被销毁。在 Activity 或 Fragment 中使用 ViewModel:在需要使用 ViewModel 的 Activity 或 Fragment 中,通过 ViewModelProvider 获取 ViewModel 的实例。使用 ViewModel:在获取了 ViewModel 的实例之后,即可使用 ViewModel 中定义的数据。

2023-12-20 20:14:32 479

原创 Android 版本控制工具--Git

安装Git:首先在你的开发环境中安装Git。在Windows中,你可以从官方网站(https://git-scm.com/downloads)上下载Git的可执行文件并进行安装。在Mac上,你可以使用Homebrew(https://brew.sh/)进行安装。在Linux上,你可以使用你的发行版的包管理器进行安装。当然,Git也有更多高级的功能和命令,你可以通过查阅Git文档或教程来了解更多。配置Git:在安装完成后,你需要配置你的Git。这将显示所有的提交记录,包括作者、日期和提交消息。

2023-12-19 20:23:58 504

原创 Android 解决Connection timed out: connect或者部分第三方库下载超时问题

之前比较老的项目重新打开,因为Android Studio 版本已经升级,导致原来部分的第三方库需要重新下载,但是因为墙或者其他原因,一直下载超时。后续解决了此问题,在此记录一下。

2023-12-18 08:00:00 916

原创 Android studio 多渠道打包步骤

在Android Studio的菜单栏中,选择Build -> Build Bundle(s) / APK(s) -> Build APK(s)。通过上述步骤,就可以在Android Studio中使用Gradle的多渠道打包功能生成不同渠道的应用包。每个渠道的应用包都包含了对应渠道的包名、签名和资源文件。在Android Studio中,可以使用Gradle的多渠道打包功能来生成不同渠道的应用包。构建完成后,在app模块的build/outputs/apk目录下会生成不同渠道的应用包。

2023-12-17 08:30:00 499

原创 Kotlin(十九) 泛型的高级特性

关键字这两个前提条件。那么借助泛型实化,到底可以实现什么样的效果呢?这样的语法在Java中是不合法的,而在Kotlin中,借助泛型实化功能就可以使用。这是很常见的一种写法,但是我们如果使用泛型实化来简化它呢?怎么写才能将泛型实化呢?首先,该函数必须是内联函数才行,也就是要用。关键字来修饰该函数。其次,在声明泛型的地方必须加上。关键字来表示该泛型要进行实化。就是一个被实化的泛型,因为它满足了内联函数和。函数直接返回了当前指定泛型的实际类型。现在我们可以使用如下代码对。

2023-12-16 08:00:00 357

原创 Kotlin(十八)使用infix函数构建更可读的语法

infix函数是什么难理解的事物,它只是把编程语言函数调用的语法规则调整了一下而已,比如A to B这样的写法,实际上等价于A.to(B)的写法。这个代码一定返回为true的。函数的用法虽然非常简单,但是借助infix函数,我们可以使用一种更具可读性的语法来表达这段代码。首先,除去最前面的infix关键字不谈,这是一个String类的扩展函数。我们给String类添加了一个函数,它也是用于判断一个字符串是否是以某个指定参数开头的,并且它的内部实现就是调用的String类的函数。但是加上了infix。

2023-12-15 15:07:34 490

原创 Kotlin(十七) 泛型和委托

成为了一个全新的数据结构类,我们也不用实现原有的方法,因为我们已经把工作委托给了HashSet。如果我们想新增或者重写里面的方法,直接在类里面新增或者重写就好了。这样我们的类委托就已经完成。委托是一种设计模式,它的基本理念是:操作对象自己不会去处理某段逻辑,而是会把工作委托给另外一个辅助对象去处理。泛型主要有两种定义方式:一种是定义泛型类,另一种是定义泛型方法,使用的语法结构都是。并不是固定要求的,事实上你使用任何英文字母或单词都可以,但是通常情况下,这是一种标准的代码实现模板,在。

2023-12-14 12:07:28 492

原创 Kotlin(十六) 高阶函数的简单应用

高阶函数非常适用于简化各种API的调用,一些API的原有用法在使用高阶函数简化之后,不管是在易用性还是可读性方面,都可能会有很大的提升。所以我们可以通过高阶函数来使一些API变得更简单更易读。在我们APP存储数据时,通常会用到SharedPreferences 这个API,那么我们现在尝试使用高阶函数来简化它。

2023-12-13 15:14:19 873

原创 Android Kotlin Viewbinding封装

【代码】Android Kotlin Viewbinding封装。

2023-12-11 11:21:13 666

原创 Android Kotlin语言下的文件存储

此方法接收两个参数:第一个参数用于指定SharedPreferences文件的名称,如果指定的文件不存在则会创建一个,SharedPreferences文件都是存放在/data/data//shared_prefs/目录下的;这个方法接收两个参数:第一个参数是文件名,在文件创建的时候使用,注意这里指定的文件名不可以包含路径,因为所有的文件都默认存储到/data/data//files/目录下;不同的是,当数据库不可写入的时候(如磁盘空间已满),

2023-12-09 11:22:35 1249

原创 Kotlin(十五) 高阶函数详解

高阶函数和Lambda的关系是密不可分的。在之前的文章中,我们熟悉了Lambda编程的基础知识,并且掌握了一些与集合相关的函数式API的用法,如mapfilter函数等。另外,我们也了解了Kotlin的标准函数,如runapply函数等。这些函数有一个共同的特点:它们都会要求传入一个Lambda表达式作为参数。像这种接收Lambda参数的函数就可以称为具有函数式编程风格的API,而如果你想要定义自己的函数式API,那就得借助高阶函数来实现了。

2023-12-08 12:19:22 534

原创 Kotlin(十四) 扩展函数和运算符重载

我们只需要创建一个为String.kt的文件,对于文件名我们可以随便命名,但是最好还是创建哪个类的扩展函数就以哪个类为文件名,这样便于查找,也方便后续的合作开发。的语法看上去好像很神奇,但其实这就是Kotlin给我们提供的一种语法糖,它会在编译的时候被转换成。都是固定不变的,而接收的参数和函数返回值可以根据你的逻辑自行设定。类之外,你还可以向任何类中添加扩展函数,Kotlin对此基本没有限制。关键字,就可以实现运算符重载的功能了。类的扩展函数,那么函数中就自动拥有了。相加,然后将得到的和传给一个新的。

2023-12-06 11:57:20 1169

原创 Kotlin(十三) 延迟初始化和密封类

另外再多说一句,密封类及其所有子类只能定义在同一个文件的顶层位置,不能嵌套在其他类中,这是被密封类底层的实现机制所限制的。关键字,它可以告诉Kotlin编译器,我会在晚些时候对这个变量进行初始化,这样就不用在一开始的时候将它赋值为。关键字也不是没有任何风险的,如果我们在student变量还没初始化时调用,那么程序还是会崩溃的,并且会抛出。到目前为止,代码都是没有问题的,但比较让人讨厌的是,接下来我们不得不再编写一个。另外,由于密封类是一个可继承的类,因此在继承它的时候需要在后面加上一对括号。

2023-12-01 10:40:46 1177

原创 Kotlin(十二) 定义静态方法

不过,使用单例类的写法会将整个类中的所有方法全部变成类似于静态方法的调用方式,而如果我们只是希望让类中的某一个方法变成静态方法的调用方式该怎么办呢?由此可以看出,Kotlin确实没有直接定义静态方法的关键字,但是提供了一些语法特性来支持类似于静态方法调用的写法,这些语法特性基本可以满足我们平时的开发需求了。如果是在Kotlin代码中调用的话,那就很简单了,所有的顶层方法都可以在任何位置被直接调用,不用管包名路径,也不用创建实例,直接键入。中的方法上,如果你尝试加在一个普通方法上,会直接提示语法错误。

2023-11-28 11:23:23 1216

原创 Kotlin(十一) 标准函数with、run和apply

函数会在Lambda表达式中提供第一个参数对象的上下文,并使用Lambda表达式中的最后一行代码作为返回值返回。函数也是极其类似的,都要在某个对象上调用,并且只接收一个Lambda参数,也会在Lambda表达式中提供调用对象的上下文,但是。函数是一样的,包括也会使用Lambda表达式中的最后一行代码作为返回值返回。这两段代码的执行结果是一模一样的,但是明显第二段代码的写法更加简洁一些,这就是。方法,其他都没有任何区别,这两段代码最终的执行结果是完全相同的。对象,所以我们在最后打印的时候还要再调用它的。

2023-11-23 16:41:20 82

原创 Kotlin(十) 空指针检查、字符串内嵌表达式以及函数默认值

空指针检查我们在之前的章节里,有定义一个Study的类,它有两个函数,一个doHomework(),一个readBooks()。这一串代码,看上去会有空指针错误,但实际上是没有的,因为Kotlin默认所有的参数和变量都不可为空,所以这里传入的Study参数也一定不会为空,我们可以放心地调用它的任何函数。如果你尝试传入null,那么编译器会直接报错。

2023-11-08 16:56:27 510

原创 Kotlin(九) 集合以及集合API

函数是最常用的一种函数式API,它用于将集合中的每个元素都映射成一个另外的值,映射的规则在Lambda表达式中指定,最终生成一个新的集合。set的创建和遍历和上面基本一样,只是语法变成了 setOf(),mutableSetOf(),如图。② mutableListof() 可变集合,即可进行添加、修改、删除,以及读取。① listOf() 不可变集合,即不可进行添加、修改、删除,只能读取。函数是用来过滤集合中的数据的,它可以单独使用,也可以配合刚才的。

2023-10-26 15:09:04 94

原创 Kotlin(八) 数据类、单例

和Java的不同,kotlin的数据类比较简单,New→Kotlin File/Class,在弹出的对话框中输入“Book”,创建类型选择“Data”。单例模式,是最常用、最基础的设计模式之一,它可以用于避免创建重复的对象。关键字时,就表明你希望这个类是一个数据类,Kotlin会根据主构造函数中的参数帮你将。虽然看上去像是静态方法的调用,但其实Kotlin在背后自动帮我们创建了一个。可以看到,在Kotlin中我们不需要私有化构造函数,也不需要提供。另外,当一个类中没有任何代码时,还可以将尾部的大括号省略。

2023-10-25 11:54:38 459

原创 Kotlin(七) 接口

接口是用于实现多态编程的重要组成部分。我们都知道,Java是单继承结构的语言,任何一个类最多只能继承一个父类,但是却可以实现任意多个接口,Kotlin也是如此。

2023-10-21 11:10:53 349

原创 Kotlin(六) 类

这也是最基本的面向对象的用法:就是要先将事物封装成具体的类,然后将事物所拥有的属性和能力分别定义成类中的字段和函数,接下来对类进行实例化,再根据具体的编程需求调用类中的字段和方法即可。在Java中,一个创建的类直接通过extends关键字就可以被继承,但是在Kotlin中是不行的,它默认创建的类无法被继承,需要通过关键字open。之所以这么设计,是因为当你调用了某个类的构造函数时,你的意图只可能是对这个类进行实例化,因此即使没有。Kotlin中实例化一个类的方式和Java是基本类似的,只是去掉了。

2023-09-09 16:05:26 574

原创 Kotlin(五) 循环语句

while循环和for循环。而Kotlin也提供了while循环和for循环,其中while循环不管是在语法还是使用技巧上都和Java中的while循环没有任何区别,因此我们就直接跳过不进行讲解了。

2023-09-05 17:58:02 503

原创 实现Android中的网络请求和数据解析

HttpClient是Apache软件基金会下的一个子项目,可以用来实现HTTP客户端。HttpURLConnection是一个轻量级的HTTP客户端,它允许您在Android应用程序中发送HTTP请求和接收HTTP响应。需要注意的是,网络请求和数据解析应该在子线程中完成,否则会导致主线程阻塞。Gson是Google提供的一个JSON转Java对象的工具库,可以很方便地将JSON格式的数据转为Java对象。Jackson是一个高效的Java JSON库,可以实现Java对象和JSON之间的相互转换。

2023-06-13 16:09:19 2496

原创 Android 实现羊了个羊初步代码记录

Android实现羊了个羊

2022-12-08 10:29:04 746 1

原创 Android 关于不规则图像涂鸦问题记录

关于不规则图像涂鸦问题记录

2022-11-16 12:16:30 1034

原创 关于使用apksigner.bat对APK进行重新签名记录

项目进行加固之后,需要对APK进行重新签名,因为升级了AS版本,发现以前的签名方式无法进行签名了,搜索了一下发现可以使用apksigner.bat进行APK签名,而且比以前的更加方便,再次记录一下。 进入到这个目录中,然后找到 build-tools文件夹进入,选择自己的版本文件夹进入,就可以找 到apksigner.bat了...

2022-07-13 13:57:37 1469

原创 Android Could not resolve all files for configuration ‘:app:_internal_aapt2_binary‘.错误解决办法

Could not resolve all files for configuration ':app:_internal_aapt2_binary'.错误解决办法

2022-06-08 18:48:56 2705

原创 Android 可长按拖拽的RecyclerView

近期项目遇到需要拖拽的RecyclerView来实现需求,首先考虑了ItemTouchHelper 这个类,但是后续使用发现无法把item视图拖出RecyclerView的视图范围,于是打算自定义RecyclerView来实现长按item可在屏幕内随意拖拽,在此简单记录一下。实现效果主要思路继承RecylerView,重写dispatchTouchEvent 根据findChildViewUnder和getChildAdapterPosition方法获取到手指所在的View和索引 .

2022-04-12 16:50:19 4819 6

原创 Android dialog沉浸式状态栏

在项目开发中使用了沉浸式布局,所以对于dialog也需要沉浸式布局,刚开始使用dialog发现无法呈现沉浸式布局,在使用了个Activity的设置也不行,后面查询了一些资料,发现在高版本中使用设置layoutInDisplayCutoutMode参数,再此记录一下,下面是封装的代码(PS:代码封装使用的viewbinding)

2021-11-23 17:42:20 4268 1

原创 Android使用ReplacementSpan遇到的问题记录

在使用ReplacementSpan完成类似填空题的题型时,遇到了一个奇怪的现象,当用户输入连续两个空格后,ReplacementSpan的getSize方法里使用paint.measureText(mSWidth, 0, mSWidth.length());计算用户输入的字宽度时,返回的数值不正确(比正常值小),怀疑是measureText方法计算字体宽度时会忽略两个空格,解决办法mSWidth=mSWidth.replaceAll(" ","E");将空格替换成字母或者其他占位符即可

2021-10-29 11:37:40 1855

原创 Kotlin(四) 条件语句

Kotlin中的条件语句主要有两种:if 和 when1. ifif语句基本和Java中的if语句没有多大的区别,比如在上篇文章Kotlin(三) 语法糖中,我们有个getMaxNum函数,就可以使用if语句来实现,fun getMaxNum( a : Int , b : Int) : Int { if ( a >=b) { return a }else{ return b }}可以看出,Kotlin中的if和Java的if...

2021-10-08 11:30:08 304

原创 Kotlin(三) 语法糖

在上篇函数中,我们知道了如何定义函数,那么现在定义个函数,取两个数中比较大的数:fun getMaxNum(a : Int,b : Int) : Int { return max(a,b)}然后在main函数中调用一下,fun main () { val a=30; val b=43; val max=getMaxNum(a,b) println("max num is "+max)}这样我们运行打印出来的Log就是 max num i...

2021-08-24 11:07:09 674 1

原创 Android 关于给APK签名的记录

今天需要在APP商城进行应用认领,需要给一个没有签名的APK进行签名,OPPO官方给的是签名代码是 jarsigner -verbose -keystore android.keystore -signedjar OppoSignVerify_signed.apk OppoSignVerify.apk android.keystore发现使用后报错,说是没有...

2021-08-20 11:55:00 113

原创 Kotlin(二)函数

函数的解释kotlin的函数其实就是Java中的方法,他们代表的意思是一样的,搞清楚这个,就知道,函数其实就是代码运行的载体。函数的定义java中使用-访问修饰符+返回值类型+方法名+(参数列表)的形式定义方法,而在kotlin中,则使用fun来定义一个函数,例如:无返回值:publicvoid setName(String name);fun setName(name:String)有返回值:public int getMax(int a,int b){ ...

2021-08-18 10:27:14 139 1

Android 音视频配音之音频提取、截断、混音、合并、合成(二)——将提取的PCM根据时间戳截断

对PCM进行截断

2021-03-12

Android 音视频配音之音频提取、截断、混音、合并、合成(一)——从视频中提取音频文件

Android从视频提取音频

2021-01-07

FillSapnTest.zip

Android 自定义ReplacementSpan打造纯文本填空题,使用灵活。(文章链接:https://blog.csdn.net/pengguichu/article/details/100101679)

2019-08-27

Android 仿微博固定头部带下拉刷新的ListView

滑动ListView可以固定头部,另外带下拉刷新

2016-10-18

Android 关于多图片选择器Android-Ultra-Photo-Selector的使用

简单集成了Android-Ultra-Photo-Selector这个框架的使用,非常感谢作者,框架地址:https://github.com/AizazAZ/Android-Ultra-Photo-Selector

2016-09-06

Android 购物车动画

希望觉得好用的,收藏,评论一下。点击购买,添加物品到购物车,按钮以及购物车位置可以随意摆放,可以自己下载一下,自己体验

2016-08-23

Android 地区三级联动和日期选择器

详细的说明了WheelView的使用方法和代码演示

2016-08-06

仿QQ分组管理可拖动item的listview

仿QQ分组管理可拖动item的listview

2016-07-25

Android SurfaceView+MediaRecorder实现的录音波浪图

Android SurfaceView+MediaRecorder实现的录音波浪图

2016-07-09

兰贝壳儿zip包

多渠道打包的必备插件

2016-06-29

解决Scrollview嵌套listview下拉刷新的一些问题

解决Scrollview嵌套listview下拉刷新的一些问题

2015-12-01

Android 中调用SoundTouch如何处理pcm音频呢

2020-09-17

C语音如何读取一个比较大的PCM文件

2020-09-16

Android 重置ViewPager适配器问题

2018-05-11

Android 在Activity中动态创建ViewPager视图,然后设置Adapter报错

2017-11-10

Android 删除ViewPager中ListView的某一Item滚动报错

2017-10-13

关于Android使用Ormlite框架的问题

2016-11-26

Android studio中主项目中和library中的jar冲突该怎么解决

2016-10-28

Android 实现评论回复使用即时通讯做的吗?

2016-09-06

Android与PHP交互传递数组该使用什么方法传递,第一次遇到这样的问题,请大神帮帮忙

2016-07-02

关于mediaplayer播放的问题

2016-06-25

Android 关于在一个布局里面设置布局圆角出现的问题

2016-04-22

Amdroid关于so文件32和64位的问题

2016-04-21

关于Android向后台传值的长度问题

2016-03-22

Android 使用魅族系列进行测试是发现的问题 求大神告知

2016-03-09

Android 关于音频格式转换的问题

2016-01-20

Android关于改变ListView里面的ImageView控件的背景图出现无法触发点击事件的问题

2016-01-19

关于ImageView快速改变背景图片无法响应点击事件的问题,求大神。。。。。

2016-01-18

关于Android录音不正常,该怎么解决

2016-01-15

Android 使用mediarecorder能录制wav的录音文件吗?

2016-01-14

求救!!!!!Android 使用AudioRecord录音不正常

2016-01-14

Android关于scrollview与listview的问题

2015-11-30

在ScrollView中嵌套listview是出现的问题

2015-10-27

关于Android读取本地视频的一些问题,求大神指导指导。。。。。。

2015-10-21

Android播放视频怎么进入页面后开始自动播放视频,需要在生命周期的哪个方法调用play方法

2015-10-15

Android播放视频遇到的困难,希望大神给点思路

2015-10-14

如何让listview滚动,切被选中的列处于中间部分

2015-09-23

求大神帮帮忙,关于listview的item

2015-09-22

求Android大神指教,如何使用SeekBar控制listview的滚动

2015-09-21

为什么下载一个TXT文本下载的内容不全

2015-09-21

请问大神们有没有一些关于播放网络音频文件附带字幕的案例,希望可以学习下

2015-09-20

关于图片加载出现延迟的问题,希望大神们能帮帮我,这个问题困扰了我很久了

2015-09-18

Android自定义适配器geiView没有执行,在线等,求大神解决。。。。

2015-09-18

设置适配器后不执行getView方法,是怎么回事

2015-09-18

给GridView控件的子控件设置监听事件为什么监听没有响应

2015-09-18

Android如何在一个异步任务类结束时再次开启一个异步任务类

2015-09-15

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

TA关注的人

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