<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wusejiege6的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wusejiege6</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wusejiege6]]></copyright><item><title><![CDATA[Android APT]]></title><link>https://blog.youkuaiyun.com/wusejiege6/article/details/119082917</link><guid>https://blog.youkuaiyun.com/wusejiege6/article/details/119082917</guid><author>wusejiege6</author><pubDate>Sun, 25 Jul 2021 15:58:00 +0800</pubDate><description><![CDATA[Android APT注解类型注解的处理运行时注解的处理编译时注解的处理javapoet

APT annotation processing tool 注解处理工具

注解类型
注解语法
注解通过@interface关键字来定义
@Retention(RetentionPolicy.CLASS)
@Target({ElementType.FIELD, ElementType.TYPE})
public @interface MyAnnotation {}

Java中总共有5中元注解：@Retention]]></description><category></category></item><item><title><![CDATA[android 实现返回键执行home键方法]]></title><link>https://blog.youkuaiyun.com/wusejiege6/article/details/118874604</link><guid>https://blog.youkuaiyun.com/wusejiege6/article/details/118874604</guid><author>wusejiege6</author><pubDate>Sun, 18 Jul 2021 11:03:41 +0800</pubDate><description><![CDATA[手机返回键会销毁应用activity页面，再进入activity页面全部重新走生命周期，重新走代码流程。
很多时候我们不一定想退到手机主页就销毁应用页面，仅仅想实现电脑端最小化应用程序的效果。

实现返回键执行home键方法。
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        Intent intent = new Intent(Intent.]]></description><category></category></item><item><title><![CDATA[Android 视频播放器]]></title><link>https://blog.youkuaiyun.com/wusejiege6/article/details/118874280</link><guid>https://blog.youkuaiyun.com/wusejiege6/article/details/118874280</guid><author>wusejiege6</author><pubDate>Sun, 18 Jul 2021 10:52:46 +0800</pubDate><description><![CDATA[视频播放现在算是比较常见的需求了，Github 上也已经有很多很好的开源视频播放器了，比如 Google 家的 ExoPlayer 和 Bilibili 的 ijkplayer，但是对于开发者而言，选择当然是越多越好，所以今天给大家再推荐几个视频播放器。
google/ExoPlayer  star 18k

Bilibili 开源播放器
bilibili/ijkplayer  star 29.1k

CarGuo/GSYVideoPlayer  star 16.5k
基于IJKPlayer（兼容系统Med]]></description><category></category></item><item><title><![CDATA[StickyListHeaders]]></title><link>https://blog.youkuaiyun.com/wusejiege6/article/details/118861559</link><guid>https://blog.youkuaiyun.com/wusejiege6/article/details/118861559</guid><author>wusejiege6</author><pubDate>Sat, 17 Jul 2021 19:43:57 +0800</pubDate><description><![CDATA[要实现下面这种效果，提供2个第三方库给大家。

StickyListHeaders      star 3.7k
timehop/sticky-headers-recyclerview

StickyListHeaders     star 5.5k
emilsjolander/StickyListHeaders
这个库更热，扩展功能更牛

]]></description><category></category></item><item><title><![CDATA[安卓通讯录功能]]></title><link>https://blog.youkuaiyun.com/wusejiege6/article/details/118859977</link><guid>https://blog.youkuaiyun.com/wusejiege6/article/details/118859977</guid><author>wusejiege6</author><pubDate>Sat, 17 Jul 2021 17:35:21 +0800</pubDate><description><![CDATA[RecyclerView实现顶部悬浮、字母排序、过滤搜索最优雅的方式
效果如下
github地址 https://github.com/Poke-MMo/SortRecyclerviewList




]]></description><category></category></item><item><title><![CDATA[点击小图放大至全屏预览]]></title><link>https://blog.youkuaiyun.com/wusejiege6/article/details/118859045</link><guid>https://blog.youkuaiyun.com/wusejiege6/article/details/118859045</guid><author>wusejiege6</author><pubDate>Sat, 17 Jul 2021 16:57:22 +0800</pubDate><description><![CDATA[ZoomPreviewPicture
本项目受Google官方demo Zooming a View 启发，实现了点击小图放大至全屏预览，退出全屏恢复至原来位置这两个过程的动画过渡。 常见应用场景如微信朋友圈照片九宫格和微信聊天图片,视频,gif预览，某些手机系统相册等viewpager图片查看 缩放 拖拽下拉缩小退出（效果同微信图片浏览）

