自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 更丝滑的适配软键盘高度之windowsInsetsCompat

一、首先是根布局的监听类实现,需要继承WindowInsetsAnimationCompat.Callback类,实现OnApplyWindowInsetsListener 接口。在我尝试实现官方提供的方法时,看文档看的一脸懵逼,代码一通复制粘贴却发现没有什么*用。二、输入框组件的监听类实现。后来又继续找了半天,找到了一个最清晰直接的demo并根据它了解了真正的实现过程。文档这么简单,案例怎么写一大堆,又是kotlin,太难理解了……主要是用于处理软键盘弹出后,键盘高度升高的平滑动画。

2025-01-21 14:41:15 426

原创 刮刮乐实现之Imageview自定义组件

注意:在init()方法中将上层蒙版的画布赋值给了全局变量,这里touch绘制的路径也是在蒙版的画布mCanvas上绘制的,而不是在全局的组件画布canvas上绘制。但是--根据原理就可以发现通过DST_OUT是把相交的部分隐藏,未相交的部分显示为先绘制的图层A,类似A=A-A∩B。而通过DST_IN是显示A与B的交集部分为A,类似A=A∩B。3.通过触摸事件将路径绘制到画布上,与第一层画布相交的部分就会被清除。

2025-01-14 18:10:50 382

原创 自定义view之实现圆形图片imageview

讲解:本文中使用到三个画布canvas,分别是整个视图的画布函数形参canvasA,图片画图canvasB,遮罩层canvasC。主要实现是先绘制B,再设置画笔格式为DST_IN,然后在B上绘制C,最后把B绘制到A上。实现方式:通过两个图层,图层A绘制图片,图层B绘制遮罩层,然后以相交模式将B放在A上,即可实现圆形图片。DST 是先绘制的图层A,SRC是后绘制的图B。

2025-01-13 15:19:41 296

原创 recyclerview更新进度时滑动列表出现闪烁或跳动问题的解决方案。

在短时间内重复多次使用notifyitemchange导致的holder视图重绘,如果实验就可以发现,在更新发生异常跳动之后的间隔再滑动可以看到holder(item)并没有消失,只是在更新时发生了一次重新绘制,所以才出现这种消失的列表跳动。在使用高德sdk下载离线地图的业务场景中,需要实时更新下载进度。当我通过notifyItemChanged更新item时却发现滑动列表时会出现:在更新时屏幕外的item滑动进入屏幕时突然消失,列表跳动并移动到顶部,看起来是很奇怪的跳动。网上得到的废话大概有以下类型。

2024-12-31 14:18:11 652

原创 动效布局Motionlayout

2、motionlayoput需要一个motionsence文件来实现动效,如果你使用motionlayout而没有这个文件,编译器会提示。ConstraintSet 是一个组件集合,里面包含需要动画过渡的组件,此处只使用imagefilterview。这是一个简单地motionlayout布局文件,包含一个imagfilterview和一个textview。imagefilterview是一个imageview的增强版组件,提供图像处理功能。此处实现的动画效果是左右晃动一次。3.然后设置动画的执行。

2024-11-14 18:38:33 193

原创 项目搭建之导航(navigation进行页面切换)

在实现页面跳转时,大部分新手都会选择使用Intent,或者说使用fragment的replace或hide-show之类的方法去实现页面的切换(我也是这样)。但是这样一来,如果页面一多,管理将变得十分复杂,所以安卓开发sdk后来推出了navigation作为页面管理的组件。代码如下,在这个文件中,action代表跳转事件,destination代表目标位置,anim是一些安卓自带的切换动画。5、到上面那步,页面的导航切换就已经完成了,接下来还需要添加顶部的actionBar,以实现返回。

2024-11-03 20:27:05 415

原创 activity动画切换

使用动画启动 activity | Views | Android Developers (google.cn)item只是界面传递的参数,并不影响切换效果的实现。安卓开发文档的实现总结。

2024-10-21 15:54:27 269

原创 BottomNavigationView的实现以及一些问题

安卓的底部导航栏组件BottomNavigationView:代码实现以及实现过程中的一些坑。

