<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qiu_suo的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qiu_suo</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qiu_suo]]></copyright><item><title><![CDATA[Android面试题 ---- 沉浸式状态栏适配]]></title><link>https://blog.youkuaiyun.com/qiu_suo/article/details/128918648</link><guid>https://blog.youkuaiyun.com/qiu_suo/article/details/128918648</guid><author>qiu_suo</author><pubDate>Tue, 07 Feb 2023 16:30:47 +0800</pubDate><description><![CDATA[关于状态栏 这么多年了 适配主要也就是沉浸式 所以这篇文章主要是说一说沉浸式，还有一些相关的方法沉浸式的实现方式 从4.4到今天，也有过很多次变更]]></description><category></category></item><item><title><![CDATA[okHttp面试题 ---- 调度器dispatcher]]></title><link>https://blog.youkuaiyun.com/qiu_suo/article/details/106349052</link><guid>https://blog.youkuaiyun.com/qiu_suo/article/details/106349052</guid><author>qiu_suo</author><pubDate>Tue, 26 May 2020 10:32:22 +0800</pubDate><description><![CDATA[okHttp面试题 ---- 调度器dispatcher
讲完了主要的网络请求部分，再来看一下okhttp的另外一个组成部分、调度器dispatcher
还是这副简陋又直观的viso流程图 可以看到，在生成realcall之后，到拦截器网络请求之前，线程的分配及开启工作是由dispatcher来完成的，相信即使大家不看源码也清楚这个类是做什么工作的
所以接下来就我看一下调度器的重要组成部分
队列
 private int maxRequests = 64;
 //  最大请求为64
  private in]]></description><category></category></item><item><title><![CDATA[okhttp面试题----拦截器interceptor]]></title><link>https://blog.youkuaiyun.com/qiu_suo/article/details/106334570</link><guid>https://blog.youkuaiyun.com/qiu_suo/article/details/106334570</guid><author>qiu_suo</author><pubDate>Mon, 25 May 2020 17:17:03 +0800</pubDate><description><![CDATA[相信很多人面试都有遇到这个问题
了解过okhttp吗，麻烦简单说一下okhttp的拦截器
okhttp在android三方库里面属于一个万金油级别的存在，

首先作为目前最主流的网络请求框架，强是一定的
其次在okhttp中使用了多种设计模式，比如单例，工程，观察者，装饰等经典设计模式，吃透了okhttp的细节也能提升对设计模式的理解
okhttp的拦截器各个网络请求过程进行了封装，一方面装了解okhttp的过程中可以加深我们对于http请求的认识，另一方面通过链式结构也方便于我们自定义拦截器进行特定的工作]]></description><category></category></item><item><title><![CDATA[ndk学习]]></title><link>https://blog.youkuaiyun.com/qiu_suo/article/details/96902085</link><guid>https://blog.youkuaiyun.com/qiu_suo/article/details/96902085</guid><author>qiu_suo</author><pubDate>Mon, 22 Jul 2019 21:26:37 +0800</pubDate><description><![CDATA[创建 JNI 文件夹
直接在项目右键，选择 New - Folder - JNI Folder ，对话框直接点击 Finish 即可方便地在默认位置创建 jni 文件夹用于存放 c 源码。默认位置在 app/src/main/jni.

创建 Java 类
首先创建一个 Java 类用于调用 c 代码。
public class JniTest {
    static {
        S...]]></description><category></category></item><item><title><![CDATA[极光推送]]></title><link>https://blog.youkuaiyun.com/qiu_suo/article/details/96456687</link><guid>https://blog.youkuaiyun.com/qiu_suo/article/details/96456687</guid><author>qiu_suo</author><pubDate>Thu, 18 Jul 2019 21:22:30 +0800</pubDate><description><![CDATA[先附上文档sdk，方便大家自行翻阅

https://docs.jiguang.cn//jpush/client/Android/android_guide/

