自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 Effective Kotlin 译文:Chapter3-Item24-泛型的型变

文章翻译自《Effective Kotlin: Best practices》 中的 Chapter 3 - Item24 - Consider variance for generic type

2022-03-31 09:30:00 217

原创 一文了解 Java/Kotlin 中的泛型

阅读本文你将了解: 什么是形变、协变、逆变和抗变,在 Java 和 Kotlin 中如何实现以上形变,以及 Java 和 Kotlin 中泛型的异同

2022-03-31 09:15:00 669

原创 我的 Flutter TDD 心路历程

本文记录了我在 Flutter 中实践 TDD 的一些所思所考,全文根据真实经历,没有改编,仅供参考

2022-03-30 09:30:00 266

原创 使用注解自动生成代码

如何使用注解来消除模板代码?关于 Annotation Processor 还有哪些你不知道的事...

2022-03-29 09:00:00 1882

原创 自定义生命周期以及实现生命周期感知能力

如何让原本不具备生命周期的 View 拥有和Activity/Fragment 一样的 Lifecycle?如何让代码具备生命周期感知能力?

2022-03-28 18:00:00 634

原创 LiveData 非粘性消息的探索和尝试

我们可以使用 LiveData 来发送事件吗?如何使用 LiveData 实现非粘性消息的发送呢?这里分享一些尝试和探索...

2022-03-27 09:15:00 458

原创 手把手教你如何用 100 行代码实现一个有生命周期感知能力的 EventBus

手把手教你如何用 100 行代码实现一个有生命周期感知能力的 EventBus,实现一个能够在生命周期 destroy 的时候自定解绑监听

2022-03-26 09:30:00 221

原创 LiveData 的正确使用姿势以及反模式

你真的会用 LiveData 吗?你了解其中有哪些坑吗?本文将介绍 LiveData 的正确使用姿势以及常见的错误使用方式

2022-03-26 09:15:00 598

原创 Android 图形处理 —— Matirx 方法详解及应用场景

上一篇文章《Matrix 原理剖析》 介绍了 Matrix 的基础原理,本文介绍 Matrix 一些常用方法以及具体的使用场景

2022-03-25 18:15:00 2410

原创 Android 图形处理 —— Matrix 原理剖析

介绍了 Matrix 图形变换的原理,关于平移、缩放、旋转、错切的计算原理,学生时期学习的线性代数和三角函数终于派上用场了...

2022-03-25 18:00:00 4335

原创 使用 Architecture Component 实现 MVVM 的正确姿势

使用 Architecture Component 实现 MVVM 的正确姿势是怎样的?ViewModel 和 LiveData 在使用的时候有什么需要特别注意的?

2022-03-25 09:49:54 2836

原创 关于AlarmManager的一些笔记

1、传入的Intent会被广播传输2、设置闹钟之后会在手机休眠状态也维持,除非关机或重启之后3、onReceive()方法正在执行时,AlarmManager会获得系统的cpu唤醒锁,保证期间手机不休眠4、setExactAndAllowWhileIdle5、setRepeating(int type, long triggerAtMillis, long intervalMill

2017-10-29 16:53:14 431

原创 关于ViewHolder的getLayoutPosition和getAdapterPosition

getLayoutPosition返回布局中最新的计算位置,和用户所见到的位置一致,当做用户输入(例如点击事件)的时候考虑使用getAdapterPosition返回数据在Adapter中的位置(也许位置的变化还未来得及刷新到布局中),当使用Adapter的时候(例如调用Adapter的notify相关方法时)考虑使用

2017-10-27 15:24:38 15918

原创 修改DialogFragment的大小和位置

使用DialogFragment的时候,默认在窗口两侧留有padding,位置在屏幕中间,如果想要修改成在底部以及使窗口宽度铺满屏幕可按照以下代码修改其中在onCreateView中,使用getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE)设置窗口无标题getDialog().getWindow().getAttributes().w

2017-10-18 17:12:52 11267

原创 关于Toolbar和ActionBar的一些坑

最近开发用到了ToolBar和ActionBar,遇到一些坑,这里做一个简单的记录:1.使用ToolBar替换ActionBar: 首先定义一个ToolBar布局<android.support.v7.widget.Toolbar android:id="@+id/toolbar" app:theme="@style/ToolbarTheme" an

2017-10-18 11:40:10 552

原创 关于BitBucket的一个坑:设置SSH

这几天一直在捣鼓Git,玩了各种代码托管平台,GitLab、BitBucket等,其中在BitBucket这里挑了一个巨坑:远程建仓之后,我在本地用ssh的方式测试push一个文件上去,结果出现push失败了,于是我想起我没有设置好ssh,于是打开远程仓库->setting->access keys->add key当时心想着一定就是设置ssh的地方了吧,于是果断把ssh粘贴上

2017-08-11 11:10:55 3862

原创 实现聊天ListView时遇到的几个问题

在做聊天类应用时,聊天消息列表是最为重要的一部分,如何实现新消息到达自动滚动到底部还有打开输入法时界面被遮挡或者ActionBar被顶出去等问题:1、新消息到达自动滚动:只需要设置ListView的transcriptMode属性即可ListView布局文件的实现:<ListView android:id="@+id/chat_list_view" android:la

2017-05-16 13:24:24 443

原创 设置RecyclerView的OnItemClickListener

RecyclerView的出现代替了ListView的“霸主地位”,关于RecyclerView的好处这里不再多说,不过用过RecyclerView的朋友们都知道,这个傲娇的View没有提供setOnItemClickListener方法,如果我们要实现这样的功能该怎么做了,翻遍了网上所有的实现方式,下面介绍两中我觉得还不错的方法。通过ViewHolder传入监听接口:RecyclerView自己提

2016-10-03 14:40:16 598

原创 AndroidStudio中配置GreenDao及其使用

关于GreenDao在AS中的配置方法已经有大神的博客讲得特别的详细,所以急直接贴出他的博客地址了 http://blog.csdn.net/h3c4lenovo/article/details/43566169这里说一下我在按照教程配置的时候遇到的一些问题,貌似是引入实例工程的时候有问题,我直接贴出我改好运行无误之后的gradle:实例工程的build.gradle文件project(':M

2016-09-28 23:25:56 560

原创 用Collections对集合进行增删查改操作

我的上一篇博客说到利用Collections对集合进行排序的方法,那么接下来就说说如何利用Collections来对集合进行增删查改等操作。添加:public static boolean addAll (Collection<? super T> c, T... a) 第一个参数是将要插入数据的集合;第二个参数是要插入的数据,可以是一个也可以是多个。查询:· public static int

2016-09-25 23:03:49 813

原创 通过Comparator和Comparable对集合进行排序

在java编程和Android开发过程中,经常遇到需要对集合进行排序的情况,而Comparator就是专门为此设计的一个接口;如果集合里是实体类的话,那么使用Comparabale接口就更加方便了。下面就说说这两个接口的使用方法。Comparator :假设有这么一个集合list:List<int> list = new ArrayList<>();list.add(8);list.add(5)

2016-09-21 23:03:32 623

空空如也

空空如也

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

TA关注的人

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