自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

侠亦狐的博客

主要发布Android相关博客

  • 博客(106)
  • 资源 (1)
  • 收藏
  • 关注

原创 Android:RecyclerView跨行跨列的LayoutManager:Spannedgridlayoutmanager

RecyclerView可以使用GridLayoutManager实现跨行,但是不能跨列;瀑布流布局可以跨列但是又不能跨行。原生自带的各个LayoutManager中并没有可以又跨行又能跨列的。网上搜寻了一番,找到了一个亲测可行好用的三方库:spannedgridlayoutmanager。

2024-02-01 11:01:03 749

原创 Android:RecyclerView自由拖动item

使用原生自带的ItemTouchHelper工具实现

2024-01-22 11:34:22 667

原创 Android:自定义列表弹窗的单选图标样式、去掉列表弹窗的上下提示线

如果需求有要求在原生AlertDialog.setSingleChoiceItems后对弹窗样式做修改,可以参考文章内容

2023-10-09 14:32:12 462

原创 Android:自定义原生TimePickerDialog样式

Android用style的方式自定义原生TimePickerDialog中TimePicker的样式

2023-10-09 11:24:34 586 1

原创 Android:修改原生Loading控件ProgressBar的颜色

indeterminateTint属性声明的就是那个转圈圈的颜色。

2023-09-12 10:47:35 392

原创 Android AlertDialog标题居中

网上很多做法都是使用setCustomTitle方法实现的,我偏不,因为我已经找到了标题的textView了,我想就原生的这个titleView做居中

2023-08-09 09:50:03 1319

原创 Android TV:自定义Leanback的VideoDetailsFragment

在Android studio新建TV项目的demo上做修改,实现一下需求:1、去掉顶部背景区域;2、修改中间详情区域高度;3、修改整体背景界面。搜遍全网,没有找到一个解决方案,只能自己探索了。

2023-07-04 15:29:58 573

原创 android XTS/CTS/GTS/STS报failed to run aapt2 on xxx

XTS/CTS/GTS/STS报failed to run aapt2 on xxx/xxxx.apk,没有pass也没有fail,而是抛异常中断

2023-06-15 16:22:02 948

原创 Android中AIDL的简单使用(Hello world)

AIDL:Android Interface Definition Language(Android接口定义语言)作用:跨进程通讯。如A应用调用B应用提供的接口

2023-05-16 13:38:20 4803 1

原创 Android:开启LCD屏显示AOD界面功能

AOD原本是OLED自带的功能,LCD的设备默认是不开启这个选项的。但是项目有需求要开启,并且可以自己做亮屏的控制且不与原有的AOD功能冲突,可以用这个方案实现

2023-04-06 17:53:13 1225

原创 Android:使用LayerDrawable动态生成四宫格头像(包含双人、三人头像)

其实用自定义View也可以实现,我比较懒,就用LayerDrawable来创建一个新的Drawable资源实现。

2023-04-06 17:38:01 562

原创 Android12 Launcher3客制化:添加非抽屉模式(可动态切换)、图标自动补位功能

网上的很多博客这个地方都有点不太一样,PendingInstallShortcutInfo都是 InstallShortcutReceiver.PendingInstallShortcutInfo的,但是Android12的代码里面根本就没有InstallShortcutReceiver这个类了,所以全局搜索PendingInstallShortcutInfo发现ItemInstallQueue才有这个类,并且是私有的,我们需要把它改成public。这时候小部件就会消失了,所以我这边还是采取方案二。

2023-04-06 16:07:35 1436 7

原创 Android:startActivityForResult废弃,使用registerForActivityResult

【代码】Android:startActivityForResult废弃,使用registerForActivityResult。

2023-04-06 15:38:53 729

原创 Android12 弹窗外部、内部高斯模糊效果实现

Android 12 中提供了高斯模糊的属性,可以很轻松的实现弹窗相关的高斯模糊效果

2023-04-06 15:29:04 2808

原创 Android12 Launcher3 的一些修改记录

本文将回答Launcher3 桌面是如何屏蔽返回手势的;Launcher3新安装应用从第二页开始放怎么实现;Launcher3图标去掉背景,前景做圆角裁剪,缩放等实现说明