然后就开始今天的博客
Android SDK 集成指南
使用提示
本文是 JPush Android SDK 标准的集成指南文档。用以指导 SDK 的使用方法，默认读者已经熟悉 IDE（Eclipse 或者 Android Studio）...]]></description><category></category></item><item><title><![CDATA[Fresco]]></title><link>https://blog.youkuaiyun.com/qiu_suo/article/details/96366587</link><guid>https://blog.youkuaiyun.com/qiu_suo/article/details/96366587</guid><author>qiu_suo</author><pubDate>Wed, 17 Jul 2019 21:27:47 +0800</pubDate><description><![CDATA[1, Fresco 是是Facebook开发的一个强大的图片加载组件。
和Picasso，Glide比较，它在内存管理方面有很大优势。它的图片是存储在Native层的，可避免OOM。
github地址：https://github.com/facebook/fresco.
2， 使用Fresco的步骤 ：
第一步：添加依赖：
implementation 'com.facebook.fresco:...]]></description><category></category></item><item><title><![CDATA[kotlin计步器和加速度传感器]]></title><link>https://blog.youkuaiyun.com/qiu_suo/article/details/96021999</link><guid>https://blog.youkuaiyun.com/qiu_suo/article/details/96021999</guid><author>qiu_suo</author><pubDate>Mon, 15 Jul 2019 21:21:01 +0800</pubDate><description><![CDATA[今天写kotlin的计步器和加速度传感器，百度地图，还有用java的仿摇一摇功能
加速度传感器
class AeecActivity:Activity(),SensorEventListener {


    var systemService:SensorManager? = null;
    var textView:TextView ? = null;
    var sensor:Se...]]></description><category></category></item><item><title><![CDATA[android事件分发]]></title><link>https://blog.youkuaiyun.com/qiu_suo/article/details/95664057</link><guid>https://blog.youkuaiyun.com/qiu_suo/article/details/95664057</guid><author>qiu_suo</author><pubDate>Fri, 12 Jul 2019 21:28:23 +0800</pubDate><description><![CDATA[dispatchTouchEvent()
onTouchEvent()
onInterceptTouchEvent()
Activity 的事件分发机制
从英文单词中已经很明显的知道，dispatchTouchEvent() 是负责事件分发的。当点击事件产生后，事件首先会传递给当前的 Activity，这会调用 Activity 的 dispatchTouchEvent() 方法，我们来看看源码中...]]></description><category></category></item><item><title><![CDATA[自定义view刮刮乐和点击区域高亮]]></title><link>https://blog.youkuaiyun.com/qiu_suo/article/details/95382968</link><guid>https://blog.youkuaiyun.com/qiu_suo/article/details/95382968</guid><author>qiu_suo</author><pubDate>Wed, 10 Jul 2019 21:34:05 +0800</pubDate><description><![CDATA[在这里我先说一点那就是，其实这个东西真的不难，难在你是否对这个流程熟悉
先来看看刮刮乐，在刮之前先来熟悉一下步骤
1.先自定义view重写onDraw方法，他会给一个canvas
2.要写两层，下面一层是图片，上面一层是灰色的面
3.准备一支paint，颜色调整成透明
4.写路径path
5.写onTouchEvent触屏事件
6.点根烟收工
我就不挨个上代码了，反正在里面都能找到
实在找不到就带...]]></description><category></category></item><item><title><![CDATA[自定义View绘画]]></title><link>https://blog.youkuaiyun.com/qiu_suo/article/details/95241094</link><guid>https://blog.youkuaiyun.com/qiu_suo/article/details/95241094</guid><author>qiu_suo</author><pubDate>Tue, 09 Jul 2019 21:30:58 +0800</pubDate><description><![CDATA[自定义View绘画自定义的view有四个构造方法首先需要定义画笔类，准备四根然后进行赋值PS：鄙人实在是不会发gif所以就截两张图敷衍一下在座的各位INTERESTING!!!
自定义的view有四个构造方法
1,
自定义view的第一步是写构造方法，构造方法是用来初始化对象的，包括view也是对象。
2,
构造方法在这里一般要写三个甚至四个，这样写的原因：我们在不同的情况下创建View的方式不同...]]></description><category></category></item><item><title><![CDATA[帧动画补间动画]]></title><link>https://blog.youkuaiyun.com/qiu_suo/article/details/95032312</link><guid>https://blog.youkuaiyun.com/qiu_suo/article/details/95032312</guid><author>qiu_suo</author><pubDate>Sun, 07 Jul 2019 21:35:14 +0800</pubDate><description><![CDATA[一、动画的概念
  动画的概念不同于一般意义上的动画片，动画是一种综合艺术，它是集合了绘画、漫画、电影、数字媒体、摄影、音乐、文学等众多艺术门类于一身的艺术表现形式。
  动画的英文有很多表述，如animation、cartoon、animated cartoon、cameracature。其中较正式的 “Animation” 一词源自于拉丁文字根anima，意思为“灵魂”，动词animate是“...]]></description><category></category></item><item><title><![CDATA[XUTILS]]></title><link>https://blog.youkuaiyun.com/qiu_suo/article/details/94764835</link><guid>https://blog.youkuaiyun.com/qiu_suo/article/details/94764835</guid><author>qiu_suo</author><pubDate>Fri, 05 Jul 2019 21:06:19 +0800</pubDate><description><![CDATA[XUtils基本操作使用Gradle构建时添加一下依赖即可:拿控件格式添加点击事件格式HttpUtils（get和post）DBUtilsBean类是关键DownLoadUtils 断点续传INTERESTING!!!!
