<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[fanketly的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/fanketly</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; fanketly]]></copyright><item><title><![CDATA[毕设分享，使用kotlin（Ktor，Compose）完成全栈开发]]></title><link>https://blog.youkuaiyun.com/fanketly/article/details/145423307</link><guid>https://blog.youkuaiyun.com/fanketly/article/details/145423307</guid><author>fanketly</author><pubDate>Sun, 02 Feb 2025 22:23:42 +0800</pubDate><description><![CDATA[假期闲来无事，打算分享下自己24年完成的毕业设计，使用kotlin（Ktor，Compose）全栈开发的一个ASMR软件。客户端是改造原先一个在线项目，所以会存在两个客户端项目，跨平台部分是新建的项目]]></description><category></category></item><item><title><![CDATA[Android Compose 使用SwipeToDismiss实现滑动删除 及 解决轻扫(小范围快速滑动)触发删除问题]]></title><link>https://blog.youkuaiyun.com/fanketly/article/details/132730533</link><guid>https://blog.youkuaiyun.com/fanketly/article/details/132730533</guid><author>fanketly</author><pubDate>Thu, 07 Sep 2023 09:28:51 +0800</pubDate><description><![CDATA[Android Compose 使用SwipeToDismiss实现滑动删除 及 解决轻扫(小范围快速滑动)触发删除问题]]></description><category></category></item><item><title><![CDATA[关于Android Compose Crossfade 的Bug和使用]]></title><link>https://blog.youkuaiyun.com/fanketly/article/details/129430650</link><guid>https://blog.youkuaiyun.com/fanketly/article/details/129430650</guid><author>fanketly</author><pubDate>Thu, 09 Mar 2023 20:33:15 +0800</pubDate><description><![CDATA[这个Bug很奇怪，有时候会触发，有时候又不触发，最后发现好像是在运行期间对代码进行了修改然后重新安装就会出现这个Bug。anotherThing()函数会被重复执行log也会多次打印，如下。经过多次实验发现，只要是接口类型的就会触发这个问题。如果有大佬知道为什么，欢迎在评论区解答。]]></description><category></category></item><item><title><![CDATA[Android Jetpack Compose 1.3 你开始用了吗，来看看更新了什么吧！]]></title><link>https://blog.youkuaiyun.com/fanketly/article/details/127686679</link><guid>https://blog.youkuaiyun.com/fanketly/article/details/127686679</guid><author>fanketly</author><pubDate>Fri, 04 Nov 2022 12:48:17 +0800</pubDate><description><![CDATA[Android Jetpack Compose 1.3 你开始用了吗，来看看更新了什么吧！]]></description><category></category></item><item><title><![CDATA[Android Compose 音乐日记 练手小项目 配合Ktor使用]]></title><link>https://blog.youkuaiyun.com/fanketly/article/details/127530022</link><guid>https://blog.youkuaiyun.com/fanketly/article/details/127530022</guid><author>fanketly</author><pubDate>Wed, 26 Oct 2022 12:12:18 +0800</pubDate><description><![CDATA[Android Compose 音乐日记 练手小项目 ]]></description><category></category></item><item><title><![CDATA[Android Jetpack Compose 播放器动画]]></title><link>https://blog.youkuaiyun.com/fanketly/article/details/127292273</link><guid>https://blog.youkuaiyun.com/fanketly/article/details/127292273</guid><author>fanketly</author><pubDate>Wed, 12 Oct 2022 22:40:37 +0800</pubDate><description><![CDATA[Android Jetpack Compose 播放器动画]]></description><category></category></item><item><title><![CDATA[Android Jetpack Compose 底部弹窗，拍照，选择文件]]></title><link>https://blog.youkuaiyun.com/fanketly/article/details/127292237</link><guid>https://blog.youkuaiyun.com/fanketly/article/details/127292237</guid><author>fanketly</author><pubDate>Wed, 12 Oct 2022 22:39:11 +0800</pubDate><description><![CDATA[Android Jetpack Compose 底部弹窗，拍照，选择文件]]></description><category></category></item><item><title><![CDATA[Android Compose日期选择器]]></title><link>https://blog.youkuaiyun.com/fanketly/article/details/122015206</link><guid>https://blog.youkuaiyun.com/fanketly/article/details/122015206</guid><author>fanketly</author><pubDate>Sat, 18 Dec 2021 18:01:44 +0800</pubDate><description><![CDATA[由于官方还没有推出日期选择器，我们只能自己制作，或者通过AndoirdView和DatePickerDialog。
下面是我自己制作的一个Compose日期选择器，以下都只能用作学习，还达不到项目使用需要的效果。
将JitPack存储库添加到您的构建文件中(项目根目录下build.gradle文件)
allprojects { repositories { … maven { url ‘https://jitpack.io’ } } }
添加依赖项 dependencies { implementation]]></description><category></category></item><item><title><![CDATA[Android Compose 简易日历]]></title><link>https://blog.youkuaiyun.com/fanketly/article/details/121631316</link><guid>https://blog.youkuaiyun.com/fanketly/article/details/121631316</guid><author>fanketly</author><pubDate>Tue, 30 Nov 2021 14:03:25 +0800</pubDate><description><![CDATA[初学Compose肯定要做些东西来熟悉，接下来我来分享我做的一个简易日历。
首先推荐一个网站，Accompanist是一组库，旨在用开发人员通常需要但尚不可用的功能来补充[Jetpack Compose。]。https://google.github.io/accompanist/pager/
然后是一个库，帮助我们在compose里创建和管理viewmodel
implementation(‘androidx.lifecycle:lifecycle-viewmodel-compose:2.4.0’)
首先]]></description><category></category></item><item><title><![CDATA[Android MaterialCardView使用问题]]></title><link>https://blog.youkuaiyun.com/fanketly/article/details/120687519</link><guid>https://blog.youkuaiyun.com/fanketly/article/details/120687519</guid><author>fanketly</author><pubDate>Sun, 10 Oct 2021 18:22:09 +0800</pubDate><description><![CDATA[本来想学一些MaterialCardView的用法，结果网上的信息太少了，很多都出自同一篇文章抄来抄去。