2023-04-06 15:18:25 974

原创 Android12 Launcher3 最近任务客制化

实现效果包括 : 修改图标位置+添加应用名称、多任务背景改成壁纸、Task预览图的圆角半径、清除全部按钮移动到底部显示、最近任务为空时的图片、字体颜色、Task预览图缩放效果等

2023-02-13 12:03:37 1603 6

原创 Linux:ubuntu系统配置环境变量(jdk、adb)

通过自带记事本修改系统文件的方式,不会用vi/vim命令的可以看看

2022-04-07 16:58:47 2382

原创 极光JMessage:IM即时通信集成群聊简单实现(无需自己搞后台和数据库)

一、注册极光账号,创建应用网址:首页 - 极光二、集成sdk:1、项目的build.gradle添加mavenCentral():buildscript { repositories { ... mavenCentral() } ...}allprojects { repositories { ... mavenCentral() }}2、app的build.g.

2021-12-21 13:07:06 2931

原创 【javaFx】使用小记录

textArea自动换行、textArea自动滚动到底部、固定窗口大小、子线程里面更新UI、拖拽文件或文字到窗口上面、文件/文件夹选择器、悬停文本提示、监听文本变化

2021-12-17 09:59:02 499

原创 (Kotlin)Android Jetpack开发 —— 数据库框架Room简单使用

前期工作:首先添加依赖://room数据库def roomVersion = "2.3.0"implementation("androidx.room:room-runtime:$roomVersion")annotationProcessor("androidx.room:room-compiler:$roomVersion")// To use Kotlin annotation processing tool (kapt) 添加这个,编译的时候系统会帮我们自动生成代码kapt(

2021-11-10 16:01:21 2976

原创 Android原生Switch禁止滑动实现

前言搜遍全网,没有找到对原生控件实现禁止滑动的,全都是自定义view实现。然后自己找到了一个解决方式,可以不重写Switch控件,只用style就能实现。这边先说一下有滑动效果会产生的问题:在注册了监听事件setOnCheckedChangeListener之后,通过代码去setCheck它也会进去change事件里面,但实际上我们不希望这个事件的发生,我们只想纯UI上的变化。网上有两种解决思路:第一种,也是比较笨的方法,setCheck前把change监听设置为null,se.

2021-11-04 15:53:01 4309 4

原创 自定义view之自定义滑动seekbar

搜索自定义seekbar全都是基于原生seekbar都是拖动滑块的,并且点击seekbar某个位置就会跳变到那里,我想要的是跟miui10的那个亮度条那样滑动来调节的,既然没有那就自己动手吧。首先自己要清楚要画出来的是什么样的,这里先看下效果图:实现思路:主要的就是要draw两个原件矩形,一个背景,一个进度的方块,然后通过onTouchEvent来触发滑动改变进度。首先先声明两支笔,一只画背景,一只话进度,然后给笔设置颜色:private Paint bgPaint;pri..

2021-08-24 17:02:22 1054

原创 WebView获取加载的html文本内容

效果如图:没有直接获取文本的方法,用的是通过js注入,调用js函数,使用js调用Android的方法并传入界面的<html></html>里面的内容。布局内容:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match.

2021-08-20 14:05:48 1484

原创 Android:支付宝sdk支付回调错误码4000

看下你的声明文件是不是声明sdk是30以上,是的话需要在AndroidManifest.xml添加如下代码:<queries> <package android:name="com.eg.android.AlipayGphone" /> <package android:name="hk.alipay.wallet" /> </queries>...

2021-07-06 20:08:03 1119 3

原创 Android:用MotionLayout布局简单实现过度动画

先看效果:(懒得视频转gif,就截三张图吧)动画前:动画中:动画结束:这里4个view分别做了动画:文字由黑色变红色 拖动圆形块由做到右 宽度改变块的宽度变宽 左下角弹出四个view先了解一下背景:MotionLayout继承自ConstraintLayout,所以布局里面的内容不需要改变,直接替换掉ConstraintLayout也是没有问题的。实现步骤:替换完之后布局会报问题,根据提示,让它自己生成我们的场景文件,并且会有一个属性:

2021-07-01 16:22:30 601