...]]></description><category></category></item><item><title><![CDATA[目前最流行的运行时权限请求框架]]></title><link>https://blog.youkuaiyun.com/wusejiege6/article/details/118858404</link><guid>https://blog.youkuaiyun.com/wusejiege6/article/details/118858404</guid><author>wusejiege6</author><pubDate>Sat, 17 Jul 2021 16:26:31 +0800</pubDate><description><![CDATA[目前最流行的运行时权限请求框架PermissionsDispatcher、RxPermissions和easypermissions的对比
Android6.0版本的一个重大改动就是增加了运行时权限（动态权限）:一些危险的权限不单止要在AndroidMainifest文件声明，还要在运行的时候使用代码来申请，让用户同意才进行授权。
由于Android自带的API使用起来（怎么使用就不写了，网上很多）比较麻烦，所以网上出现了一大堆简化这个过程的开源库，这里介绍目前最流行的三个开源库（GitHub上Star最多]]></description><category></category></item><item><title><![CDATA[仿iOS的PickerView控件]]></title><link>https://blog.youkuaiyun.com/wusejiege6/article/details/118771986</link><guid>https://blog.youkuaiyun.com/wusejiege6/article/details/118771986</guid><author>wusejiege6</author><pubDate>Fri, 16 Jul 2021 00:11:12 +0800</pubDate><description><![CDATA[介绍
这是一款仿iOS的PickerView控件，有时间选择器和选项选择器，新版本的详细特性如下：
——TimePickerView 时间选择器，支持年月日时分，年月日，年月，时分等格式。
——OptionsPickerView 选项选择器，支持一，二，三级选项选择，并且可以设置是否联动 。

支持三级联动
设置是否联动
设置循环模式
支持自定义布局。
支持item的分隔线设置。
支持item间距设置。
时间选择器支持起始和终止日期设定。
支持“年，月，日，时，分，秒”，“省，市，区”等选项的单位（labe]]></description><category></category></item><item><title><![CDATA[AndroidStudio 代码报错（引入红色），但可正常运行解决方法（4种方式）]]></title><link>https://blog.youkuaiyun.com/wusejiege6/article/details/118771877</link><guid>https://blog.youkuaiyun.com/wusejiege6/article/details/118771877</guid><author>wusejiege6</author><pubDate>Fri, 16 Jul 2021 00:00:11 +0800</pubDate><description><![CDATA[AndroidStudio 崩溃，异常，电脑蓝屏等情况下有时会引发代码报错，但又能正常编译。整理出了四种方法，供大家参考。

一、自带清除缓存
点击AndroidStudio菜单File -&gt; Invalidate Caches/Restar… ，在弹出的对话框中点击Invalidate and Restar
。等待AS清理并自动重启。

二、删除user目录下.AndroidStudio中的文件
关闭AndroidStudio，进入C:\Users\xUser.AndroidStudio3.1(3.]]></description><category></category></item><item><title><![CDATA[BadgeRadioButton -- 带角标的RadioButton]]></title><link>https://blog.youkuaiyun.com/wusejiege6/article/details/118771725</link><guid>https://blog.youkuaiyun.com/wusejiege6/article/details/118771725</guid><author>wusejiege6</author><pubDate>Thu, 15 Jul 2021 23:50:05 +0800</pubDate><description><![CDATA[一、概述
本文使用上一篇文章　DrawCenterTextView　的一些知识，如果想要理解，请查看后再看本文
在首页导航菜单栏中，大多数都会有角标表示消息的数量，在网上找了一下，有角标的要么无法实现点击事件，要么就是一个角标样式的 TextView，并没有一个简单的RadioButton的角标设置，决定自定义一个简单的 BadgeRadioButton ,目前仅支持 drawableTop 的按钮，实现的效果如下：

二、实现原理
在 onDraw 方法中，根据 DrawableTop 图标的位置，选择右]]></description><category></category></item><item><title><![CDATA[css占位符]]></title><link>https://blog.youkuaiyun.com/wusejiege6/article/details/118120987</link><guid>https://blog.youkuaiyun.com/wusejiege6/article/details/118120987</guid><author>wusejiege6</author><pubDate>Tue, 22 Jun 2021 22:59:51 +0800</pubDate><description><![CDATA[&amp;#32; == 普通的英文半角空格

