自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Gyso的博客

Android 怪兽N

  • 博客(47)
  • 收藏
  • 关注

原创 一步步实现这个炫酷的树状节点图自定义控件

本文介绍了我实现自定义树状节点图控件的原理及一些效果展示,欢迎交流简介Tree View; Mind map; Think map; tree map; 树状图;思维导图;github连接: https://github.com/guaishouN/android-tree-view.git目前没发现比较好的Android树状图开源控件,于是决定自己写一个开源控件,对比了一下市面上关于思维导图或者树状图显示(如xMind,mind master等)的app,本文开源框架并不逊色。实现这个树状图过.

2021-06-18 18:05:18 2040 19

原创 开源Android自定义思维导图控件ThinkMap树状图TreeView(类似xMind那种效果)

GysoTreeViewTree View; Mind map; Think map; tree map; 树状图;思维导图;目前没发现比较好的Android树状图开源控件,于是决定自己写一个开源控件,对比了一下市面上关于思维导图或者树状图显示(如xMind,mind master等)的app,本文开源框架并不逊色。本控件实现了丝滑的放缩、移动、自动动画回归屏幕中心、子节点布局自定义等优点。github连接: https://github.com/guaishouN/android-tree-view

2021-05-10 21:41:01 4382 26

原创 EdgeEffect的使用(在自定义ScrollView中使用)

