<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[子墨博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/ElinaVampire</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; ElinaVampire]]></copyright><item><title><![CDATA[认识ProtoBuf]]></title><link>https://blog.csdn.net/ElinaVampire/article/details/126309228</link><guid>https://blog.csdn.net/ElinaVampire/article/details/126309228</guid><author>ElinaVampire</author><pubDate>Fri, 12 Aug 2022 18:09:41 +0800</pubDate><description><![CDATA[Protocol buffers 是google开发的一种数据描述语言，类似于 XML 能够将结构化数据序列化，可用于数据存储、通信协议等方面。相比于现在流行的 XML 以及 JSON 格式存储数据，通过 Protocol Buffers 来定义的文件体积更小，解析速度更快 ...]]></description><category></category></item><item><title><![CDATA[浅谈贝塞尔曲线]]></title><link>https://blog.csdn.net/ElinaVampire/article/details/98527017</link><guid>https://blog.csdn.net/ElinaVampire/article/details/98527017</guid><author>ElinaVampire</author><pubDate>Mon, 05 Aug 2019 22:20:02 +0800</pubDate><description><![CDATA[浅谈贝塞尔曲线
前段时间做了一个手写板功能的东西，其中手写部分用二次贝塞尔曲线完成，今天就来总结一下贝塞尔曲线在Android中的应用，先简单介绍各阶贝塞尔曲线的原理，然后实现通过贝塞尔曲线实现波浪线功能，感兴趣的同学继续看下去吧！
概念
在数学的数值分析领域中，贝塞尔曲线（英语：Bézier curve，亦作“贝塞尔”）是计算机图形学中相当重要的参数曲线。更高维度的广泛化贝塞尔曲线就称作贝兹曲面...]]></description><category></category></item><item><title><![CDATA[Kotlin 初体验]]></title><link>https://blog.csdn.net/ElinaVampire/article/details/79600383</link><guid>https://blog.csdn.net/ElinaVampire/article/details/79600383</guid><author>ElinaVampire</author><pubDate>Sun, 18 Mar 2018 14:25:18 +0800</pubDate><description><![CDATA[Kotlin 初体验

Kotlin也是基于JVM设计的编程语言，相对Java来说，Kotlin在编写代码时有如下优势：代码简洁高效、函数式编程、空指针安全、支持lambda表达式、流式API等。



kotlin配置

在android studio 3.0以前需要下载kotlin插件 
新建一个项目，新建完成后，点击code —&amp;gt; convert java file to kotlin...]]></description><category></category></item><item><title><![CDATA[dva 框架介绍]]></title><link>https://blog.csdn.net/ElinaVampire/article/details/79406801</link><guid>https://blog.csdn.net/ElinaVampire/article/details/79406801</guid><author>ElinaVampire</author><pubDate>Wed, 28 Feb 2018 23:00:32 +0800</pubDate><description><![CDATA[dva 是基于 redux 最佳实践 实现的 framework，简化使用 redux 和 redux-saga 时很多繁杂的操作 



数据流向

数据的改变发生通常是通过用户交互行为或者浏览器行为（如路由跳转等）触发的，当此类行为会改变数据的时候可以通过 dispatch 发起一个 action，如果是同步行为会直接通过 Reducers 改变 State ，如果是异步行为（副作用）会先触发...]]></description><category></category></item><item><title><![CDATA[android 单元测试]]></title><link>https://blog.csdn.net/ElinaVampire/article/details/79257783</link><guid>https://blog.csdn.net/ElinaVampire/article/details/79257783</guid><author>ElinaVampire</author><pubDate>Mon, 05 Feb 2018 10:54:59 +0800</pubDate><description><![CDATA[单元测试的重要的和必要性这里不在强调，本文介绍几个常用的单元测试的框架



JUnit4

JUnit4是一个java的单元测试框架，多数Java的开发环境都已经集成了JUnit作为单元测试的工具，android studio默认继承了JUNit4