&amp;#160; == &amp;nbsp; == &amp;#xA0; == no-break space （普通的英文半角空格但不换行）

&amp;#12288; == 中文全角空格 （一个中文宽度）

&amp;#8194; == &amp;ensp; == en空格 （半个中文宽度）

&amp;#8195; == &amp;emsp; == em空格 （一个中文宽度）

&amp;#8197; == 四分之一em空格 （四分之一中文宽度）

相]]></description><category></category></item><item><title><![CDATA[vue对比其他框架]]></title><link>https://blog.youkuaiyun.com/wusejiege6/article/details/117592267</link><guid>https://blog.youkuaiyun.com/wusejiege6/article/details/117592267</guid><author>wusejiege6</author><pubDate>Sat, 05 Jun 2021 12:43:05 +0800</pubDate><description><![CDATA[这个页面无疑是最难编写的，但我们认为它也是非常重要的。或许你曾遇到了一些问题并且已经用其他的框架解决了。你来这里的目的是看看 Vue 是否有更好的解决方案。这也是我们在此想要回答的。
客观来说，作为核心团队成员，显然我们会更偏爱 Vue，认为对于某些问题来讲用 Vue 解决会更好。如果没有这点信念，我们也就不会整天为此忙活了。但是在此，我们想尽可能地公平和准确地来描述一切。其他的框架也有显著的优点，例如 React 庞大的生态系统，或者像是 Knockout 对浏览器的支持覆盖到了 IE6。我们会尝试着把这]]></description><category></category></item><item><title><![CDATA[为什么 React 还是比 Vue 受欢迎？]]></title><link>https://blog.youkuaiyun.com/wusejiege6/article/details/117591835</link><guid>https://blog.youkuaiyun.com/wusejiege6/article/details/117591835</guid><author>wusejiege6</author><pubDate>Sat, 05 Jun 2021 12:27:41 +0800</pubDate><description><![CDATA[根据《2019 年度JavaScript趋势报告》显示，目前React 在前端领域流行度最高， Vue 排名位居第二，但从“使用过并且将再次使用”的比例来看，Vue和React相比仍有不小差距。


React之所以这么受欢迎，得益于它自身优势：

灵活性和响应性：React提供最大的灵活性和响应能力。
虚拟DOM：由于它基于文档对象模型，因此它允许浏览器友好地以HTML，XHTML或XML格式排列文档。
可扩展性：由于其灵活的结构和可扩展性，React已被证明对大型应用程序更好。
不断发展： React得]]></description><category></category></item><item><title><![CDATA[AndroidStudio4.1不提示编码错误，运行时才会报错]]></title><link>https://blog.youkuaiyun.com/wusejiege6/article/details/117432267</link><guid>https://blog.youkuaiyun.com/wusejiege6/article/details/117432267</guid><author>wusejiege6</author><pubDate>Mon, 31 May 2021 23:19:45 +0800</pubDate><description><![CDATA[AndroidStudio4.1不提示编码错误，运行时才会报错
第一种情况
在C:\Users\Administrator\AppData\Roaming\Google\AndroidStudio4.1目录下删除plugins文件，然后重启androidstudio

第二种情况
可能是androidstudio的省电模式被开启了，只需要把省点模式关掉即可，如图的 Power save Mode给取消选中就行了


