自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

naivor的专栏

记录自己成长的点滴,分享大神们的优秀成果,让世界更美好

  • 博客(48)
  • 收藏
  • 关注

原创 安卓开发 第十四篇 视频播放

背景在Android 开发中常常会涉及到视频播放,Android本身的VideoView以及MediaPlayer使用起来总是遇到这样那样的坑,并且Api对开发者也不是很友好,更不用说支持的视频格式了。后来陆续用过腾讯的播放库,百度的播放库,也研究过vitamio,ijkplayer,但都不是很满意,甚至有的库直接就4m以上。后来谷歌开源了新的播放器Exoplayer,这个播放器十分强大,但是用起来

2017-07-23 14:57:39 696

原创 UML学习总结

UML学习总结UML是什么UML是Unified Modeling Language的缩写,即统一建模语言,是一种绘制软件蓝图的标准语言,可以对软件制品进行可视化,详述,构造和文档化的描述。UML构成要素基本构造块,构造块放置规则,通用的公共机制。UML的构造块(1)事物 结构事物:描述概念元素或物理元素,静态的 a. 类b. 接口c. 协作d. 用况e. 主动类 f. 构件g. 制品h

2017-06-07 16:49:28 658

原创 科大讯飞SDK学习与总结

科大讯飞SDK使用研究语音听写(主要对象 SpeechRecognizer)初始化SpeechRecognizer recognizer=SpeechRecognizer.createRecognizer(activity,initListener);设置参数 /** * 参数设置,可设置的参数有: * 1.引擎类型 SpeechConstant.ENGINE_TYPE ,可选值

2017-05-13 09:08:33 13714

原创 安卓开发 第十三篇 Android 中的测试

I. Android 中的单元测试一. JUnit:java单元测试框架junit库引入:testCompile 'junit:junit:4.12'在要测试的类中点击右键,选择 Go to > Test > create New Test … ,勾选setUp/@Before和tearDown/@After,勾选要测试的方法,然后OK创建测试类在setUP方法中做初始化工作,在tearDown

2017-04-25 17:35:49 489

原创 安卓开发 第十二篇 Android App 优化总结

1.渲染优化使用Hierarchy Viewer 确保view在16ms完成渲染开发者选项中打开Overdraw,尽量减少红色区域,增加蓝色区域开发者选项打开Profile GPU Rendering,确保现状图大部分在绿色横线下尽量少用透明度,带透明度的view会至少渲染两次2.内存优化工具:Memory Monitor,Allocation Tracker,Heap Tool避免频繁

2017-04-16 17:30:35 558

原创 安卓开发 第十一篇 初尝 React Native

一.React Native 环境搭建安装nodejs sudo apt-get install nodejs sudo apt-get install npm 安装React Native相关工具 sudo npm install -g yarn react-native-cli 3.Android 开发环境 Android Studio 2.0以上JDK 1.8 以

2017-04-15 12:58:00 762

原创 将linux系统目录挂载到其他分区,扩大系统可用空间

刚看到有小白用户说linux系统盘分区太小,不够用,问是不是要重装系统?其实是不需要重装系统的,可以考虑把一些系统目录挂载到单独的分区。比如将用户目录 /home 挂载到单独的分区:1.首先打开Gpart分区编辑器,找一个空闲的分区,调整好分区大小,格式化城ext4格式。2.记录下分区的路径,比如 /dev/sda2 ,记录下分区的 UUID。3.在 /mnt 目录下新建一个 home,并将

2017-03-29 09:52:03 8819 1

原创 linux 更改Chrome 默认下载器为uGet

一直使用Deepin作为我的开发系统,对于linux上面没有迅雷这种下载神器一直比较遗憾,每次感受到下载资源时的几 k/n 的网速时,感觉都快要崩溃了。不过还好,最近发现了一个linux上面比较好的下载器:uGet,俗称小迅雷,下载速度刚刚的。首先安装uGetsudo apt-get install uget然后应用列表中就应该能看到uGet的图标了启动uGet搭配aria2在 “编辑”–>”

2017-03-25 09:32:48 9205

原创 安卓开发 第十篇 使用Checkstyle规范代码

嗯,2017年也到来3个月之久了,博客也好久没更新了,这点得好好反省下。一个是工作比较忙(借口),每周居然要上6天班,感觉精力有些跟不上了,最近一直在思考现在的生活是我想要的吗?公司去年年尾管理层出现了大变动,没拿到年终奖,现在也人心惶惶的,另外又碰上跳槽的黄金期,心思也有些浮动,哎,纠结啊,发现有时真的得逼自己一些,来个破釜沉舟?另外好像懒癌又患了,果然癌症不是那么容易治好的!好了,扯多了,又感慨

2017-03-22 21:17:01 2441

原创 安卓开发 第九篇 多个项目共用模块

最近忙新项目的事情,都没有时间写博文了,惭愧惭愧,今天抽得浮生半日闲,就来一篇吧。我们在开发中可能会遇到同时开发几个app的情况,而这几个app在某些地方是相同的,而我们通常的做法是将相同的部分抽成一个library。这在eclipse中是很好实现的,而在Android studio中,我们一般都是抽成module,而一般这些module还是放在项目的根目录下的,要在另一个项目中使用,怎么办呢?方法

2016-07-10 19:00:35 2660

原创 安卓开发 第八篇 我的安卓应用架构设计-----图片选择以及剪裁

Android开发中遇到要从相册选择图片时,大多数人都会选择调用Android自带的相册,毕竟这样可以节约时间,又不用自己去处理图片的问题。而我的安卓架构中选择了自定义相册的功能,其效果是仿照QQ的图片选择样式,通过dialog展现出来的,还自定义了图片的剪裁,使用了CropImageView 实现了多种剪裁效果。图片选择的直接辅助类:/** * 图片选择辅助类 * Created by tia

2016-05-17 21:30:47 5213

原创 算法 第一篇 冒泡排序

冒泡排序算法算是很经典的算法了,也是面试中的常客。冒泡排序是取出一个基数,通过不断遍历数列,进行比较。如果被比较的数比基数小,则交换他们的位置,否则,就跳过,遍历完本次,数列的下一个位置的数成为基数,然后用新的基数再次进行遍历比较。这样,越大的数会经由交换慢慢“浮”到数列的顶端,这也是冒泡算法名称的由来。冒泡算法代码:public class BubbleSort{ public void

2016-05-11 11:44:36 556

原创 安卓开发 第七篇 我的安卓应用架构设计-----Adapter类及ViewHolder类

在Android开发中,对于AdapterView类型的控件,我们都需要通过适配器来给它设置数据,如果显示的内容比较简单,我们通常使用SimpleAdapter或者ArrayAdapter,而对于复杂多变的数据,我们一般使用自定义一个继承自BaseAdapter的Adapter来处理。为了itemview的复用,我们通常用一个Viewholder来包装itemview里面的控件。在我的安卓架构中,使

2016-05-11 10:44:44 4206 2

原创 安卓开发 第六篇 我的安卓应用架构设计-----BaseActivity类

BaseActivity是项目中所有activity的基类,含有一些公共的属性和方法,同时控制toolbar的显示,以及其他一些功能。。。来看源码:/** * BaseActivity 是所有activity的基类,把一些公共的方法放到里面 * <p> * Created by tianlai on 16-3-3. */public abstract class BaseActivity

