- 博客(91)
- 资源 (1)
- 收藏
- 关注
原创 Android12 Launcher3 最近任务客制化
实现效果包括 : 修改图标位置+添加应用名称、多任务背景改成壁纸、Task预览图的圆角半径、清除全部按钮移动到底部显示、最近任务为空时的图片、字体颜色、Task预览图缩放效果等
2023-02-13 12:03:37
403
原创 极光JMessage:IM即时通信集成群聊简单实现(无需自己搞后台和数据库)
一、注册极光账号,创建应用网址:首页 - 极光二、集成sdk:1、项目的build.gradle添加mavenCentral():buildscript { repositories { ... mavenCentral() } ...}allprojects { repositories { ... mavenCentral() }}2、app的build.g.
2021-12-21 13:07:06
2397
原创 【javaFx】使用小记录
textArea自动换行、textArea自动滚动到底部、固定窗口大小、子线程里面更新UI、拖拽文件或文字到窗口上面、文件/文件夹选择器、悬停文本提示、监听文本变化
2021-12-17 09:59:02
193
原创 (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
2759
原创 Android原生Switch禁止滑动实现
前言搜遍全网,没有找到对原生控件实现禁止滑动的,全都是自定义view实现。然后自己找到了一个解决方式,可以不重写Switch控件,只用style就能实现。这边先说一下有滑动效果会产生的问题:在注册了监听事件setOnCheckedChangeListener之后,通过代码去setCheck它也会进去change事件里面,但实际上我们不希望这个事件的发生,我们只想纯UI上的变化。网上有两种解决思路:第一种,也是比较笨的方法,setCheck前把change监听设置为null,se.
2021-11-04 15:53:01
3282
4
原创 自定义view之自定义滑动seekbar
搜索自定义seekbar全都是基于原生seekbar都是拖动滑块的,并且点击seekbar某个位置就会跳变到那里,我想要的是跟miui10的那个亮度条那样滑动来调节的,既然没有那就自己动手吧。首先自己要清楚要画出来的是什么样的,这里先看下效果图:实现思路:主要的就是要draw两个原件矩形,一个背景,一个进度的方块,然后通过onTouchEvent来触发滑动改变进度。首先先声明两支笔,一只画背景,一只话进度,然后给笔设置颜色:private Paint bgPaint;pri..
2021-08-24 17:02:22
618
原创 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
780
原创 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
904
3
原创 Android:用MotionLayout布局简单实现过度动画
先看效果:(懒得视频转gif,就截三张图吧)动画前:动画中:动画结束:这里4个view分别做了动画:文字由黑色变红色 拖动圆形块由做到右 宽度改变块的宽度变宽 左下角弹出四个view先了解一下背景:MotionLayout继承自ConstraintLayout,所以布局里面的内容不需要改变,直接替换掉ConstraintLayout也是没有问题的。实现步骤:替换完之后布局会报问题,根据提示,让它自己生成我们的场景文件,并且会有一个属性:
2021-07-01 16:22:30
384
原创 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
5928
6
原创 初学Kotlin之抽象的匿名内部类实现
Java的时候我们一般设置匿名内部类是直接new那个抽象类,然后回自动导入这个类需要实现的方法,例如:他会自动实现里面的三个方法:但是到了Kotlin的时候,刚接触学习Kotlin的小伙伴第一时间会想到java中需要new的在kotlin是不用new的,直接写类名,结果:不会有任何提示。是的,只有一个方法的可以用landau表达式,多个方法的需要每个都实现,这些方法肯定是不可能一个个敲出来的了。很简单,我们只要在前面加上object:...
2021-03-01 18:15:36
370
原创 Android:本地音乐文件写入专辑图
网上搜索这个Android写入专辑图的资料少之又少,都是读取的,这里我找到了一个方法,然后自己做了个写入专辑图的小工具,有需要的童鞋可以参考一下。先上效果图:依赖第三方库:jaudiotagger(java)、Okhttpdemo语言:Kotlin不会kotlin的小伙伴别慌,我也是边学kotlin先写的这个demo,看过kotlin基础语法的小伙伴应该还是比较好理解的。核心写入代码://path:本地音乐文件路径;picFile:本地图片文件(网络图片的话我这边的...
2021-02-08 16:12:33
502
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
138
2
原创 Java程序员学Kotlin的一些小记录(1):java和kotlin方法互调小思考
Kotlin的函数的参数可以直接传递方法,Java不能,需要通过定义接口,用接口的方式传递。但是Java和Kotlin又可以互调,那如果我们再kotlin的类中定义一个需要参数传方法的函数,然后java去调用它这个函数,会以怎么样的形式传给它呢?我们在kotlin文件中定义一个函数,这个函数需要传递一个字符串和一个方法,这个方法需要传递两个数字,并且返回一个数字:(为方便调用声明为object,相当于java里面的静态类吧,里面的方法都是可直接访问)object TestKotlin{.
2021-01-07 14:50:36
96
原创 使用BaseQuickAdapter时RecyclerView嵌套RecyclerView点击事件处理最简单的解决方案
正常情况下,父RecyclerView嵌套子RecyclerView的话,点击子RecyclerView只会响应它自己的点击事件,就算你没有在BaseQuickAdapter里面设置它的点击事件,它也会拦截掉,不响应父列表的点击事件。大家的第一反应就是处理事件分发,让子列表不处理交给外部列表处理点击事件,又或者写一个接口传递给你的父adapter,让它再传给子adapter。都是比较麻烦的处理方式。这里提供另一种思路:点击内部列表调用外部点击事件的方法:@Override protecte.
2020-12-18 23:58:31
2091
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
1503
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
3234
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
330
原创 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
1276
原创 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
626
原创 Android Jetpack开发 —— ViewModel、LiveData、DataBinding简单使用
前言:Jetpack网上一搜全都有解释,在这里我就不介绍Jetpack了,直接给ViewModel、LiveData、DataBinding上例子。注:本文基于AndroidX的项目,本人自己理解的意思做的讲解,有不对或疑惑的地方欢迎评论留言一起学习探讨。一、ViewModel:1、功能:屏幕旋转或者字号改变的时候该Activity数据不会丢失。2、做法:写一个类集...
2020-03-24 20:59:50
2124
原创 使用retrofit2时,接口需要登录后请求头里放token解决方案
需求:没有登陆时接口照常使用,登陆后请求数据需要在请求头里带token过去。问题:这个header的声明方式有几种,常见的是在创建单例接口类时就给声明了header,而这个单例在第一次请求数据的时候就创建了,那时候如果没有登陆,那登陆后依然是用的同一个header,就带不过去这个token。另一种就是在声明接口的时候添加@Header()注解,但是这样的话需要每个接口上面都写这个...
2020-01-08 17:43:55
6498
5
原创 Android Studio插件在线、离线安装以及常用插件推荐
安装插件的方法:1、在线安装:设置Setting里面检索plugins:然后就可以搜索插件名称以及安装了。2、离线安装:上图顶部Updates右边那个设置图标:选择下载好的离线插件导入即可(下载好的插件不用解压)。附上插件下载官网:https://plugins.jetbrains.com/插件推荐:1、GsonFormat快速...
2020-01-08 16:53:25
3197
原创 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
2777
原创 腾讯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
1791
原创 RecyclerView高度撑满ScrollView
两步: 把ScrollView换成android.support.v4.widget.NestedScrollView recyclerview.setNestedScrollingEnabled(false); 收工。
2019-11-09 16:27:54
1105
原创 Rxjava+Retrofit2上传文件带参数:参数自带引号问题解决
上传文件没问题。上传图文,也就是上传文字和图片的时候,用以下这个代码:@Multipart@POST("xxxxx/images/")Flowable<UpImgAndTextBean> upLoadImgAndText( @Part("title") String title, ...
2019-11-09 16:21:52
1161
原创 Android跳转到拨号界面,并且把号码带过去
Intent intent = new Intent();intent.setAction(Intent.ACTION_DIAL);intent.setData(Uri.parse("tel:"+需要带过去的电话号码));startActivity(intent);
2019-11-09 16:08:27
1505
原创 java:try-catch后写不写finally的区别
相信有小伙伴跟我一样写finally和不写finally,try完或者catch完之后,一样会往后执行,那么写finally的意义何在呢?我先来给出我理解的答案:finally是防止try里面有return语句而发生catch没及时关闭一些东西。经测试,我们发现:try里有return,并且执行到了,也会先把finally执行完再return。而不写finally则直接...
2019-09-24 12:33:24
2766
原创 java中比较两个数组中的元素是否相同
String [] array1 = {"1","2","3"}; String [] array2 = {"3","2","1"}; Arrays.sort(array1); Arrays.sort(array2); if (Arrays.equals(array1, array2)) { System.out.println("两个数组中的元素值相同"); ...
2019-09-24 12:18:50
3807
原创 java:文本、图片的复制粘贴
1、复制文本(把文本放入剪切板中):public void copyTxt(String s){ //获得系统粘贴板 Clipboard clipboard = getToolkit().getSystemClipboard(); //建立一个粘贴板内容实例 StringSelection textInfoSelected = new StringSe...
2019-09-24 12:14:09
1043
原创 java:通过反射实现泛型的实例化(T t = new T())
public D newD(){ D newD; try { // 通过反射获取model的真实类型 ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass(); Class<D>...
2019-09-24 12:02:25
7622
2
原创 BigDecimal加减乘除运算
BigDecimal b1 = new BigDecimal(); BigDecimal b2 = new BigDecimal();加法:b1.add(b2)减法:b1.subtract(b2)乘法:b1.multiply(b2)除法:b1.divide(b2)除法四舍五入:b1.divide(b2, len,BigDecimal.ROUND_HALF_UP)...
2019-09-24 12:00:06
2310
原创 java:字符串某个位置插入一个字符串
StringBuffer sb = new StringBuffer("原字符串");sb.insert(index,"需要插入的字符串");
2019-09-24 11:54:03
4337
3
翻译 Java中的String,StringBuilder,StringBuffer三者的区别
1、首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder > StringBuffer > StringString最慢的原因: String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。2、再来说线程...
2019-09-24 11:51:26
57
原创 Android:H5、web调起App并且传递参数
1、在清单文件的Activity声明里添加:<intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT" /> <category andr...
2019-09-24 11:38:54
2403
1
原创 Android最简单的倒计时:CountDownTimer
原理:内部封装了handler使用:CountDownTimer mCountDownTimer = new CountDownTimer(3000, 1000) { @Override public void onTick(long millisUntilFinished) { String value = String.valueOf((i...
2019-09-24 11:31:08
717
原创 Android权限申请:自带方法 + 第三方库实现
Android自带权限申请方法:1、权限申请:(第二个参数0是requestCode):String [] permission = {Manifest.permission.ACCESS_FINE_LOCATION};if(checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManag...
2019-09-24 11:26:48
3251
原创 Android实现重写父类方法必须调用父类该方法
实现效果:子类中重写init方法,必须使用super.init()调用A类的init方法,否则编译不通过。1、父类A:(你定义的类,供别人继承)class A{ public void init(){ //do something for class A }}2、子类B:(别人的类,继承你的类A)class B extends A{ ...
2019-09-09 14:21:06
3041
android studio常用插件.rar
2020-01-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人