xUtils 包含了很多实用的android工具.
xUtils 支持超大文件(超过2G)上传，更全面的http请求协议支持(11种谓词)，拥有更加灵活的ORM，更多的事件注解支...]]></description><category></category></item><item><title><![CDATA[断点续传]]></title><link>https://blog.youkuaiyun.com/qiu_suo/article/details/93915402</link><guid>https://blog.youkuaiyun.com/qiu_suo/article/details/93915402</guid><author>qiu_suo</author><pubDate>Thu, 27 Jun 2019 21:36:32 +0800</pubDate><description><![CDATA[今天敲了一个断点续传
说的直白一点，其实就是在读取循环中设卡，并且在继续的时候能拿到之前暂停时的位置，并用自由文件流进行seek，就可以继续了，清楚了原理就可以直接动手了哦
布局
 &lt;ProgressBar
        android:layout_above="@id/ll"
        android:id="@+id/prb"
        style="@style/Wid...]]></description><category></category></item><item><title><![CDATA[RecycleView加头布局和尾布局]]></title><link>https://blog.youkuaiyun.com/qiu_suo/article/details/93781327</link><guid>https://blog.youkuaiyun.com/qiu_suo/article/details/93781327</guid><author>qiu_suo</author><pubDate>Wed, 26 Jun 2019 21:19:02 +0800</pubDate><description><![CDATA[RecycleView万能适配器ViewHolder主页面INTERESTING!!!
其实这就是一种写法和一种思路，并不难
主要是为了实现布局自由（头和尾）
思路是
先将头尾布局传进适配器，
在返回条目类型和绑定时进行判断是否赋值
思路简单，还是看代码吧
public class XMyAdapter extends RecyclerView.Adapter&lt;VHolder&gt; {
 ...]]></description><category></category></item><item><title><![CDATA[okhttp和volley]]></title><link>https://blog.youkuaiyun.com/qiu_suo/article/details/93657850</link><guid>https://blog.youkuaiyun.com/qiu_suo/article/details/93657850</guid><author>qiu_suo</author><pubDate>Tue, 25 Jun 2019 21:19:36 +0800</pubDate><description><![CDATA[OkHttp
