<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[TimPika的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/TimPika</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; TimPika]]></copyright><item><title><![CDATA[Kotlin空指针安全]]></title><link>https://blog.youkuaiyun.com/TimPika/article/details/101561431</link><guid>https://blog.youkuaiyun.com/TimPika/article/details/101561431</guid><author>TimPika</author><pubDate>Fri, 27 Sep 2019 21:22:07 +0800</pubDate><description><![CDATA[1.可为null类型
在Kotlin中通常我们直接定义的类型是不可以为null的,如下：
fun main() {
    var s = "abc"
    s = null  //编译错误：null can not be a value of a non-null type String

    var i = 1
    i = null  //编译错误：null can not be a...]]></description><category></category></item><item><title><![CDATA[Kotlin基础语法]]></title><link>https://blog.youkuaiyun.com/TimPika/article/details/101476078</link><guid>https://blog.youkuaiyun.com/TimPika/article/details/101476078</guid><author>TimPika</author><pubDate>Thu, 26 Sep 2019 21:26:53 +0800</pubDate><description><![CDATA[Kotlin基础语法
1.定义包名、导包
当我们新建一个Kotlin文件时(文件以kt为后缀)，我们首先需要声明包名和导包，使用的方式和Java一样，包名声明需要在第一行使用关键字package xxx,需要注意的是包名不需要和文件的路径一致，导入别的地方的类使用关键字import，如：
package com.xinxue.kotlindemo

import android.os.Bundle...]]></description><category></category></item><item><title><![CDATA[Kotlin流程控制语句]]></title><link>https://blog.youkuaiyun.com/TimPika/article/details/101451977</link><guid>https://blog.youkuaiyun.com/TimPika/article/details/101451977</guid><author>TimPika</author><pubDate>Thu, 26 Sep 2019 19:49:10 +0800</pubDate><description><![CDATA[Kotlin流程控制语句

分支语句 if、when
循环语句 for、while
跳转语句 return、break、continue、throw

一.if表达式
在Kotlin中，if是一个表达式，即它会返回一个值.if作为代码块时，最后一行作为返回值
可以这样写表达式
fun max(x: Int, y: Int): Int {
   if (x &gt; y) {
       retu...]]></description><category></category></item><item><title><![CDATA[Android 动画设置]]></title><link>https://blog.youkuaiyun.com/TimPika/article/details/98887211</link><guid>https://blog.youkuaiyun.com/TimPika/article/details/98887211</guid><author>TimPika</author><pubDate>Thu, 08 Aug 2019 22:21:25 +0800</pubDate><description><![CDATA[Android动画的详解
Android动画分为三种 补间动画,帧动画,属性动画
补间动画
首先我们要在res文件夹下创建一个文件夹命名必须为anim来存放动画xml文件

在xml文件中写动画的类型
补间动画的类型有 渐变 位移 缩放 旋转
渐变
代码如下
&lt;alpha xmlns:android="http://schemas.android.com/apk/res/android"
 ...]]></description><category></category></item><item><title><![CDATA[RXJava基本原理]]></title><link>https://blog.youkuaiyun.com/TimPika/article/details/98749443</link><guid>https://blog.youkuaiyun.com/TimPika/article/details/98749443</guid><author>TimPika</author><pubDate>Wed, 07 Aug 2019 17:17:48 +0800</pubDate><description><![CDATA[什么是RXjava
RxJava是近两年来越来越流行的一个异步开发框架,使用起来十分简单方便,功能保罗万象,十分强大
首先以代码的执行顺序来描述RXJava,回答几个问题
RxJava框架内部的主干逻辑是怎样的？
RxJava究竟是如何实现一句话线程切换的？
多次调用subscribeOn()或observeOn()切换线程会有什么效果？
回答了这几个问题之后,我们大概就能对RxJava的基本原理...]]></description><category></category></item><item><title><![CDATA[MVP模式]]></title><link>https://blog.youkuaiyun.com/TimPika/article/details/98665148</link><guid>https://blog.youkuaiyun.com/TimPika/article/details/98665148</guid><author>TimPika</author><pubDate>Tue, 06 Aug 2019 22:02:09 +0800</pubDate><description><![CDATA[Android MVP Pattern
Android MVP 模式 是MVC模式在Android上的一种变体,要介绍MVP就得先介绍MVC。在MVC模式中，Activity应该是属于View这一层。而实质上，它既承担了View，同时也包含一些Controller的东西在里面。这对于开发与维护来说不太友好，耦合度大高了。把Activity的View和Controller抽离出来就变成了View和P...]]></description><category></category></item><item><title><![CDATA[ButterKnife和dagger2]]></title><link>https://blog.youkuaiyun.com/TimPika/article/details/98516772</link><guid>https://blog.youkuaiyun.com/TimPika/article/details/98516772</guid><author>TimPika</author><pubDate>Mon, 05 Aug 2019 21:20:57 +0800</pubDate><description><![CDATA[ButterKnife
注于Android系统的View注入框架,当一个布局十分复杂时,需要引入执行大量的findViewById代码来找到View的对象,有了ButterKnife可以很轻松的省去这些步骤。是大神JakeWharton的力作，目前使用很广。最重要的一点，使用ButterKnife对性能基本没有损失，因为ButterKnife用到的注解并不是在运行时反射的，而是在编译的时候生成新的...]]></description><category></category></item><item><title><![CDATA[Calces组件化及Module传值]]></title><link>https://blog.youkuaiyun.com/TimPika/article/details/98494708</link><guid>https://blog.youkuaiyun.com/TimPika/article/details/98494708</guid><author>TimPika</author><pubDate>Mon, 05 Aug 2019 20:34:46 +0800</pubDate><description><![CDATA[功能介绍
1.自动组件化构建插件
根据Gradle配置,自动实现Android组件的构建模式(application or library)
可配置多个依赖不同组件的App
自动要依赖需要的组件
自动配置组件独立运行