testImplementation 'junit:junit:4.12'

JUnit4主要是通过注解的方式来识别测试方法，下面介绍几个常用]]></description><category></category></item><item><title><![CDATA[Fragment Transactions & Activity State Loss]]></title><link>https://blog.csdn.net/ElinaVampire/article/details/52169804</link><guid>https://blog.csdn.net/ElinaVampire/article/details/52169804</guid><author>ElinaVampire</author><pubDate>Wed, 10 Aug 2016 11:28:09 +0800</pubDate><description><![CDATA[原文链接StackOverflow的一个问题：java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
    at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1341)]]></description><category></category></item><item><title><![CDATA[Android自定义控件：如何使view动起来？]]></title><link>https://blog.csdn.net/ElinaVampire/article/details/52143777</link><guid>https://blog.csdn.net/ElinaVampire/article/details/52143777</guid><author>ElinaVampire</author><pubDate>Sun, 07 Aug 2016 17:39:11 +0800</pubDate><description><![CDATA[本文发表于CSDN《程序员》杂志2016年8月期，未经允许不得转载！摘要Android中的很多控件都有滑动功能，但是很多时候原生控件满足不了需求时，就需要自定义控件，那么如何能让控件滑动起来呢？本文主要总结几种可以使控件滑动起来的方法实现其实能让view动起来的方法，要么就是view本身具备滑动功能，像listview那样可以上下滑动；要么就是布局实现滑动功能，像ScrollView那样使内测的子v]]></description><category></category></item><item><title><![CDATA[DrawerLayout 源码分析]]></title><link>https://blog.csdn.net/ElinaVampire/article/details/51935425</link><guid>https://blog.csdn.net/ElinaVampire/article/details/51935425</guid><author>ElinaVampire</author><pubDate>Sun, 17 Jul 2016 23:31:49 +0800</pubDate><description><![CDATA[简介DrawerLayout充当窗口内容的顶层容器，允许”抽屉”式的控件可以从窗口的一边或者两边垂直边缘拉出使用抽屉的位置或者布局可以通过android:layout_gravity子view的属性控制从那边拉出，left/start代表从左边拉出，right/end代表从右侧拉出，需要注意的是只能有一个抽屉控件从窗口的垂直边缘，如果布局中每个垂直窗口有多于一个抽屉控件，将会抛出异常根布局使用Dra]]></description><category></category></item><item><title><![CDATA[在已有的项目中引入react native]]></title><link>https://blog.csdn.net/ElinaVampire/article/details/51831333</link><guid>https://blog.csdn.net/ElinaVampire/article/details/51831333</guid><author>ElinaVampire</author><pubDate>Tue, 05 Jul 2016 14:32:05 +0800</pubDate><description><![CDATA[如果新建一个react native项目，在Android中写native的话是很容易的，一般情况下项目已经存在，如何在已经存在的app中引入react native呢？Prepare your app首先在你的app中的build.gradle引入react native的jar包compile "com.facebook.react:react-native:+"在项目的build.gradle]]></description><category></category></item><item><title><![CDATA[React Native 中 component 生命周期]]></title><link>https://blog.csdn.net/ElinaVampire/article/details/51813677</link><guid>https://blog.csdn.net/ElinaVampire/article/details/51813677</guid><author>ElinaVampire</author><pubDate>Sun, 03 Jul 2016 03:48:00 +0800</pubDate><description><![CDATA[React Native中的component跟Android中的activity，fragment等一样，存在生命周期，下面先给出component的生命周期图getDefaultPropsobject getDefaultProps()执行过一次后，被创建的类会有缓存，映射的值会存在this.props,前提是这个prop不是父组件指定的 
