<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[m0_66070663的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/m0_66070663</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; m0_66070663]]></copyright><item><title><![CDATA[DayNight Mode实现Android夜间模式，android音频播放器]]></title><link>https://blog.youkuaiyun.com/m0_66070663/article/details/122372451</link><guid>https://blog.youkuaiyun.com/m0_66070663/article/details/122372451</guid><author>m0_66070663</author><pubDate>Fri, 07 Jan 2022 21:07:16 +0800</pubDate><description><![CDATA[资源细分
首先我们看一看一个界面需要控制哪些颜色：

而除了上述基本需要控制的窗口颜色外，布局中受影响的还会有一些文本和图像。一般的，白天/夜间模式涉及到的显示状态的切换最基本改变影响就是这些文本、icon图标、整体的背景颜色等。
首先我们在colors.xml中设置好这些颜色，代码如下：
白天模式：
&lt;?xml version="1.0" encoding="utf-8"?&gt;


@android:color/black

@android:color/white

#FF9600
#FF96]]></description><category></category></item><item><title><![CDATA[Dart语法——看这一篇就够了，互联网行业“中年”危机]]></title><link>https://blog.youkuaiyun.com/m0_66070663/article/details/122372407</link><guid>https://blog.youkuaiyun.com/m0_66070663/article/details/122372407</guid><author>m0_66070663</author><pubDate>Fri, 07 Jan 2022 21:04:26 +0800</pubDate><description><![CDATA[var myarea = _area(2,3);
print(myarea);
print(area2(2));
print(area3(2, height: 1, judge: false));
}
num _area(num width, num height) {
return width * height;
}
// 使用@required来标注必须参数
num area1({@required num width, @required num height}) {
return width * h]]></description><category></category></item><item><title><![CDATA[Code Review&编程习惯，2021最新Android算法相关面试大全]]></title><link>https://blog.youkuaiyun.com/m0_66070663/article/details/122372378</link><guid>https://blog.youkuaiyun.com/m0_66070663/article/details/122372378</guid><author>m0_66070663</author><pubDate>Fri, 07 Jan 2022 21:03:01 +0800</pubDate><description><![CDATA[凡是会抛出异常的地方都进行捕获，你可以在catch中处理异常，如果不想处理则throw这个异常，由调用者去try-catch处理:

涉及到资源关闭的记得在finally中关闭资源：

另外不要在循环体中捕获异常，放在最外层，以提升性能。
2. 空指针，千万不要理所当然的以为一个对象不会为空，在使用一个变量之前一定要进行判空处理，做好充分的容错处理。
3. 数组越界，使用数组、List之前检查索引和长度。
4. 魔鬼数字：直接写在代码里的数字，一定要用常量符号代替。


5. 对于可以复用的部分，提取成共.]]></description><category></category></item><item><title><![CDATA[ButterKnife实现原理，Android插件化主流框架和实现原理]]></title><link>https://blog.youkuaiyun.com/m0_66070663/article/details/122372355</link><guid>https://blog.youkuaiyun.com/m0_66070663/article/details/122372355</guid><author>m0_66070663</author><pubDate>Fri, 07 Jan 2022 21:01:36 +0800</pubDate><description><![CDATA[可用注解和反射实现

拿BindView为例：首先创建BindView注解，参数为默认 int value()

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@interface BindView {
int value();
}

在相应的类中进行引用：

@BindView(R.id.text1)
TextView textView1;
@BindView(R.id.text2)
TextView textView2;

]]></description><category></category></item><item><title><![CDATA[BaseUrlManager 的设计初衷主要用于开发时，有多个环境需要打包 APK 的场景]]></title><link>https://blog.youkuaiyun.com/m0_66070663/article/details/122372328</link><guid>https://blog.youkuaiyun.com/m0_66070663/article/details/122372328</guid><author>m0_66070663</author><pubDate>Fri, 07 Jan 2022 21:00:11 +0800</pubDate><description><![CDATA[implementation ‘com.king.base:base-url-manager:1.0.0’
Lvy:



如果 Gradle 出现 implementation 失败的情况，可以在 Project 的 build.gradle 里面添加如下：（也可以使用上面的 GitPack 来 implementation）
allprojects {
repositories {
maven { url ‘https://dl.bintray.com/jenly/maven’ }
}
}
引入的库：
]]></description><category></category></item><item><title><![CDATA[AsyncTask源码分析，安卓开发面试书籍]]></title><link>https://blog.youkuaiyun.com/m0_66070663/article/details/122372280</link><guid>https://blog.youkuaiyun.com/m0_66070663/article/details/122372280</guid><author>m0_66070663</author><pubDate>Fri, 07 Jan 2022 20:57:22 +0800</pubDate><description><![CDATA[public final AsyncTask&lt;Params, Progress, Result&gt; execute(Params… params) {
return executeOnExecutor(sDefaultExecutor, params);
}
public final AsyncTask&lt;Params, Progress, Result&gt; executeOnExecutor(Executor exec,
Params… params) {
if (mStatus != ]]></description><category></category></item><item><title><![CDATA[AnnotationProcessor 处理器不工作怎么定位？]]></title><link>https://blog.youkuaiyun.com/m0_66070663/article/details/122282474</link><guid>https://blog.youkuaiyun.com/m0_66070663/article/details/122282474</guid><author>m0_66070663</author><pubDate>Sun, 02 Jan 2022 23:16:21 +0800</pubDate><description><![CDATA[Set supported = new HashSet();
supported.add(Bridge.class.getCanonicalName());
return supported;
}
@Override
public boolean process(Set&lt;? extends TypeElement&gt; set, RoundEnvironment roundEnvironment) {
System.out.println(“TestAnnotationProcessor proce]]></description><category></category></item><item><title><![CDATA[Android面试题之Listview篇]]></title><link>https://blog.youkuaiyun.com/m0_66070663/article/details/122282439</link><guid>https://blog.youkuaiyun.com/m0_66070663/article/details/122282439</guid><author>m0_66070663</author><pubDate>Sun, 02 Jan 2022 23:13:31 +0800</pubDate><description><![CDATA[4.上拉加载和下拉刷新怎么实现？

实现OnScrollListener 接口重写onScrollStateChanged 和onScroll方法，使用onscroll方法实现”滑动“后处理检查是否还有新的记录，如果有，调用 addFooterView，添加记录到adapter, adapter调notifyDataSetChanged 更新数据;如果没有记录了，把自定义的mFooterView去掉。使用onScrollStateChanged可以检测是否滚到最后一行且停止滚动然后执行加载。

5.Lis.]]></description><category></category></item></channel></rss>