2016-05-10 10:30:57 3084

原创 安卓开发 第五篇 我的安卓应用架构设计-----Repository类

Repository类被我放在项目架构中的领域层中(domain), 在我的项目架构中充当的是数据仓库,所有需要的数据都从Repository获取。先看看所有Repository的基类:/** * BaseRepository app的数据仓库类的基类,所有Repository类都直接或者间接继承自它 * <p/> * Created by tianlai on 16-3-3. */publ

2016-05-04 22:51:50 2048

原创 推荐一个有关算法的博客

推荐一个有关算法的博客,博主真的是一个十分、非常厉害的人,看到的第一眼就被博主折服了,自己以后决定坚持每天看一点算法(本来想说看一个算法的,像那种复杂的算法一天是看不完的哈,还是严谨点好)博客:http://blog.csdn.net/v_july_v/article/details/6543438

2016-04-24 12:09:25 535

原创 android studio 错误:“java.io.EOFException”

大概一周前吧,运行Android应用的时候突然报“java.io.EOFException”,报错的地方是在JsonReader里面,当时第一怀疑对象就是后台的小伙伴改了什么东西,导致返回的json格式出问题了,然后各种调试,查资料,版本回退,后台返回数据写死等等,花了一天多时间,后来实在没辙了,就另外写了个Activity,用okHttp请求数据,看看返回的具体是什么东西。不看不知道,一看吓一跳,