2.屏幕适配插件
根据Gradle配置,自动生成你需要的smallestWidth适配文件
自动压缩位图

快速开始
自动组件化构建插件
1.导入依赖库 在项目的build.gra...]]></description><category></category></item><item><title><![CDATA[Android组件化]]></title><link>https://blog.youkuaiyun.com/TimPika/article/details/98241854</link><guid>https://blog.youkuaiyun.com/TimPika/article/details/98241854</guid><author>TimPika</author><pubDate>Fri, 02 Aug 2019 21:56:41 +0800</pubDate><description><![CDATA[一.组件化
首先新建项目 正常创建项目
需要使用几个组件就创建几个
当组件被整合到同一个app中的时候，多个组件的资源会产生冲突，
因此我们在资源文件命名的时候通常会带上组件名作为前缀

组件分为三种：
一种是基础组件，提供各种方法供别的组件使用。
另一种是可单独运行的独立组件。
最后一种是打包时包含其他组件的。
三种组件build.gradle的区别
基础组件
组件头
apply plugin:...]]></description><category></category></item><item><title><![CDATA[xml解析]]></title><link>https://blog.youkuaiyun.com/TimPika/article/details/96459127</link><guid>https://blog.youkuaiyun.com/TimPika/article/details/96459127</guid><author>TimPika</author><pubDate>Thu, 18 Jul 2019 21:59:01 +0800</pubDate><description><![CDATA[xml解析
一.xml介绍:
1.XML：Extensible Markup Language，即可扩展标记语言. 用于标记电子文件使其具有结构性的标记语言，可以用来标记数据、定义数据类型，是一种允许用户对自己的标记语言进行定义的源语言。非常适合 Web 传输。XML 提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据.
举例如下:
&lt;?xml version="1.0" enco...]]></description><category></category></item><item><title><![CDATA[蓝牙设备]]></title><link>https://blog.youkuaiyun.com/TimPika/article/details/96264977</link><guid>https://blog.youkuaiyun.com/TimPika/article/details/96264977</guid><author>TimPika</author><pubDate>Wed, 17 Jul 2019 08:12:13 +0800</pubDate><description><![CDATA[一.蓝牙的介绍:
是以中无限技术标准,可以实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换，主要掌握这几项技能:
1.添加权限:
 &lt;!-- 用于进行网络定位 --&gt;
    &lt;uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /&gt;
    &lt;!-- 用于访问GPS...]]></description><category></category></item><item><title><![CDATA[slidemenu实现流程以及常用的方法+surfaceview播放视频+surfaceview发送弹幕整理代码]]></title><link>https://blog.youkuaiyun.com/TimPika/article/details/95242014</link><guid>https://blog.youkuaiyun.com/TimPika/article/details/95242014</guid><author>TimPika</author><pubDate>Tue, 09 Jul 2019 21:46:45 +0800</pubDate><description><![CDATA[SlideMenu实现 第三方 需要导入moudle(slidemenu)