2024-08-08 15:44:50 463 1

原创 安卓界面适配软键盘

最终得到的结果是:adjustresize没反应,adjustpan会导致顶部的组件溢出屏幕,没有办法像微信聊天界面一样顶部固定,只移动输入框。在很多使用安卓输入框edittext时,经常会出现:当edittext在底部时,软键盘的弹起会导致界面遮挡,无法看到自己的输入的内容,所以此时就需要对软键盘进行界面适配。另一种实现,与上面选其一即可,但是下面不包含虚拟按键高度,会导致底部布局和键盘有一块按键高度的间隔。一个模拟聊天页面,复制可用,最外层relativelayout用自己的即可。

2024-07-25 14:41:20 527

原创 kotlin泛型、以及in、out关键字的作用

无论是在类、还是在方法中,<T>泛型占位符的定义都只表示这个类/方法支持泛型,并不是表示这个类/方法的返回值和属性都被定义为泛型。也就是说即是使用<T>修饰,你同样可以使用基本类型作为属性和返回值。//最简单的泛型类格式//泛型类支持泛型属性//还可以支持泛型方法//方法体//支持泛型参数的方法//方法体//返回泛型的方法//方法体//多泛型,此处只做入门讲解,多泛型不做深入//方法体。

2024-05-29 15:15:21 1322 1

原创 Unable to instantiate appComponentFactory问题

如果无法解决再尝试更改父类样式库。在res>values>themes.xml文件中更改。是目前个人学习过程中的解决办法,后续发现更好的解决办法再做补充。加在模块下的proguard-rules.pro文件中。

2024-05-09 14:24:58 1354 1

原创 修改新版android stuio默认按钮样式

NoActionBar:不包含标题栏,也就是说样式不会对你创建的标题栏样式生效。对样式库的引用,新版默认Themes.Material3,谷歌开发的样式库。我使用旧版Theme.AppCompat,安卓v7兼容包样式。找res/values/themes.xml文件。Light:样式亮色 也可以设置Dark 暗色。只需要修改parent属性 :默认按钮为灰色。

2024-04-18 11:58:08 770 1

原创 安卓后台录音service和播放录音service实现

初学安卓,自己写的demo,供大家参考,可以在此基础上实现更多功能。功能并不完善,还有许多地方值得优化,但是整体的流程基本上已经实现。坚持学习,你我都会成功。xml文件布局,随便写。

2024-04-12 18:32:42 1030 1

原创 安卓无法创建aidl文件解决

将该配置加在模块的build.gradle文件中,在android{.....}中添加配置。

2024-04-12 17:18:20 218 1

原创 安卓switch case id:解决

在根目录下的 中添加。

2024-04-12 17:15:52 519 1

原创 JVM虚拟机底层详解

jvm虚拟机底层详解以及GC垃圾回收机制

2022-12-06 21:20:34 366

原创 String类概述,构造对象特点以及遍历方法

一、概述string类代表字符串,程序中所有字符串都是string类的实例。即所有双引号字符串如“abc”,都是string类的对象。string类在java.lang包下,不需要导包。字符串在创建后不可以变,值无法更改,只能做替换,可以被共享。二、构造特点string类的构造方法有四种:1.创建空白字符串对象,不包含任何内容。string s=new string();2.根据字符数组创建对象char[] ch={'a','b','c'};String s=ne

2022-03-15 11:04:08 999

原创 PHP一维数组的定义

在定义PHP一维数组的时候,通常有两个方法。一、通过[]标识符来创建数组。$Array [key]=value;例如:创建一个数组a,并给第一个元素赋值12。$a[3]=12;表示数组a的第4号位(从零开始)的元素是12。a[]=12;表示创建一个数组,并写入元素12,此时的数组结构为:array([0]=>12);如果此时再创建数组a[]=12;表示创建一个数组,并写入元素12,此时的数组结构为:array ([0]=>12);如果此时再创建数组a[]=12;表示创建一个数组,并

2022-01-02 18:18:32 1528

空空如也

空空如也

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

TA关注的人

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