这个方法在对象被创建之前执行，因此不能在方法内调用th]]></description><category></category></item><item><title><![CDATA[TextureView 使用]]></title><link>https://blog.csdn.net/ElinaVampire/article/details/51690991</link><guid>https://blog.csdn.net/ElinaVampire/article/details/51690991</guid><author>ElinaVampire</author><pubDate>Thu, 16 Jun 2016 12:22:35 +0800</pubDate><description><![CDATA[简介TextureView可以用于展示内容流. 例如像视频或者OpenGL场景的内容流. 内容流可以来自本应用程序以及其他进程TextureView只能应用于开启硬件加速的窗口不像SurfaceView那样，TextureView不会创建一个单独的窗口但是可以作为一个普通的View. 不同的是TextureView可以移动，平移，动画等. 例如，通过调用myView.setAlpha(0.5f)将T]]></description><category></category></item><item><title><![CDATA[设计模式之单例]]></title><link>https://blog.csdn.net/ElinaVampire/article/details/51591649</link><guid>https://blog.csdn.net/ElinaVampire/article/details/51591649</guid><author>ElinaVampire</author><pubDate>Sun, 05 Jun 2016 21:40:12 +0800</pubDate><description><![CDATA[设计模式之单例单例模式：确保一个类只有一个实例并提供一个对它的全局访问指针什么是线程安全？如果你的代码所在的进程中有多个线程在同时运行，而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的，而且其他的变量的值也和预期的是一样的，就是线程安全的。 
或者说：一个类或者程序所提供的接口对于线程来说是原子操作，或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不]]></description><category></category></item><item><title><![CDATA[初识React Native]]></title><link>https://blog.csdn.net/ElinaVampire/article/details/51581070</link><guid>https://blog.csdn.net/ElinaVampire/article/details/51581070</guid><author>ElinaVampire</author><pubDate>Fri, 03 Jun 2016 18:41:49 +0800</pubDate><description><![CDATA[初始React Native简介Facebook 在 React.js Conf 2015 大会上推出了基于 JavaScript 的开源框架 React NativeReact Native 结合了 Web 应用和 Native 应用的优势，可以使用 JavaScript 来开发 iOS 和 Android 原生应用。在 JavaScript 中用 React 抽象操作系统原生的 UI 组件，代替]]></description><category></category></item><item><title><![CDATA[android LRUCache源码分析]]></title><link>https://blog.csdn.net/ElinaVampire/article/details/51483289</link><guid>https://blog.csdn.net/ElinaVampire/article/details/51483289</guid><author>ElinaVampire</author><pubDate>Mon, 23 May 2016 17:25:16 +0800</pubDate><description><![CDATA[LRU（Least Recently Used）最近最少使用算法原理缓存保存了一个强引用（Android 2.3开始，垃圾回收器更倾向于回收弱引用和软引用，软引用和弱引用变得不可靠，Android 3.0中，图片的数据会存储在本地的内存当中，因而无法用一种可预见的方式将其释放）限制值的数量. 每当值被访问的时候，它会被移动到队列的头部. 当缓存已满的时候加入新的值时，队列中最后的值会出队，可能被回收]]></description><category></category></item><item><title><![CDATA[android LRUCache解析]]></title><link>https://blog.csdn.net/ElinaVampire/article/details/51478088</link><guid>https://blog.csdn.net/ElinaVampire/article/details/51478088</guid><author>ElinaVampire</author><pubDate>Mon, 23 May 2016 00:42:26 +0800</pubDate><description><![CDATA[android LRUCache解析LRU（Least Recently Used）最近最少使用算法原理缓存保存了一个强引用限制值的数量. 每当值被访问的时候，它会被移动到队列的头部. 当缓存已满的时候加入新的值时，队列中最后的值会出队，可能被回收LRUCache内部维护主要是通过LinkedHashMap实现这是一个安全的线程，多线程缓存通过同步实现 使用默认情况下，缓存的大小是由值的数量决定，重]]></description><category></category></item><item><title><![CDATA[Bitmap API]]></title><link>https://blog.csdn.net/ElinaVampire/article/details/51348810</link><guid>https://blog.csdn.net/ElinaVampire/article/details/51348810</guid><author>ElinaVampire</author><pubDate>Mon, 09 May 2016 00:58:22 +0800</pubDate><description><![CDATA[1.简介Bitmap是Android系统中的图像处理的最重要类之一，通过bitmap可以获得图片的基本信息，以及对图片进行一系列的操作2.APIpublic boolean compress(CompressFormat format, int quality, OutputStream stream)把位图的压缩信息写入到指定的输出流.如果返回true，位图可以通过适当的输入流重建到BitmapF]]></description><category></category></item><item><title><![CDATA[Android中的RxJava，Retrofit，MVP的使用]]></title><link>https://blog.csdn.net/ElinaVampire/article/details/51236746</link><guid>https://blog.csdn.net/ElinaVampire/article/details/51236746</guid><author>ElinaVampire</author><pubDate>Mon, 25 Apr 2016 01:03:51 +0800</pubDate><description><![CDATA[RxJava，Retrofit，MVP都是近几年讨论的比较热门的话题，我们也来凑个热闹！本博不展开讨论，分别讨论的文章有很多，后续有时间给出RxJava，Retrofit的源码分析先来说一下MVP（Model View Presenter）熟悉MVC结构的应该很容易理解MVP，这里先给出MVP的图解
model具体业务逻辑处理的实现
view负责显示数据、提供友好界面跟用户交互
presenter负]]></description><category></category></item><item><title><![CDATA[Android 5.0状态栏和导航栏]]></title><link>https://blog.csdn.net/ElinaVampire/article/details/51115605</link><guid>https://blog.csdn.net/ElinaVampire/article/details/51115605</guid><author>ElinaVampire</author><pubDate>Sun, 10 Apr 2016 22:46:24 +0800</pubDate><description><![CDATA[Material Design推出之后，app中也开始沿用这种风格今天来说一下状态栏颜色设置，在4.4的时候推出了透明状态栏和导航栏，在不使用第三方库的情况下，4.4还是没有完全解决存在actionbar的问题，于是乎，5.0推出了比较给力的方式使用方式很简单了，并且官方也给出了文档，先给出一张图片，方便大家了解其中的属性大家可以根据以上图片设置自己想要的
引入v7包
不引入v7包
引入v7包的话，]]></description><category></category></item><item><title><![CDATA[浅谈handler]]></title><link>https://blog.csdn.net/ElinaVampire/article/details/50811366</link><guid>https://blog.csdn.net/ElinaVampire/article/details/50811366</guid><author>ElinaVampire</author><pubDate>Tue, 08 Mar 2016 22:06:14 +0800</pubDate><description><![CDATA[今天就来谈一下面试中经常被问及的handlerhandler是什么？handler是Android提供用来更新UI的一套消息机制，也是一套消息处理的机制（发送和处理消息）handler原理handler负责消息发送，looper负责接收handler发送过来的消息，并把消息发送给handler，messageQueue存储消息的容器这里先说明一下ThreadLocal，主要在线程中保存变量信息，主要]]></description><category></category></item><item><title><![CDATA[Android 之 图片压缩]]></title><link>https://blog.csdn.net/ElinaVampire/article/details/50750922</link><guid>https://blog.csdn.net/ElinaVampire/article/details/50750922</guid><author>ElinaVampire</author><pubDate>Sat, 27 Feb 2016 17:24:48 +0800</pubDate><description><![CDATA[在上一篇文章中（Android之图片变换）主要说明了bitmap的使用，当然其中也包括一点图片压缩的内容，但是没有详细描述，这篇文章就来阐述一下平时Android使用的图片压缩技术从图片的压缩方式区分：质量压缩和尺寸压缩。质量压缩是在保持像素的前提下改变图片的位深及透明度等，来达到压缩图片的目的，经过它压缩的图片文件大小会有改变，但是导入成bitmap后占得内存是不变的。因为要保持像素不变，所以它就]]></description><category></category></item></channel></rss>