SlideMenu实现抽屉
1.SlideMenu的属性:
设置模式： setMode(SlidingMenu.LEFT);
设置触摸屏幕的模式：setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
//TOUCHMODE_FULLSCREEN全屏;TOUCHMODE_M...]]></description><category></category></item><item><title><![CDATA[Recyclerview基础+接口点击事件+多布局+随机值瀑布流]]></title><link>https://blog.youkuaiyun.com/TimPika/article/details/94646567</link><guid>https://blog.youkuaiyun.com/TimPika/article/details/94646567</guid><author>TimPika</author><pubDate>Thu, 04 Jul 2019 20:34:39 +0800</pubDate><description><![CDATA[标准的适配器Recyclerview基础一.效果:线性/网络/瀑布流二.重要的方法三.RecyclerView的使用四.代码五.实现多布局只给出适配器代码:微信通讯录页面六.随机高度瀑布流1.适配器代码:2.item行布局ImageView添加的属性七.XRecyclerView的使用:上拉加载 下拉刷新1.XRecyclerView和RecyclerView的区别:2.XRecyclerView...]]></description><category></category></item><item><title><![CDATA[Fragment基础知识]]></title><link>https://blog.youkuaiyun.com/TimPika/article/details/93136510</link><guid>https://blog.youkuaiyun.com/TimPika/article/details/93136510</guid><author>TimPika</author><pubDate>Thu, 20 Jun 2019 21:43:07 +0800</pubDate><description><![CDATA[Fragment
一.Fragment介绍
Fragment，英文碎片的意思，早期应用在平板设计中
二.Fragment应用


]]></description><category></category></item><item><title><![CDATA[EventBus和Otto第三方]]></title><link>https://blog.youkuaiyun.com/TimPika/article/details/92847493</link><guid>https://blog.youkuaiyun.com/TimPika/article/details/92847493</guid><author>TimPika</author><pubDate>Wed, 19 Jun 2019 21:40:02 +0800</pubDate><description><![CDATA[EventBus
一.EventBus介绍
EventBus能够简化各组件间的通信，让我们的代码书写变得简单，能有效的分离事件发送方和接收方(也就是解耦的意思)。

]]></description><category></category></item><item><title><![CDATA[ListView多布局]]></title><link>https://blog.youkuaiyun.com/TimPika/article/details/92846801</link><guid>https://blog.youkuaiyun.com/TimPika/article/details/92846801</guid><author>TimPika</author><pubDate>Wed, 19 Jun 2019 21:30:14 +0800</pubDate><description><![CDATA[多布局
什么是多布局?
图例:
多布局就是实现像qq或者微信这样的聊天页面
首先要写两个布局
左布局
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="ma...]]></description><category></category></item><item><title><![CDATA[BroadCastReceiver广播]]></title><link>https://blog.youkuaiyun.com/TimPika/article/details/92799403</link><guid>https://blog.youkuaiyun.com/TimPika/article/details/92799403</guid><author>TimPika</author><pubDate>Tue, 18 Jun 2019 21:06:09 +0800</pubDate><description><![CDATA[BroadCastReceiver
一.BroadCastReceiver介绍：

BroadCastReceiver广播接受者，安卓四大组件之一
广播三要素:
（1）广播发送者 :       发送广播
（2）广播接收者(调频)：      用于接收广播
（3）要处理的事情  :处理广播的相关信息, Intent有图对象
广播的使用场景：
（1）同一APP下多个组件之间传递数据（Activity...]]></description><category></category></item><item><title><![CDATA[ContentProviderneir内容提供者]]></title><link>https://blog.youkuaiyun.com/TimPika/article/details/92799048</link><guid>https://blog.youkuaiyun.com/TimPika/article/details/92799048</guid><author>TimPika</author><pubDate>Tue, 18 Jun 2019 20:32:25 +0800</pubDate><description><![CDATA[A:ContentProvider
一.ContentProvider介绍:
1.ContentProvider内容提供者（四大组件之一）主要用于在不同的应用程序之间实现数据共享的功能。
2.技能get点：
（1）访问系统自带的内容提供者(******)
手机联系人/音频/视频/图库/短信/系统设置
（2）自己写内容提供者
3.注意：
Contentprovider3个重要的点
Contentpr...]]></description><category></category></item><item><title><![CDATA[SQLite数据操作]]></title><link>https://blog.youkuaiyun.com/TimPika/article/details/92794690</link><guid>https://blog.youkuaiyun.com/TimPika/article/details/92794690</guid><author>TimPika</author><pubDate>Tue, 18 Jun 2019 16:20:18 +0800</pubDate><description><![CDATA[SQLite数据库
一.SQLite数据库介绍
1.Android 系统中集成的轻量级的数据库
2.特点:
轻量级   只用一个动态的库, 是以单个文件的形式进行存取
跨平台 支持多个操作系统
零配置   无需安装, 直接使用
嵌入式   内嵌到手机中
3.在程序的内部可以通过数据库的名称访问, 其他应用不能访问
4.路径: data/data/应用程序包名/database/ ****.db
5...]]></description><category></category></item><item><title><![CDATA[Bitmap三级缓存+二次采样]]></title><link>https://blog.youkuaiyun.com/TimPika/article/details/92591078</link><guid>https://blog.youkuaiyun.com/TimPika/article/details/92591078</guid><author>TimPika</author><pubDate>Mon, 17 Jun 2019 14:07:22 +0800</pubDate><description><![CDATA[Bitmap三级缓存
一.为什么使用Bitmap三级缓存？
1.没有缓存的弊端:费流量,加载速度慢
2.加入缓存的优点:省流量,支持离线浏览
二.原理

思路：
1.从内存获取图片,如果存在,则显示；如果不存在,则从SD卡中获取图片
2.从SD卡中获取图片,如果文件中存在,显示,并且添加到内存中,否则开启网络下载图片
三.代码
(1).添加读写SD卡的权限和网络权限
&lt;uses-permis...]]></description><category></category></item></channel></rss>