Android
文章平均质量分 56
侠亦狐
Android
展开
-
Android:使用ViewOutlineProvider裁剪View四边圆角、单边圆角
上下同理,只要把rect定大一点,裁掉的部分看不到,那一条边就是直角了。原创 2024-08-27 18:41:43 · 101 阅读 · 0 评论 -
百度、高德导航api第二次启动不会导航问题解决
使用官方提供的api有时能发起导航,有时第二次调用就不再发起导航了,解决方案如下原创 2024-07-24 09:27:58 · 179 阅读 · 0 评论 -
Android:RecyclerView跨行跨列的LayoutManager:Spannedgridlayoutmanager
RecyclerView可以使用GridLayoutManager实现跨行,但是不能跨列;瀑布流布局可以跨列但是又不能跨行。原生自带的各个LayoutManager中并没有可以又跨行又能跨列的。网上搜寻了一番,找到了一个亲测可行好用的三方库:spannedgridlayoutmanager。原创 2024-02-01 11:01:03 · 1231 阅读 · 5 评论 -
Android:RecyclerView自由拖动item
使用原生自带的ItemTouchHelper工具实现原创 2024-01-22 11:34:22 · 1035 阅读 · 0 评论 -
Android:自定义列表弹窗的单选图标样式、去掉列表弹窗的上下提示线
如果需求有要求在原生AlertDialog.setSingleChoiceItems后对弹窗样式做修改,可以参考文章内容原创 2023-10-09 14:32:12 · 590 阅读 · 0 评论 -
Android:自定义原生TimePickerDialog样式
Android用style的方式自定义原生TimePickerDialog中TimePicker的样式原创 2023-10-09 11:24:34 · 826 阅读 · 3 评论 -
Android:修改原生Loading控件ProgressBar的颜色
indeterminateTint属性声明的就是那个转圈圈的颜色。原创 2023-09-12 10:47:35 · 524 阅读 · 0 评论 -
Android AlertDialog标题居中
网上很多做法都是使用setCustomTitle方法实现的,我偏不,因为我已经找到了标题的textView了,我想就原生的这个titleView做居中原创 2023-08-09 09:50:03 · 1486 阅读 · 0 评论 -
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 · 1224 阅读 · 0 评论 -
Android中AIDL的简单使用(Hello world)
AIDL:Android Interface Definition Language(Android接口定义语言)作用:跨进程通讯。如A应用调用B应用提供的接口原创 2023-05-16 13:38:20 · 5364 阅读 · 1 评论 -
Android12 Launcher3客制化:添加非抽屉模式(可动态切换)、图标自动补位功能
网上的很多博客这个地方都有点不太一样,PendingInstallShortcutInfo都是 InstallShortcutReceiver.PendingInstallShortcutInfo的,但是Android12的代码里面根本就没有InstallShortcutReceiver这个类了,所以全局搜索PendingInstallShortcutInfo发现ItemInstallQueue才有这个类,并且是私有的,我们需要把它改成public。这时候小部件就会消失了,所以我这边还是采取方案二。原创 2023-04-06 16:07:35 · 1923 阅读 · 7 评论 -
Android:startActivityForResult废弃,使用registerForActivityResult
【代码】Android:startActivityForResult废弃,使用registerForActivityResult。原创 2023-04-06 15:38:53 · 809 阅读 · 0 评论 -
Android12 Launcher3 最近任务客制化
实现效果包括 : 修改图标位置+添加应用名称、多任务背景改成壁纸、Task预览图的圆角半径、清除全部按钮移动到底部显示、最近任务为空时的图片、字体颜色、Task预览图缩放效果等原创 2023-02-13 12:03:37 · 2105 阅读 · 6 评论 -
极光JMessage:IM即时通信集成群聊简单实现(无需自己搞后台和数据库)
一、注册极光账号,创建应用网址:首页 - 极光二、集成sdk:1、项目的build.gradle添加mavenCentral():buildscript { repositories { ... mavenCentral() } ...}allprojects { repositories { ... mavenCentral() }}2、app的build.g.原创 2021-12-21 13:07:06 · 3066 阅读 · 0 评论 -
(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 · 3046 阅读 · 0 评论 -
Android原生Switch禁止滑动实现
前言搜遍全网,没有找到对原生控件实现禁止滑动的,全都是自定义view实现。然后自己找到了一个解决方式,可以不重写Switch控件,只用style就能实现。这边先说一下有滑动效果会产生的问题:在注册了监听事件setOnCheckedChangeListener之后,通过代码去setCheck它也会进去change事件里面,但实际上我们不希望这个事件的发生,我们只想纯UI上的变化。网上有两种解决思路:第一种,也是比较笨的方法,setCheck前把change监听设置为null,se.原创 2021-11-04 15:53:01 · 4591 阅读 · 4 评论 -
自定义view之自定义滑动seekbar
搜索自定义seekbar全都是基于原生seekbar都是拖动滑块的,并且点击seekbar某个位置就会跳变到那里,我想要的是跟miui10的那个亮度条那样滑动来调节的,既然没有那就自己动手吧。首先自己要清楚要画出来的是什么样的,这里先看下效果图:实现思路:主要的就是要draw两个原件矩形,一个背景,一个进度的方块,然后通过onTouchEvent来触发滑动改变进度。首先先声明两支笔,一只画背景,一只话进度,然后给笔设置颜色:private Paint bgPaint;pri..原创 2021-08-24 17:02:22 · 1213 阅读 · 0 评论 -
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 · 1685 阅读 · 0 评论 -
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 · 1182 阅读 · 3 评论 -
Android:用MotionLayout布局简单实现过度动画
先看效果:(懒得视频转gif,就截三张图吧)动画前:动画中:动画结束:这里4个view分别做了动画:文字由黑色变红色 拖动圆形块由做到右 宽度改变块的宽度变宽 左下角弹出四个view先了解一下背景:MotionLayout继承自ConstraintLayout,所以布局里面的内容不需要改变,直接替换掉ConstraintLayout也是没有问题的。实现步骤:替换完之后布局会报问题,根据提示,让它自己生成我们的场景文件,并且会有一个属性:原创 2021-07-01 16:22:30 · 682 阅读 · 0 评论 -
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 · 7789 阅读 · 8 评论 -
初学Kotlin之抽象的匿名内部类实现
Java的时候我们一般设置匿名内部类是直接new那个抽象类,然后回自动导入这个类需要实现的方法,例如:他会自动实现里面的三个方法:但是到了Kotlin的时候,刚接触学习Kotlin的小伙伴第一时间会想到java中需要new的在kotlin是不用new的,直接写类名,结果:不会有任何提示。是的,只有一个方法的可以用landau表达式,多个方法的需要每个都实现,这些方法肯定是不可能一个个敲出来的了。很简单,我们只要在前面加上object:...原创 2021-03-01 18:15:36 · 574 阅读 · 0 评论 -
Android:本地音乐文件写入专辑图
网上搜索这个Android写入专辑图的资料少之又少,都是读取的,这里我找到了一个方法,然后自己做了个写入专辑图的小工具,有需要的童鞋可以参考一下。先上效果图:依赖第三方库:jaudiotagger(java)、Okhttpdemo语言:Kotlin不会kotlin的小伙伴别慌,我也是边学kotlin先写的这个demo,看过kotlin基础语法的小伙伴应该还是比较好理解的。核心写入代码://path:本地音乐文件路径;picFile:本地图片文件(网络图片的话我这边的...原创 2021-02-08 16:12:33 · 810 阅读 · 2 评论 -
使用BaseQuickAdapter时RecyclerView嵌套RecyclerView点击事件处理最简单的解决方案
正常情况下,父RecyclerView嵌套子RecyclerView的话,点击子RecyclerView只会响应它自己的点击事件,就算你没有在BaseQuickAdapter里面设置它的点击事件,它也会拦截掉,不响应父列表的点击事件。大家的第一反应就是处理事件分发,让子列表不处理交给外部列表处理点击事件,又或者写一个接口传递给你的父adapter,让它再传给子adapter。都是比较麻烦的处理方式。这里提供另一种思路:点击内部列表调用外部点击事件的方法:@Override protecte.原创 2020-12-18 23:58:31 · 2879 阅读 · 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 · 2071 阅读 · 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 · 3516 阅读 · 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 · 754 阅读 · 0 评论 -
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 · 1683 阅读 · 0 评论 -
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 · 1063 阅读 · 1 评论 -
Android Jetpack开发 —— ViewModel、LiveData、DataBinding简单使用
前言:Jetpack网上一搜全都有解释,在这里我就不介绍Jetpack了,直接给ViewModel、LiveData、DataBinding上例子。注:本文基于AndroidX的项目,本人自己理解的意思做的讲解,有不对或疑惑的地方欢迎评论留言一起学习探讨。一、ViewModel:1、功能:屏幕旋转或者字号改变的时候该Activity数据不会丢失。2、做法:写一个类集...原创 2020-03-24 20:59:50 · 2355 阅读 · 0 评论 -
使用retrofit2时,接口需要登录后请求头里放token解决方案
需求:没有登陆时接口照常使用,登陆后请求数据需要在请求头里带token过去。问题:这个header的声明方式有几种,常见的是在创建单例接口类时就给声明了header,而这个单例在第一次请求数据的时候就创建了,那时候如果没有登陆,那登陆后依然是用的同一个header,就带不过去这个token。另一种就是在声明接口的时候添加@Header()注解,但是这样的话需要每个接口上面都写这个...原创 2020-01-08 17:43:55 · 8101 阅读 · 6 评论 -
Android Studio插件在线、离线安装以及常用插件推荐
安装插件的方法:1、在线安装:设置Setting里面检索plugins:然后就可以搜索插件名称以及安装了。2、离线安装:上图顶部Updates右边那个设置图标:选择下载好的离线插件导入即可(下载好的插件不用解压)。附上插件下载官网:https://plugins.jetbrains.com/插件推荐:1、GsonFormat快速...原创 2020-01-08 16:53:25 · 4272 阅读 · 0 评论 -
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 · 3278 阅读 · 0 评论 -
腾讯bugly集成步骤
集成步骤:1、登录腾讯bugly,创建应用,记下appid,待会要用到2、依赖://腾讯Bugly。其中latest.release指代最新Bugly SDK版本号,也可以指定明确的版本号,例如2.2.0implementation 'com.tencent.bugly:crashreport:latest.release' 最新版版本号可前往这里查看:https://bugl...原创 2019-11-15 18:36:11 · 2046 阅读 · 0 评论 -
RecyclerView高度撑满ScrollView
两步: 把ScrollView换成android.support.v4.widget.NestedScrollView recyclerview.setNestedScrollingEnabled(false); 收工。原创 2019-11-09 16:27:54 · 1322 阅读 · 0 评论 -
Rxjava+Retrofit2上传文件带参数:参数自带引号问题解决
上传文件没问题。上传图文,也就是上传文字和图片的时候,用以下这个代码:@Multipart@POST("xxxxx/images/")Flowable<UpImgAndTextBean> upLoadImgAndText( @Part("title") String title, ...原创 2019-11-09 16:21:52 · 1413 阅读 · 0 评论 -
Android跳转到拨号界面,并且把号码带过去
Intent intent = new Intent();intent.setAction(Intent.ACTION_DIAL);intent.setData(Uri.parse("tel:"+需要带过去的电话号码));startActivity(intent);原创 2019-11-09 16:08:27 · 2042 阅读 · 6 评论 -
Android实现无界面无图标App最简单的方式
背景:有时候你的app只需要一个服务来做一些辅助功能,需要实现以下两个特点:没有界面 图标在不桌面上显示两步走:1、 MainActivity声明中去掉category: <activity android:name=".MainActivity"> <intent-filter> ...原创 2019-09-05 11:12:04 · 13697 阅读 · 1 评论 -
Android利用WindowManager实现悬浮窗
不废话,四步走:1、首先要声明悬浮窗口权限:<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /><uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW"/>2、引导用户打开悬浮窗...原创 2019-09-05 11:39:17 · 1298 阅读 · 0 评论 -
Android NDK:JNI开发之Java调用C、C++方法:Hello word
首先下载好对应的NDK,解压目录配置到Android Studio项目下的local.properties:ndk.dir=C\:\\Users\\aibo\\AppData\\Local\\Android\\Sdk\\ndk-bundlesdk.dir=C\:\\Users\\aibo\\AppData\\Local\\Android\\Sdk方式一:新建项目时选择最后一个...原创 2019-09-05 12:09:08 · 547 阅读 · 0 评论