故本篇记录自己学习MaterialCardView的过程及MaterialCardView的一些使用方法，以下全部使用kotlin演示。
一、checkedIcon图标显示问题
要想图标显示必须设置，缺一不可。

但当设置了点击事件setOnClickListener后可不设置第一个属性，会自动判断并帮你设置。

二、设置波纹颜色
在属性在rippleColor中设置即可。
三、icon的size调整]]></description><category></category></item><item><title><![CDATA[Android RecyclerView适配器控件点击异常或没反应问题（个人笔记）]]></title><link>https://blog.youkuaiyun.com/fanketly/article/details/120411289</link><guid>https://blog.youkuaiyun.com/fanketly/article/details/120411289</guid><author>fanketly</author><pubDate>Wed, 22 Sep 2021 11:18:26 +0800</pubDate><description><![CDATA[Android RecyclerView适配器控件点击异常或没反应问题（个人笔记）
编程时为了方便写了一个抽象类适配器（这种写法是对性能的浪费，不是正确写法，请不要模仿）。
	只贴出问题代码，其他略
 protected abstract void initData(View itemView, T t, int p);
    @Override
    public void onBindViewHolder(@NonNull @NotNull VH holder, int position) {
  ]]></description><category></category></item><item><title><![CDATA[Android安卓 Kotlin Coil图片加载状态监听，点击图片重新加载]]></title><link>https://blog.youkuaiyun.com/fanketly/article/details/118825886</link><guid>https://blog.youkuaiyun.com/fanketly/article/details/118825886</guid><author>fanketly</author><pubDate>Fri, 16 Jul 2021 23:57:30 +0800</pubDate><description><![CDATA[在网了查了好久，也没有相关的文章，可能是我不会搜索吧…