Okhttp(第三方框架，必须掌握，需要封装)
okhttp是一个第三方类库，用于android中请求网络。
这是一个开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso和LeakCanary) 。用于替代HttpUrlConnection和Apache HttpClient(android API23 里已移除HttpClient)。
...]]></description><category></category></item><item><title><![CDATA[tomcat的使用和常见问题]]></title><link>https://blog.youkuaiyun.com/qiu_suo/article/details/93526252</link><guid>https://blog.youkuaiyun.com/qiu_suo/article/details/93526252</guid><author>qiu_suo</author><pubDate>Mon, 24 Jun 2019 21:31:37 +0800</pubDate><description><![CDATA[tomcat的使用和常见问题1.检查自己的环境搭建这种情况下不能成功打开的小伙伴 往这边看喽2.查看端口号是否被占用INTERESTING!!!
**tomccat是一个轻量级的服务器，我在这里也不多说他 的理论上的东西
我们来看一下他的使用，首先解压出所有内容，存放一个文件夹中
**

需要用到的环境

使用的话是在
D:\tomcat\bin目录下有一个startup.bat文件
点击打开服务...]]></description><category></category></item><item><title><![CDATA[高德地图]]></title><link>https://blog.youkuaiyun.com/qiu_suo/article/details/93136652</link><guid>https://blog.youkuaiyun.com/qiu_suo/article/details/93136652</guid><author>qiu_suo</author><pubDate>Thu, 20 Jun 2019 21:37:24 +0800</pubDate><description><![CDATA[高德地图
Dom简析
document.getElementsByTagName(“book”);//获取文件中所有节点名为book的内容，并打算将这些内容存入到nodeList中
getChildNodes()获得当前节点的所有子节点
get
Attributes()获取当前节点所有的属性和值
getTextContent()获得当前节点的文本
getNodeName() 获得当前节点的名称
高...]]></description><category></category></item><item><title><![CDATA[搜索附近蓝牙设备并进行匹配]]></title><link>https://blog.youkuaiyun.com/qiu_suo/article/details/92847010</link><guid>https://blog.youkuaiyun.com/qiu_suo/article/details/92847010</guid><author>qiu_suo</author><pubDate>Wed, 19 Jun 2019 21:20:54 +0800</pubDate><description><![CDATA[第一步动态申请权限，有两条
	&lt;uses-permission android:name="android.permission.BLUETOOTH"/&gt;
    &lt;uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/&gt;

申请过程
implements EasyPermissions.Perm...]]></description><category></category></item><item><title><![CDATA[搜索附近蓝牙]]></title><link>https://blog.youkuaiyun.com/qiu_suo/article/details/92800125</link><guid>https://blog.youkuaiyun.com/qiu_suo/article/details/92800125</guid><author>qiu_suo</author><pubDate>Tue, 18 Jun 2019 21:22:06 +0800</pubDate><description><![CDATA[今天来安排一下安卓的一个基础服务BlueTooth
蓝牙
蓝牙是什么我想不用多说，大家多少都用过，我们就直接上干货
第一步动态申请权限，有两条
	&lt;uses-permission android:name="android.permission.BLUETOOTH"/&gt;
    &lt;uses-permission android:name="android.permission.B...]]></description><category></category></item><item><title><![CDATA[获取手机所在位置经纬度]]></title><link>https://blog.youkuaiyun.com/qiu_suo/article/details/92716407</link><guid>https://blog.youkuaiyun.com/qiu_suo/article/details/92716407</guid><author>qiu_suo</author><pubDate>Mon, 17 Jun 2019 21:31:00 +0800</pubDate><description><![CDATA[今天犹豫再三还是没写关于高德地图的那一部分，一方面是没敲对，定位不对，另一方面是确实也不是很会，是跟着网上的一些博客敲的，所以写今天写的这一小部分吧，虽然有点少
首先需要关于地图的两项权限
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION

然后用easypermission去申...]]></description><category></category></item></channel></rss>