2016-04-24 00:00:41 7536

原创 安卓开发 第四篇 我的安卓应用架构设计-----Presenter类

我的项目架构中使用了MVP模式,Presenter则代表MVP中的P。如果有不了解MVP模式的建议先了解一下MVP模式再来看这篇文章。我的架构中,每个类型的类都有一个基类,其他此类型的类都继承于这个基类,好处是我们可以将公共部分抽象到基类中,以后如果有公共的改变,就直接修改基类,这样会减少很多工作量。同样Presenter也有基类BasePresenter://这是BasePresenterpubl

2016-04-23 23:03:46 2517

原创 安卓开发 第三篇 我的安卓应用架构设计-----Responce类

我的项目中使用了model和Responce来保存数据,Responce是服务器直接返回的数据的类例如,服务器返回:{ "status":1000, "msg":"succeed", "requestTime":1460855439, "responceTime":1460855483, "data":{"name": "BeJson", "url":

2016-04-17 17:39:09 637

原创 安卓开发 第二篇 我的安卓应用架构设计

说起架构,很多人可能会觉得那是很高大上的东西,自己是做不到的;说起安卓架构,很多人更是会嗤之以鼻,就安卓应用,所有东西都是在activity里面执行的,直接把业务罗辑写到里面就行了。其实不然,我们做任何事情都需要有规划,这样能够提高效率,同时也会避免后期的混乱。开发一款app就像建造一幢房屋一样,提前对这幢房屋进行规划,设计,考虑各种因素,然后画出结构图纸,当我们去建造房子的时候才会思路清晰,并且建

2016-04-16 11:01:24 614

原创 安卓开发 第一篇 关于依赖注入框架dagger2的使用和理解

(这篇博客真是磨难重重啊,写到一半电脑蓝屏了,还好markdown编辑器保持了部分类容)最近开始重构项目,在重构项目中用到了依赖注入框架dagger2,发现它确实很方便,能大大加快我们编写代码的速度,同时也很方便我们对于功能模块的解耦。在这里就不过多介绍dagger2了,大家谷歌 百度一下就能得到很多关于dagger2的介绍。学习dagger2是需要一定的学习成本的,我自己开始学习的时候也差不多花了

2016-04-14 22:31:52 6125 4

原创 android studio 错误:“Gradle sync failed: java.lang.NullPointerException”

最近拷贝一台电脑的的studio下的android项目到给一台电脑,发现打开项目居然报错:“Gradle sync failed: java.lang.NullPointerException”,并且还弹出“IDE inner  errors occured”,顿时泪奔了。               进过几天时间的查资料,都没有找到出现问题的原因。睡觉前突然想到是不是build 项目出的问题

2016-04-02 00:40:57 9604 2

原创 第一篇:个人感悟----懒惰是人类最大的敌人

时间兜兜转转,不知不觉已经2016年3月底了,距离自己发表第一篇博客已经过去一年多了。我回忆了很久,隐约记得当初开始决定写博客的目主要有:1.是把自己理解的知识记录下来,方便以后忘记了能随时查看博客找回记忆。就比如我之前看过一本叫《大话设计模式》的书,里面很多的设计模式 以及其思想令我耳目一新。自己虽然在编程的过程中也用过某些设计模式,但是,如果不看这本书的话,是绝对不会理解的这么深刻,也

2016-03-26 00:11:46 1602

原创 第二十五篇 设计模式--迭代器模式

定义:提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。代码:package iterator_model;import java.util.ArrayList;import java.util.List;/** * * @author naivor * 迭代器模式-场景类 */public class IteratorModel { publi

2015-02-05 15:50:03 365

原创 第二十四篇 设计模式--备忘录模式

定义:在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。因此以后就可将该对象恢复到原先保存的状态。代码:package memento_model;/** * * @author naivor * 备忘录模式-场景类 */public class MementoModel { public static void main(String[] arg

2015-02-05 14:53:41 414

原创 第二十三篇 设计模式--策略模式模式

定义:定义一系列的算法,把它们一个个封装起来,并且使他们可相互替换。本模式使得算法可以独立于使用它的客户端而变化。代码:package strategy_model;/** * @author naivor * 策略模式-场景类 */public class StrategyModel { public static void main(String[] args) {

2015-02-05 14:18:43 303

原创 第二十二篇 设计模式--访问者模式

定义:表示一个作用于某个对象结构中的各元素的操作,使你可以在不改变个元素的类的前提下定义作用于这一系列元素的新操作。、代码:package visitor_model;import java.util.ArrayList;import java.util.List;/** * @author naivor * 访问者模式-场景类 */public class Visit

2015-02-05 13:41:39 340

原创 第二十一篇 设计模式--中介模式

定义:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。代码:package mediator_model;/** * @author naivor * 中介模式-场景类 */public class MediatorModel { public static void main(String[]

2015-02-05 11:10:34 318

原创 第二十篇 设计模式--解释器链模式

定义:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。代码:package interpreter_model;import java.util.ArrayList;import java.util.List;/** * @author naivor * 解释器模式-场景类 */public class Interpret

2015-02-05 09:56:28 354

原创 第十九篇 设计模式--职责链模式

定义:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。代码:package chainofresponsibility_model;public class COFModel { public static void main(String[] args) { Handler hand

2015-02-04 17:44:39 279

原创 第十八篇 设计模式--状态模式

定义:允许一个对象在其内部状态改变时改变它的行为,让对象看起来似乎修改了它的类。定义:package state_model;/** * @author naivor * 状态模式-场景类 */public class StateModel { public static void main(String[] args) { Context context=new Co

2015-02-04 17:05:18 384

原创 第十七篇 设计模式--命令模式

定义:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,可以对请求排队或记录请求日志,以及支持可撤销的操作。代码:package command_model;/** * @author naivor * 命令模式-场景类 */public class CommandModel { public static void main(String[] args)

2015-02-04 15:50:47 317

原创 第十六篇 设计模式--模版方法模式

定义:定义一个操作的算法骨架,而将一些步骤延迟到子类中,模版方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。代码:package template_model;/** * @author naivor * 模版方法模式-场景类 */public class TemplateModel { public static void main(String[]

2015-02-04 15:14:11 421

原创 第十五篇 设计模式--观察者模式

定义:定义对象间的一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖于它的对象都得到通知并被自动更新。代码:package observer_model;import java.util.ArrayList;/** * @author naivor * 观察者模式-场景类 */public class ObserverModel { public static

2015-02-04 14:37:28 302

原创 第十四篇 设计模式--外观模式

定义:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。代码:package facede_model;/** * @author naivor * 外观模式-场景类 */public class FacedeModel { public static void main(String[] args) { Fac

2015-02-04 13:45:30 465

原创 第十三篇 设计模式--代理模式

定义:为其他对象提供一种代理以控制对这个对象的访问。代码:package proxy_model;/** * @author naivor * 代理模式-场景类 */public class ProxyModel { public static void main(String[] args) { Request subject=new Proxy(); //请求时直接找

2015-02-04 12:00:10 315

原创 第十二篇 设计模式--享元模式

定义:运用共享技术有效地支持大量细粒度对象。代码:package flyweight_model;import java.util.Hashtable;/** * @author naivor * 享元模式-场景类 */public class FlyweightModel { public static void main(String[] args) { Fly

2015-02-04 11:35:43 409

原创 第十一篇 设计模式--组合模式

定义:将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。代码:package composite_model;import java.util.ArrayList;/** * @author naivor * 组合模式-场景类 */public class CompositeModel { public stati

2015-02-04 10:58:18 541

原创 第十篇 设计模式--桥接模式

定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化。代码:package bridge_model;/** * @author naivor * 桥接模式-场景类 */public class BirdgeModel { public static void main(String[] args) { Abstraction abstraction=ne

2015-02-04 10:16:47 433

原创 第九篇 设计模式--装饰模式

定义:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更加灵活。代码:package decorator_model;/** * @author naivor * 装饰模式-场景类 */public class DecoratorModel { public static void main(String [] args){ Concre

2015-02-04 09:34:37 448

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除