通过查看源码发现了coil设置状态监听方法。
一、在ImageRequest里设置
     b.imageView.load(d) {
            setHeader("Referer", "https://manhua.dmzj.com/update_1.shtml")
            //设置监听
            listener(onError = { request, _ -&gt;
            //设]]></description><category></category></item><item><title><![CDATA[Android安卓 Compose LazyColumn 列表 实现网格列表]]></title><link>https://blog.youkuaiyun.com/fanketly/article/details/116568988</link><guid>https://blog.youkuaiyun.com/fanketly/article/details/116568988</guid><author>fanketly</author><pubDate>Sun, 09 May 2021 19:39:56 +0800</pubDate><description><![CDATA[因为官方LazyVerticalGrid为不稳定版，所以我们不能长期依靠它。因此我们自己写一个网格列表，还能避免列表不能嵌套问题。
写法如下：

  			//要分为几列
            val nColumns = 4
            //rows 总共几行
            val rows = (it.size + nColumns - 1) / nColumns
            LazyColumn() {
                items(rows) { r]]></description><category></category></item><item><title><![CDATA[Android Kotlin作⽤域函数apply/with/run/also/let]]></title><link>https://blog.youkuaiyun.com/fanketly/article/details/114440587</link><guid>https://blog.youkuaiyun.com/fanketly/article/details/114440587</guid><author>fanketly</author><pubDate>Sat, 06 Mar 2021 18:54:05 +0800</pubDate><description><![CDATA[Kotlin的作用域函数有5个之多，让人一开始都不知道怎么去用他们，下面我来用简单明了的例子来告诉你们他们的区别和适用场景。
Kotlin标准库包含⼏个函数，它们的唯⼀⽬的是在对象的上下⽂中执⾏代码块。每个作用域函数有两个主要区别：引⽤上下⽂对象的⽅式和返回值。
一、按对象的方式区分：
run 、with 以及 apply 通过关键字 this 引⽤上下⽂对象。因此，在它们的 lambda 表达式中可以像在普通的类函数中⼀样访问上下⽂对象。适用于主要对对象成员进⾏操作（调⽤其函数或赋值其属性）的 lambd]]></description><category></category></item><item><title><![CDATA[Android DataBinding的正确用法]]></title><link>https://blog.youkuaiyun.com/fanketly/article/details/114413580</link><guid>https://blog.youkuaiyun.com/fanketly/article/details/114413580</guid><author>fanketly</author><pubDate>Fri, 05 Mar 2021 22:29:55 +0800</pubDate><description><![CDATA[注意本文章不适合给未使用过DataBinding的人阅读
一开始用databing大家可能都是怎么方便怎么来，但是学到后面就要开始合理使用了，使用MVVM架构时要遵循MVVM架构。
下面用一个简单的例子来说明常见的错误。
这个例子就是点击按钮后，Model中的likes就+1，然后刷新视图
先建一个Model如下
data class ObservableFieldProfile(
        val name: String,
        val lastName: String,
       ]]></description><category></category></item><item><title><![CDATA[MPAndroidChart图例位置设置]]></title><link>https://blog.youkuaiyun.com/fanketly/article/details/109243574</link><guid>https://blog.youkuaiyun.com/fanketly/article/details/109243574</guid><author>fanketly</author><pubDate>Fri, 23 Oct 2020 15:36:39 +0800</pubDate><description><![CDATA[今天做题发现网上的方法setPosition不存在，查了好久找不到，官方文档也是，只能自己看源码了，
最后找到了设置图例位置的方法。
如下代码：
  源码默认
  private LegendHorizontalAlignment mHorizontalAlignment = LegendHorizontalAlignment.LEFT;
    private LegendVerticalAlignment mVerticalAlignment = LegendVerticalAlignment.BOTT]]></description><category></category></item><item><title><![CDATA[用DataBinding做RecycleView适配器（个人笔记）]]></title><link>https://blog.youkuaiyun.com/fanketly/article/details/108733735</link><guid>https://blog.youkuaiyun.com/fanketly/article/details/108733735</guid><author>fanketly</author><pubDate>Tue, 22 Sep 2020 15:43:11 +0800</pubDate><description><![CDATA[用DataBinding做RecycleView适配器（个人笔记）
使用方法
第一步：继承并传入类型

第二步：实例化并传入List，layout的Id，layout的variable的name，在控件里传入类的数据就可以了



如何设置监听事件

如何返回View

全部代码
/**
 * Created by Android Studio.
 * User: HuangWeiQiang
 * Date: 2020/9/22
 * Time: 14:50
 */
public class DataBin]]></description><category></category></item><item><title><![CDATA[ViewPager切换的简单实现（个人笔记）]]></title><link>https://blog.youkuaiyun.com/fanketly/article/details/106581393</link><guid>https://blog.youkuaiyun.com/fanketly/article/details/106581393</guid><author>fanketly</author><pubDate>Sat, 06 Jun 2020 00:45:08 +0800</pubDate><description><![CDATA[1.根据需求创建View，用集合把他们添加进去
例：
ArrayList&lt;View&gt; views = new ArrayList&lt;&gt;();
        LayoutInflater layoutInflater = LayoutInflater.from(getContext());
        View pager1 = layoutInflater.inflate(R.layout.p15_pager_1, null);
        views.add(pager1)]]></description><category></category></item><item><title><![CDATA[Volley的简单二次封装（个人笔记）]]></title><link>https://blog.youkuaiyun.com/fanketly/article/details/106581224</link><guid>https://blog.youkuaiyun.com/fanketly/article/details/106581224</guid><author>fanketly</author><pubDate>Sat, 06 Jun 2020 00:31:37 +0800</pubDate><description><![CDATA[1.最重要最容易忽略的“注册”，在AndroidManifest中输入 name。
例如：android:name=".Volley.VolleyApplication"
2.创建3个类
①
public class NetworkUtils {
    private static NetworkUtils networkUtils;

    public static NetworkUtils getNetworkUtils() {
        if (networkUtils == null) ]]></description><category></category></item></channel></rss>