原创 Android 11裁剪图片提示保存时发生错误,保存失败

前提须知:总所周知,Android11之后存储发生变更,APP只能访问自己的私有目录或者公共目录,不能访问别的app的私有目录。错误原因:发生“保存时发生错误,保存失败”这个错误的原因是你调用系统自带的裁剪工具不属于你的app,访问你的app私有目录是不允许的。解决:裁切intent.putExtra(MediaStore.EXTRA_OUTPUT, uri)这里的uri使用公用目录:File cropPhoto;if(Build.VERSION.SDK_INT >= Bu

2021-03-28 18:02:38 7485 8

原创 初学Kotlin之抽象的匿名内部类实现

Java的时候我们一般设置匿名内部类是直接new那个抽象类,然后回自动导入这个类需要实现的方法,例如:他会自动实现里面的三个方法:但是到了Kotlin的时候,刚接触学习Kotlin的小伙伴第一时间会想到java中需要new的在kotlin是不用new的,直接写类名,结果:不会有任何提示。是的,只有一个方法的可以用landau表达式,多个方法的需要每个都实现,这些方法肯定是不可能一个个敲出来的了。很简单,我们只要在前面加上object:...

2021-03-01 18:15:36 515

原创 Android:本地音乐文件写入专辑图

网上搜索这个Android写入专辑图的资料少之又少,都是读取的,这里我找到了一个方法,然后自己做了个写入专辑图的小工具,有需要的童鞋可以参考一下。先上效果图:依赖第三方库:jaudiotagger(java)、Okhttpdemo语言:Kotlin不会kotlin的小伙伴别慌,我也是边学kotlin先写的这个demo,看过kotlin基础语法的小伙伴应该还是比较好理解的。核心写入代码://path:本地音乐文件路径;picFile:本地图片文件(网络图片的话我这边的...

2021-02-08 16:12:33 729 2

原创 Kotlin内联扩展函数let,with,run,apply,also的简单理解

1、let:var result = object.let{ it.todo() 1000}let的函数体内用it代表该对象 可以判空:object?.let{} 返回函数体最后一行的值:result = 10002、with:var result = with(object){ todo() 1000}whit的函数体内用this代表该对象(可省略this) 本体是with(object,{}) 返回函数体最后一行的值:result .

2021-01-11 16:53:27 226 2

原创 Java程序员学Kotlin的一些小记录(1):java和kotlin方法互调小思考

Kotlin的函数的参数可以直接传递方法,Java不能,需要通过定义接口,用接口的方式传递。但是Java和Kotlin又可以互调,那如果我们再kotlin的类中定义一个需要参数传方法的函数,然后java去调用它这个函数,会以怎么样的形式传给它呢?我们在kotlin文件中定义一个函数,这个函数需要传递一个字符串和一个方法,这个方法需要传递两个数字,并且返回一个数字:(为方便调用声明为object,相当于java里面的静态类吧,里面的方法都是可直接访问)object TestKotlin{.

2021-01-07 14:50:36 156

原创 使用BaseQuickAdapter时RecyclerView嵌套RecyclerView点击事件处理最简单的解决方案

正常情况下,父RecyclerView嵌套子RecyclerView的话,点击子RecyclerView只会响应它自己的点击事件,就算你没有在BaseQuickAdapter里面设置它的点击事件,它也会拦截掉,不响应父列表的点击事件。大家的第一反应就是处理事件分发,让子列表不处理交给外部列表处理点击事件,又或者写一个接口传递给你的父adapter,让它再传给子adapter。都是比较麻烦的处理方式。这里提供另一种思路:点击内部列表调用外部点击事件的方法:@Override protecte.

2020-12-18 23:58:31 2682 1

原创 Andoid9、10报java.lang.IllegalStateException: Not one of standard directories: xxxxx解决

我这边是使用DownloadManager的时候遇到这个问题,因为写了try-catch,所以通知栏不会显示下载,直接走catch了,打印错误原因如下:java.lang.IllegalStateException: Not one of standard directories:xxxxx我都机子是Android10。网上百度原因:对于面向Build.VERSION_CODES.Q或更高版本的应用程序,不需要WRITE_EXTERNAL_STORAGE权限,并且dirType必须是已知..

2020-12-14 19:04:11 1942 2

原创 升级Android Studio4.1遇到的坑:插件不兼容、代码不高亮、错误不爆红

手贱点了升级之后,遇到很多问题,整合一下提供参考。如果还没有升级的话,建议先别升,等稳定一点的版本。我已经有点后悔升级了1、插件不兼容:启动as提示插件不兼容:Plugin Error: Plugin"xxxxxx"is incompatible(supported only in Intell IDEA)你会发现在as的设置-plugins里面已经看不到提示不兼容的插件了。解决:我们在电脑中手动查找,找到插件位置:C:\Users\{user}\AppData\Roaming\Go.

2020-11-26 11:07:19 3459 1

原创 Android7.1 Shortcut快捷方式运用

效果:两种方式:静态和动态静态:1、xml目录下新建一个文件,比如命名为static_shortcuts.xml:<?xml version="1.0" encoding="utf-8"?><shortcuts xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android"> <.

2020-11-19 16:17:57 701

原创 Android:顶部栏ActionBar/ToolBar右上角添加菜单

三步走:1、res里面新建文件夹menu,然后里面创建菜单文件.xml:2、内容就是各个item:<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://s

2020-11-19 15:58:22 1593

原创 Android底部Dialog弹出与收起

根据需求,如果经常复用的话,建议单独写一个继承Dialog的底部弹窗类,如果只用一遍的话,可以选择直接new Dialog来快速创建一个窗口。先准备好窗口的style和动画的style:<style name="BottomDialog" parent="@style/Base.V7.Theme.AppCompat.Light.Dialog"> <item name="android:windowNoTitle">true</item> &l.

2020-11-19 15:45:06 906

原创 Android Jetpack开发 —— ViewModel、LiveData、DataBinding简单使用

前言:Jetpack网上一搜全都有解释,在这里我就不介绍Jetpack了,直接给ViewModel、LiveData、DataBinding上例子。注:本文基于AndroidX的项目,本人自己理解的意思做的讲解,有不对或疑惑的地方欢迎评论留言一起学习探讨。一、ViewModel:1、功能:屏幕旋转或者字号改变的时候该Activity数据不会丢失。2、做法:写一个类集...

2020-03-24 20:59:50 2303

原创 使用retrofit2时,接口需要登录后请求头里放token解决方案

需求:没有登陆时接口照常使用,登陆后请求数据需要在请求头里带token过去。问题:这个header的声明方式有几种,常见的是在创建单例接口类时就给声明了header,而这个单例在第一次请求数据的时候就创建了,那时候如果没有登陆,那登陆后依然是用的同一个header,就带不过去这个token。另一种就是在声明接口的时候添加@Header()注解,但是这样的话需要每个接口上面都写这个...

2020-01-08 17:43:55 7764 6

原创 Android Studio插件在线、离线安装以及常用插件推荐

安装插件的方法:1、在线安装:设置Setting里面检索plugins:然后就可以搜索插件名称以及安装了。2、离线安装:上图顶部Updates右边那个设置图标:选择下载好的离线插件导入即可(下载好的插件不用解压)。附上插件下载官网:https://plugins.jetbrains.com/插件推荐:1、GsonFormat快速...

2020-01-08 16:53:25 3848

原创 Android:用DialogFragment实现LoadingDialog等待加载框

1、先搞好一个等待框的布局:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android...

2020-01-07 18:38:18 3163

spannedgridlayoutmanager-3.0.2

github:https://github.com/jmartinesp/SpannedGridLayoutManager 描述:Android RecyclerView.LayoutManager that resizes and reorders views based on SpanSize(RecyclerView跨行跨列的LayoutManager) 关联博客:http://t.csdnimg.cn/QWNLC

2024-02-01

android studio常用插件.rar

资源包含GsonFormat.jar、android-butterknife-zelezny.jar、FindViewByMe.jar、drawable_preview-1.1.4.zip等四个android studio插件,可在android studio直接导入即可。导入方式以及插件介绍查看博客:https://blog.csdn.net/qq_35584878/article/details/103893746

2020-01-08

空空如也

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

TA关注的人

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