文章目录前言EdgeEffect是什么EdgeEffect的一些方法说明EdgeEffect在项目中的使用说明1 初始化配置3 状态控制4 绘制效果总结前言在写OverScroller使用(自定义一个ScrollView)的文章时,觉得EdgeEffect的使用有必要单独提出来做说明,主要是在一些可以滑动或放缩的自定义ViewGroup类控件中经常用到,并且是用来提示用户已经滑动到边界的。比较常见的例子就是ScrollView,当滑动到边界时就会在边界延申出一部分颜色弧形边块。本文代码例子(OverSc

2021-05-07 11:25:43 1455 4

原创 使用ffplay播放scrcpy server 视频流

ffplay 直接播放 scrcpy server 视频流

2023-08-04 17:04:04 872

原创 Cmder最新版--打开慢 删除字符残留问题

打开后左下角跳动显示findstr.exe cmd.exe git.exe,很久后才能正常输入。:搜索将所有将 “λ” 代替为 “$” , 重新打开cmder;**解决方案:**关闭更新检查及运行dll注入(如下二图)首先,使用文本查看工具打开Cmder目录下的。找到类似这样的地方,在后面加一句。, 重新打开cmder;

2023-07-04 16:13:03 1546

原创 mitmproxy抓包原理

讲述了github开源mitmproxy的https抓包原理

2023-06-22 16:35:41 1368

原创 如何开发JetBrains插件

如果您还没有安装 IntelliJ IDEA,从官方网站下载并安装 IntelliJ IDEA Community Edition(免费)或 Ultimate Edition(付费)。现在,您可以通过点击 IntelliJ IDEA 工具栏中的 “Run” 或 “Debug” 按钮运行或调试插件。审核通过后,其他用户就可以通过 IntelliJ IDEA 的插件市场安装您的插件了。在 “Name” 中输入配置名称(例如 “MyPlugin”)选择 “File” > “New” > “Project…

2023-03-31 14:07:24 734

原创 GPT4对比GPT3

继GPT3后,OPENAI又推出了GPT-4,它是OpenAI最新的深度学习里程碑之一,它是一个大型多模态模型,能够接受图像和文本输入,并产生文本输出。例如,通过模拟律师考试,GPT-4的分数在应试者的前10%左右,而GPT-3.5的得分在倒数10%左右。例如,通过模拟律师考试,GPT-4的分数在应试者的前10%左右,而GPT-3.5的得分在倒数10%左右。GPT-4使用更多的参数和计算资源来进行训练和推理,因此它可以更准确地模拟语言和其他多模态输入,并生成更准确的输出。这是GPT-3所不具备的功能。

2023-03-15 14:22:56 802

原创 新建分支并推送到远程仓库

git 新建分支 推送分支 远程仓库

2022-12-01 11:37:44 260

原创 Vim常用指令

Vim命令模式:1 移动光标0 光标移动到行首$ 将光标移动到行尾vi PageUp/PageDown 上下翻屏H Head 将光标移动到屏幕顶端M 将光标移动到屏幕的中间L 将光标移动到屏幕底端w或W 将光标移动到下一个单词G 将光标移动到文件尾行gg 将光标移动到文章行首2 复制粘yy或Y 复制光变所在的整行 2yy y2y 6yy 复制 n行y^ y0 复制至行首,不含光标所在处字符y$复制至行尾,含光标所在处字符yw 复制一个word 是从光标所在位置开始复制y2

2021-11-07 16:16:27 161

原创 (最新)开源Android github项目到Maven上详细过程

文章目录简介1开源项目上传到github2 sonatype创建问题3创建密钥对并上传到服务4配置library的gradle文件5 处理maven开源状态,并通知管理员同步6 等待同步,测试Maven仓库同步7 总结简介我开源了一个Android树状图控件到github, 然后也想用implementation 'io.github.guaishoun:gyso-treeview:1.0.1'这种方式给别人使用,根据sonatype推荐的Android gradle方式一直没成功。最终通过学习别人开源

2021-08-17 09:28:54 442

原创 kotlin中使用Java接口,报错Parameter specified as non-null is null

文章目录简述问题原因分析解决方案简述kotlin中使用Java接口,报错Parameter specified as non-null is null问题2021-07-06 09:33:35.053 2317-2317/com.lqbs.piot E/AndroidRuntime: FATAL EXCEPTION: main Process: com.lqbs.piot, PID: 2317 java.lang.NullPointerException: Parameter spe

2021-07-06 11:45:35 4150

原创 Android一键换肤原理简述

简介Android对应用进行换肤操作,首先要生成一个对应的皮肤包,在要换肤的应用中收集需要换肤的控件,获取皮肤包里的资源,一键换肤时遍历View树,对要换肤的控件进行换肤。下面总结为4个步骤步骤1 通过Activity.onCreateView()或 实现LayoutInfaltor.Factory2接口 创建收集可换肤控件​ 这项工作应该在YourActivity.class或者BaseActivity.class或者LifecycleObserver.class中实现。这个步骤的实现自行搜索。

2021-07-02 15:57:19 474

原创 This project uses AndroidX dependencies, but the ‘android.useAndroidX‘ property is not enabled

错误:Execution failed for task ':banner:generateDebugRFile'.> This project uses AndroidX dependencies, but the 'android.useAndroidX' property is not enabled. Set this property to true in the gradle.properties file and retry. The following AndroidX dep

2021-06-25 16:01:38 1249 1

原创 侧滑Activity返回原理剖析

文章标题简介Slidr使用示例步骤一 重新包裹界面步骤二 使用`ViewDragHelper.class`处理滑动手势步骤三 在ViewDragHelper.Callback中处理我们的界面的拖动总结简介使用侧滑Activity返回很常见,例如微信就用到了。那么它是怎么实现的呢。本文带你剖析一下实现原理。我在github上找了一个star有2.6k的开源,我们分析他是怎么实现的//star 2.6k'com.r0adkll:slidableactivity:2.0.5'Slidr使用示例它

2021-06-24 10:58:50 220 1

原创 Kotlin的lateinit

文章目录简介注意点Kotlin源码及生成Java对比简介lateinit是延迟初始化属性修饰符,只能修饰var,因为需要在构造方法外修饰它的值,而val属性会被编译成final修饰的字段属性。尽管这个属性是非空的类型,你也不必再构造函数中初始化它。如果在属性被初始化前就访问它,会得到异常“lateinit property has not been initialized”。注意点lateinit属性常见的用法是依赖注入。在这种情况下,lateinit属性的值是被依赖注入框架从外部设置的。Kotl

2021-06-10 00:25:14 1589 2

原创 Android的clickable与事件分发关系详解

文章目录Android的clickable与事件分发关系详解简介设置影响设置Clickable与onTouchEvent(MotionEvent event)的关系总结Android的clickable与事件分发关系详解简介Android里的View都可以通过clickable设置是否可以点击,对于点击及Android事件分发及处理理解有非常重要的作用。长话短说,开始吧。设置影响clickable是用于设置是否允许view的点击事件的配置标识,如果clickable=true那么"pressed"

2021-06-07 10:53:54 1602 3

原创 Kotlin用@Parcelize实现序列化Parcelable

文章目录简介使用总结简介在Android项目中经常要对Bean进行Parcelable序列化,也有很多序列化工具。Android中提倡通过实现Parcelable来对对象序列化,但是如果是使用Java开发实现起来就比较繁琐,而Kotlin提供了@Parcelize,可以轻松实现对Bean的序列化及反序列话。先看看官方对@Parcelize的解析:/** * Instructs the Kotlin compiler to generate `writeToParcel()`, `describeCo

2021-06-04 13:13:28 2189 2

原创 Android面试题总结(一天搞一个吧)

方法参数以及不同的返回值的意义ListView中如何使不同的Item加载不同的样式ListView中convertview的作用以及意义RecyclerView与ListView的区别如何解决ListView异步加载图片的问题ContentProvider的用法,详细到方法跨进程通信的方式AIDL原理Binder原理,详细到方法启动一个Server和绑定Server的区别举例Server和绑定Server的不同使用场景IntentServer与普通Server的区别IntentSe.

2021-06-03 16:11:27 292 3

原创 EditText设置下划线、提示字颜色、输入字体颜色及问题

显示正确设置想要设置EditText的下划线、提示字颜色、输入字体颜色,可以通过设置xml属性android:theme="@style/MyEditTextStyle",例如 <EditText android:id="@+id/password" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart

2021-06-02 20:10:45 11262 7

原创 Kotlin协程的原理,没有说得比AndroidDeveloper官方更显浅的了

引自 AndroidDeveloper https://developer.android.google.cn/kotlin/coroutines文章目录Kotlin协程原理特点实现原理调度程序线程Kotlin协程原理协程是一种并发设计模式,您可以在 Android 平台上使用它来简化异步执行的代码。AndroidDeveloper说得很明白,对于入门,务必请到https://developer.android.google.cn/kotlin/coroutines特点协程是我们在 Andr.

2021-06-02 09:41:55 1141 3

原创 Kotlin的Any 和Java的Object对比

Any 和Any?根类型Object:在Java中,Object是Java类层级的根,是所有引用类的超类,即引用类型的根,而基本数据类型像int、float、boolean等则不是类层级的结构的一部分。这意味着当你需要使用Object的时候,你必须使用Java.lang.Integer这样的包装类来表示基本数据类型的值。AnyAny类型是Kotlin所有非空类型的超类型(非空类的根),包含像Int这样的基本数据类型。在Kotlin中,把基本类型的值直接赋值给Any类的变量时会自动装箱va

2021-06-02 00:34:44 2676 1

原创 Kotlin的静态常量写法

Kotlin的静态常量写法有两种1 放到class外2 companion object//1 放到class外private const val UNSPLASH_STARTING_PAGE_INDEX = 1class MyObject{ ...}//2 companion objectclass MyObject{ ... companion object { private const val NETWORK_PAGE_SIZE = 25

2021-06-01 09:28:04 1469 1

原创 fitsSystemWindows的作用

布尔型内部属性,根据系统窗口(如状态栏)调整视图布局。如果为true,则调整此视图的填充,使系统窗口留出空间可以显示状态栏及导航栏。仅当此视图处于非嵌入式活动时才生效,即使在Acitivity的根布局才有效,在Fragment中的根布局设置是无效的。<!-- Boolean internal attribute to adjust view layout based on system windows such as the status bar.If true, adjusts the paddi

2021-05-31 21:25:57 643 3

原创 WindowAnimationStyle

WindowAnimationStyle主题中定义窗口window或Activity的进入退出动画集合,用于theme的Style,例如/res/styles.xml下 <!-- Base application theme. --> <style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here..

2021-05-30 23:48:51 1440 2

原创 Java字节流转字符串处理

字节流转字符串处理public class ByteUtil { public static String byteBufferToString(ByteBuffer buffer) { CharBuffer charBuffer = null; try { Charset charset = Charset.forName("UTF-8"); CharsetDecoder decoder = charset.newDecoder.

2021-05-30 08:50:34 1533 2

原创 Android SDK packages some licences have not been accepted

You have not accepted the license agreements of the following SDK componentsFailed to install the following Android SDK packages as some licences have not been accepted问题Caused by: org.gradle.api.GradleException: Failed to install the following Androi.

2021-05-27 16:01:40 403 2

原创 Room@Dao编译跳转报错解决-没有用到的Dao会这样

Room@Dao编译跳转报错解决-没有用到的Dao会这样编译提示> Task :user_lib:compileDebugJavaWithJavac����: Current JDK version 1.8.0_221-b11 has a bug (https://bugs.openjdk.java.net/browse/JDK-8007720) that prevents Room from being incremental. Consider using JDK 11+ or the .

2021-05-27 10:29:15 2171 1

原创 Android两种方法使用BottomSheet

目录方法1 BottomSheetBehavior方法2 BottomSheetDialog方法1 BottomSheetBehavior#xml #app:behavior_hideable="true" 这个不用会闪退#app:behavior_peekHeight弹出高度<?xml version="1.0" encoding="utf-8"?><androidx.coordinatorlayout.widget.CoordinatorLayout ..

2021-05-26 20:42:38 987 1

原创 通过设置Activity的Theme来优化App启动白屏问题

通过设置Activity的Theme来优化App启动白屏问题文章目录简介优化步骤总结简介App冷启动时,系统会立刻加载AppTheme设置的WindowBackground, 但是系统主题默认白屏(Light)或者黑屏(Dark),然后才开始走App的启动流程,所以跟据情况如果冷启动Application的onCreate()比较耗时就会看到白白屏比较久。所以有以下几种方法:1 Application.onCreate();2 先设置启动ActivityWindowBackground为透明,.

2021-05-25 20:33:29 684 4

原创 在AS中Kotlin与Java互转

在AS中Kotlin与Java互转Kotlin转Java打开Kotlin文件菜单:Tools–> Kotlin—>Show Kolin Bytecode–>DecompileJava转Kotlin打开Java文件菜单:Code–>Convert Java File to Kotlin File或快捷键 Ctrl+Alt+Shift+K

2021-05-21 15:36:21 2151 1

原创 Android Jetpack ROOM 的Dao返回LiveData<Bean>封装及Bean普通的区别

Android Jetpack ROOM 的Dao返回LiveData<Bean>及Bean的区别, LiveData封装与普通没有封装的区别文章目录简介Room框架生成代码使用区别重点总结简介使用Android Jetpack ROOM时,我们会定义Dao的查询返回,LiveData<Bean> 是配合MVVP开发模式返回,普通的直接查询返回Bean或者Beans适合普通查询返回。LiveData是带有生命周期的封装,在ViewModel、AndroidViewModel.

2021-05-21 11:46:49 544 3

原创 Android ROOM编译时提示错误Schema export directory is not provided to the annotation processor so we cannot

目录问题解决说明问题Android ROOM编译时提示错误Schema export directory is not provided to the annotation processor so we cannot export the schema. You can either provide room.schemaLocation annotation processor argument OR set exportSchema to false.但是能编译通过。解决添加@Database

2021-05-21 09:36:40 5670 5

原创 Android SQLite在应用中数据保存查询,但是拷贝的xxx.db没有数据或没有更新,.db_wal和.db_shm文件

Android SQLite在应用中数据保存能查询,但是拷贝的xxx.db没有数据或没有更新问题,.db_wal和.db_shm文件是什么文章目录问题原因解决方法SQLite的.db_wal和.db_shm文件问题拷贝ROOM数据库data/data/com.xxx.xxx/databases/xxx.db到Windows下,使用DB browser for SQLite工具打开,发现数据没有更新。但是debug应用,使用ROOM保存数据,保存成功并且能查询到数据,但是拷贝出来的xxx.db就是没.

2021-05-21 09:28:44 1674 2

原创 自定义树状图GysoTreeView控件的直角线实现

简介本文主要是在开源树状图GysoTreeView控件上添加直角线实现,丰富原来框架的节点间的画线样式。github连接: https://github.com/guaishouN/android-tree-view.gitgitee连接:https://gitee.com/guaishoun/gyso_tree_view.git实现思想在fromView中获得起点,在toView中获得终点,然后在使用1/3的父节点与子节点间隙,计算中间直角插值。画线时,主要使用Path的lineTo和move

2021-05-18 18:05:23 762 6

原创 Android资源文件夹anim和animator文件夹的区别

文章目录主要区别anim文件夹下的补间控制xmlanim文件夹下的插值器xmldrawable文件夹下的帧动画xmlanimator文件夹下的属性动画xml总结主要区别Android资源文件夹anim和animator都是放置动画相关的xml文件。这里简要说明一下,Android中动画分为属性动画和视图动画两大类,其中视图动画又分帧动画和补间动画。对于动画资源文件,官方动画也有详细说明,本文归纳总结思路更清晰。文件夹anim和animator其中主要区别在于:anim文件夹:放置补间动画相关的xm

2021-05-18 16:27:24 2877 9

原创 Android开发常用网站

文章目录重要SVG地图下载Gradle贝塞尔曲线在线画图一般网络课程相关重要Android 开发官网:https://developer.android.google.cn/Android源码在线查看:https://www.androidos.net.cn/sourcecodeAndroid源码在线查看:http://androidxref.com/Material Design:https://www.mdui.org/design/|https://material.io/component

2021-05-17 21:39:35 1380 2

原创 Android Jetpack的导航组件(Navigation组件)的使用

文章目录简介怎么找到NavController导航图的定义怎么跳转总结简介导航是指支持用户导航、进入和退出应用中不同内容片段的交互。Android Jetpack 的导航组件可帮助您实现导航,无论是简单的按钮点击,还是应用栏和抽屉式导航栏等更为复杂的模式,该组件均可应对。其实最最重要的是,使页面跳转管理变得非常方便。底层原理还是FragmentManager管理,Navigation组件封装了一层。导航组件由以下三个关键部分组成:导航图:在一个集中位置包含所有导航相关信息的 XML 资源。这包括应

2021-05-17 21:22:58 1067 8

原创 使用SpringAnimation实现弹簧联动

使用SpringAnimation实现弹簧联动文章目录使用SpringAnimation实现弹簧联动简介添加库使用SpringForce设置弹簧效果总结简介弹簧效果动画SpringAnimation与甩动效果动画FlingAnimation使用上很类似,主要区别在于FlingAnimation是根据甩动动作fling提供的速度和摩擦力来控制动画,而SpringAnimation是根据弹簧的刚度、阻尼、目标终点三个因素来实现弹簧动画效果。所以对于弹簧动画,设置刚度Stiffness、阻尼DampingR

2021-05-13 13:12:02 329 1

原创 使用AnimatedVectorDrawable为按键icon改变添加动画

文章目录简介定义步骤总结简介AnimatedVectorDrawable(矢量可绘制对象)是一种无需像素化或进行模糊处理即可缩放的可绘制对象。借助AnimatedVectorDrawable类以及用于实现向后兼容的AnimatedVectorDrawableCompat,可以为矢量可绘制对象的属性添加动画效果,例如旋转或更改路径数据以将其变为其他图片。可以与帧动画 AnimationDrawable划为一类,动画可绘制图像。项目地址:https://gitee.com/guaishoun/animat

2021-05-11 17:47:23 568 3

空空如也

空空如也

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

TA关注的人

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