...]]></description><category></category></item><item><title><![CDATA[Kotlin系列之let、with、run、apply、also函数的使用]]></title><link>https://blog.youkuaiyun.com/wusejiege6/article/details/116724546</link><guid>https://blog.youkuaiyun.com/wusejiege6/article/details/116724546</guid><author>wusejiege6</author><pubDate>Fri, 14 May 2021 00:10:37 +0800</pubDate><description><![CDATA[简述:
相比Java, Kotlin提供了不少高级语法特性。对于一个Kotlin的初学者来说经常会写出一些不够优雅的代码。在Kotlin中的源码标准库(Standard.kt)中提供了一些Kotlin扩展的内置函数可以优化kotlin的编码。Standard.kt是Kotlin库的一部分，它定义了一些基本函数。 这个源代码文件虽然一共不到50行代码，但是这些函数功能都非常强大。
一、回调函数的Kotin的lambda的简化
在Kotlin中对Java中的一些的接口的回调做了一些优化，可以使用一个lambda]]></description><category></category></item><item><title><![CDATA[Kotlin 不再使用 findViewById 的原理探析]]></title><link>https://blog.youkuaiyun.com/wusejiege6/article/details/116722070</link><guid>https://blog.youkuaiyun.com/wusejiege6/article/details/116722070</guid><author>wusejiege6</author><pubDate>Wed, 12 May 2021 21:50:51 +0800</pubDate><description><![CDATA[使用过 Kotlin 的都知道， Kotlin 一个非常棒的特性是：可以在 .kt 文件中直接使用控件的 ID 对控件进行操作。而 Java 代码中，需要像先式声明控件，再使用 findViewById() 来找到控件，然后才能操作该控件。该特性称为Static Layout Import，即静态布局引入。
举个栗子，假设某个 activity 的 xml 文件： activity_main.xml 中有个 TextView 控件，其 ID 定为 tv_name ，在对应的 .kt 文件中将布局如下引入进来]]></description><category></category></item><item><title><![CDATA[2021年4月程序员工资统计，平均14596元。南京程序员收入挤进一线。]]></title><link>https://blog.youkuaiyun.com/wusejiege6/article/details/116424545</link><guid>https://blog.youkuaiyun.com/wusejiege6/article/details/116424545</guid><author>wusejiege6</author><pubDate>Wed, 05 May 2021 14:04:39 +0800</pubDate><description><![CDATA[2021年4月全国招收程序员456577人。2021年4月全国程序员平均工资14596元，工资中位数12500元，其中96%的人的工资介于2500元到65000元。
城市




排名
city
平均工资
最低工资
中位数
最高工资
招聘人数
百分比




1
北京
18166
5250
16000
45000
38742
9.36%


2
上海
17470
5250
16500
44165
75834
18.32%


3
深圳
16943
5250
15500
45000
64389
15.55%
]]></description><category></category></item><item><title><![CDATA[LinearLayout 获取子元素,并分别给子元素赋值实现]]></title><link>https://blog.youkuaiyun.com/wusejiege6/article/details/116277712</link><guid>https://blog.youkuaiyun.com/wusejiege6/article/details/116277712</guid><author>wusejiege6</author><pubDate>Thu, 29 Apr 2021 21:49:57 +0800</pubDate><description><![CDATA[java类实现
对LinearLayout   里面所有没有标明id的TextView进行赋值
LinearLayout  thisNoLayout = findViewById(R.id.ly_this_no);
//因为父控件中写的是五个TextView,所有这里的getChildCount也是五个
String resultArray=new  String[]{"a","b","c","d","e"};
for (int i = 0; i &lt; thisNoLayout.getChildCoun]]></description><category></category></item><item><title><![CDATA[访问者模式一篇就够了]]></title><link>https://blog.youkuaiyun.com/wusejiege6/article/details/116082731</link><guid>https://blog.youkuaiyun.com/wusejiege6/article/details/116082731</guid><author>wusejiege6</author><pubDate>Sat, 24 Apr 2021 10:33:29 +0800</pubDate><description><![CDATA[访问者模式介绍
最复杂的设计模式，并且使用频率不高，《设计模式》的作者评价为：大多情况下，你不需要使用访问者模式，但是一旦需要使用它时，那就真的需要使用了。
访问者模式是一种将数据操作和数据结构分离的设计模式。（觉得太抽象，可以看下面的例子）。

访问者模式的使用场景

对象结构比较稳定，但经常需要在此对象结构上定义新的操作。
需要对一个对象结构中的对象进行很多不同的并且不相关的操作，而需要避免这些操作“污染”这些对象的类，也不希望在增加新操作时修改这些类。


访问者模式的UML类图

角色介绍

Vis]]></description><category></category></item><item><title><![CDATA[Android 高版本API方法在低版本系统上的兼容性处理]]></title><link>https://blog.youkuaiyun.com/wusejiege6/article/details/116075522</link><guid>https://blog.youkuaiyun.com/wusejiege6/article/details/116075522</guid><author>wusejiege6</author><pubDate>Fri, 23 Apr 2021 23:30:17 +0800</pubDate><description><![CDATA[下面这段代码在5.0手机上崩溃了
注意代码  @RequiresApi(api = Build.VERSION_CODES.M)
@RequiresApi(api = Build.VERSION_CODES.M)
private static boolean isIgnoringBatteryOptimizations(Context context) {
    boolean isIgnoring = false;
    PowerManager powerManager = (PowerManage]]></description><category></category></item></channel></rss>