自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

mengxin1995的博客

心有多大,舞台就有多大。

  • 博客(64)
  • 资源 (6)
  • 收藏
  • 关注

原创 Android开发者值得收藏的网站

极客导航(小源)玩Android(张鸿洋)codeKK张大神的博客有心课堂大牛的博客菜鸟窝技术小黑屋开发技术前线AndroidDevToolsAndroid开发技术周报GcsSloop(自定义控件)Android开发社区

2016-11-09 16:40:36 724

原创 Android学习笔记(持续更新)

JAVA1 . Java Lambda表达式入门 2 . Java反射机制详解 3 . 深入理解Java:注解(Annotation)基本概念 4 . 深入理解Java:注解(Annotation)自定义注解入门 5 . 深入理解Java:注解(Annotation)–注解处理器 6 . Android中知道这几个Java反射就够了 7 . Java Thread Pool 8 .

2016-11-04 23:02:43 892

原创 微信推送好文锦集(持续更新)

Activity 全屏,沉浸式模式这一篇就够了(getActionBar()用getSupportActionBar()代替)Realm for Android详细教程(一个新的数据库)DownloadManager使用详解(一个关于下载的类)自定义具有Material Design效果的控件(可以作为一个登陆或者评论界面出现)教你一分钟实现动态模糊效果WebView详解与简单实现Andr

2016-11-02 19:54:57 742

原创 Fresco内部诟病引起的初次从网络加载PNG图片失败

如题描述,这个问题在项目中存在已久,今天由于自己的功能在首页,初次启动的体验极其糟糕,所以硬下头皮把这个问题解决了。  先来描述一下怎么样一个差的体验吧。就是当我第一次加载网络PNG(当时并不知道是由于这个原因引起的)的时候,就一直显示的是默认的图片,本来按照Fresco的机制是,先显示默认图片,然后去网络加载图片,当图片下载下来就会替换掉原来的默认图片。感谢https://github.co

2018-02-08 19:45:12 2012 2

原创 定制阿里代码检查,实现你自己的代码规范检查

几个月前,阿里开源了p3c,我也接到了老大交给我的技术改造。是这样的,app是老项目了,半年前接入了ARouter,由于Activity繁多,就没有去全局支持ARouter,这不,技术改造来了,就是定义一个规则,全局的在项目里面搜一遍,所有Activity如果没有@Route()注解,就把它揪出来。那么来吧。于是到同性恋交友网站(github)上面,把阿里代码检查(这里附上链接https://

2018-01-23 17:59:43 6684 1

原创 Android屏幕适配实战

说一下在项目里面遇到的一个问题,和解决思路。 需求来源于运营小姐姐,她们希望在App的搜索关键字前面加上图片醒目效果图如下布局很简单左边一个SimpleDraweeView,右边一个TextView,图片来自于服务端。小姐姐们希望活动标高度写死,宽度服务端返多少大小的图片就显示多少大小。然后到了一年一度撕逼的时候,撕逼原因来自与SimpleDraweeView只支持宽度高度都写死。撕逼结果当然是

2017-10-19 19:48:06 459

原创 Java基础,写一个flat函数

有这样一个需求,在一个A类中,有个一对象C数组arr,,对象里面有一个字段叫做x;在一个B类中,有一个对象D数组arr,对象里面有一个字段叫做y;有点晕,我们来看看对应的JavaBean A.javapublic class A{ public List<C> arr = new ArrayList<>(); static class C{ public int x

2017-08-19 11:16:59 1376

原创 Java重排序对多线程的影响

上一次的发文远在两个月前了,算是经历了一段低糜期,本来打算的更新一直断更到现在。还是好好学习吧,努力的人运气一定不会差的。这一篇文章来谈一谈Java虚拟机对代码优化带来的影响吧。我们知道无论什么语言,最后驱动计算机的那一定是汇编,Java代码编译后会变成一段字节码,通过Java虚拟机的类加载机制ClassLoader加载到虚拟机里面,最后便是把它转化成汇编指令。通过JMM(Java内存模型)实现内存

2017-06-17 14:53:58 2019

原创 Java并发开篇

记得在一个月前的面试中被面试官问道,聊聊你对java并发的理解,当时我只说出了几个关键字,线程池,接着面试官问我volatile实现原理,我在半年前看过一篇博客讲过然而忘记了,很失败(所以一回去就去恶补了原理),之后面试官问我,有用过concurrent包下的类吗?当时的我一脸懵逼。所以想写一个并发系列文章,主要还是内容的搜集吧。更新应该会挺慢的,慢慢来。1 . volatile关键字修饰变量,保证

2017-04-29 17:48:28 705

原创 门面模式

门面模式(Facade Pattern)定义:Provide a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the subsystem easier to use.(要求一个子系统的外部与其内部的通讯必须通过一个统一的对象进行。

2017-03-18 21:02:12 455

原创 观察者模式

定义:定义对象间一种一对多的依赖关系,是的每当一个对象改变状态,则所有依赖于他的对象都会得到通知并被自动更新. 我们先来解释一下观察者模式的几个角色名称:Subject被观察者:定义被观察者必须实现的职责,它必须能够动态地增加、取消观察者。它一般是抽象类或者是实现类,仅仅完成作为被观察这必须实现的职责:管理观察者并通知观察者。Observer观察者:观察者接收到消息后,机进行update(更

2017-03-16 19:37:03 325

原创 组合模式(树状结构)

定义:将对象组合成树型结构以表示”部分-整体”的层次结构,是的用户对单个对象的使用具有一致性.我们先来看看组合模式的通用类图 几个角色介绍下: 1. Component抽象构建角色, 定义参加组合对象的公共方法和属性,可以定义一些默认的行为或熟悉, 2. Leaf叶子构件2, 叶子对象,其下再也没有其他的分支,也就是遍历的最小单位. 3. ComPosite树枝构件, 它的作用是组

2017-03-15 19:34:39 610

原创 自定义View,继承View

在我们通常的写自定义View的时候,一定要注意如下几个点. 1. 让View支持warp_content,通过在onMeasure中设置MeasureSpec来实现 2. 如果有必要,让你的View支持padding,在onDraw中实现,如果是ViewGroup则要在onMeasure和onLayout中考虑自己的padding和子元素的margin的影响 3. 尽量不要在View中使用Ha

2017-03-11 19:02:54 665

原创 IPC机制的AIDL进阶,结合观察者模式

好久没写博客了,最近确实挺忙的,感情也不顺利,一直萎靡着,就这样吧,进入主题了.在半年前写过篇AIDL的入门Demo,< IPC机制第二篇,AIDL实现> 这边的案例实现是,客户端只有去请求服务器,服务器才会返回结果,那假设有这样一个需求:用户不想时不时地去访问,而是希望当服务器有最新咨询的时候能够主动推送到客户端上来,这就是一种典型的观察者模式了,当然里面还有一些问题需要注意的我们等下来总结.1

2017-03-06 22:25:24 696

原创 适配器模式

定义:将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。同样的我们先来看一个类图 这里主要涉及到三个角色: 1 . Target目标角色:该角色定义把其他类转换为何种接口,也就是我们的期望接口。 2 . Adaptee源角色:就是被适配的那个接口 3 . Adapter适配器角色:适配器模式中的核心角色,其他两个角色都

2017-01-17 16:54:13 369

原创 Android中Bitmap, Drawable, Byte,ID之间的转化

1 . Bitmap 转化为 byteByteArrayOutputStream out = new ByteArrayOutputStream();bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);byte[] array= out.toByteArray();2 . byte转化为bitmapBitmap bitmap = Bitma

2017-01-17 12:15:44 367

原创 策略模式

定义:定义一组算法,将每个算法都封装起来,并且使他们之间可以相互换。我们先来看一看他的类图 这里有三个角色我们一一来解释一下 1. Context 封装角色:它叫做上下文角色,起承上启下封装作用,屏蔽高层模块对策略、算法的直接访问,封装可能存在的变化。 2. Strategy抽象策略角色:策略、算法家族的抽象,通常为借口,定义每个策略或算法必须具有的方法和属性。 3. Concre

2017-01-14 23:19:24 312

原创 装饰模式

定义:动态的给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。 我们先来看一下装饰模式的类图吧 这里有几个角色说明一下1 . Component抽象组件 Component是一个接口或者抽象类,就是定义我们最核心的对象,也就是原始对象 2 . ConcreteComponent具体组件 ConcreteComponent是最核心、最原始

2017-01-04 15:22:51 315

原创 责任链模式

定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,知道有对象处理他为止。我们先来看一下类图 可以看到我们定义了一个操作接口(Handler),多个有机会处理同一个请求的操作去扩展这个操作接口,有点绕,我们来联系到现实生活中的一个例子就好理解了。比如我们要向公司请求一个福利,那我们可能会去和我们的项目经理说,然后项目经理

2017-01-02 22:16:04 372

原创 命令模式

定义:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。我们先来看一下命令模式的一般类图 在该类图中,我们可以看到三个角色, 1. Receiver接受者角色,该角色就是落实到最后代码实际执行了部分 2. Command命令角色,这是命令模式的核心类,我们通过扩展该类来实现多个命令的解耦。把请求方(Invoker)

2017-01-01 20:02:59 401

原创 中介者模式

定义:用一个中介对象封装一系列的对象交互,中介者使各个对象不惜要显示地相互作用,从而使其耦合松散,而且可以独立的改变他们之间的交互。我们在实际开发中可能会遇到这样的网状的类间耦合关系,如图。 我们把各个节点想成各个类,连线,表示其耦合关系。那中介这模式其实借鉴了计算机网络中的路由结构,他就将上图关系转化成了,如图 中间这个节点,就是中介者,从图中可以看出他减少了类间的耦

2016-12-28 14:08:47 337

原创 记录在Ubuntu下搭建React Native踩过的坑

首先给出React Native中文官网,可想而知,如果真的这么轻松,可就不会来写这篇文章了。 第一个坑点,拿到官网第一个例子的时候,会报一个找不到SDK路径这样的错误,解决方法,在项目目录AwesomeProject,下的android文件夹下,新建一个文件,命名为local.properties,在文件里面加上,这样一句话。sdk.dir = /home/mengxin/Android/Sd

2016-12-22 14:58:49 638

原创 原型模式

定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。我们知道产生一个对象,我们可以通过new关键字,但如果我们是通过对象复制来实现的产生一个对象,那么,这种模式叫做原型模式。 先来看一下原型模式的通用代码。public class PrototypeClass implements Cloneable { //覆写父类的Object方法 @Override

2016-12-21 13:35:04 355

原创 代理模式

定义:为其他对象提供一种代理以控制对这个对象的访问。 代理模式也叫作委托模式,它频繁出现在我们的程序设计中。一般可分为两类,一类是静态代理,一类是动态代理。本篇文章只讲动态代理。 面向横切面编程(AOP),的核心就是采用动态代理机制。 这里出现了一个名词,什么是面向横切面?笔者Google了一下,大胆地下了一个结论,笔者认为,就是所谓的,对一个类中的既定方法,在运行过程中进行一定的补充。

2016-12-12 23:13:09 294

原创 建造者模式

定义:将一个复杂对象的构建与它的表示分离,使得同样的构建可以创建不同的表示。我们需要理解的是,建造者模式就是模板方法的升级版.在建造者模式中有如下4个角色。 1. Product产品类,通常是实现了模板方法模式,也就是有模板方法和基本方法。 2. Builder抽象建造者,规范产品的组件,一般由子类实现。 3. ConcreteBuilder具体建造者,实现抽象定义的所有方法,并且返回一

2016-12-11 18:28:27 336

原创 模板方法模式

定义:用来定义一个操作中的算法框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。在一个软件开发的过程中,如果相同的一段代码,复制过两次,就需要对设计产生怀疑。面向对象要求我们,用抽象来解决子类共性的封装。模板方法,有两种方法,一种是基本方法,另一种是模板方法。下面来看一个基本模板。抽象模板类 public abstract class Abstract

2016-12-08 13:21:37 282

原创 抽象工厂模式

定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类。 这是抽象工厂模式的官方定义。但是我觉得,抽象工厂模式就是工厂方法的升级版本。所以要了解抽象工厂模式首先得要熟悉工厂方法,抽象工厂方法其实对工厂方法的产品类进行了扩充,现在来看一张图。 这张图是什么意思呢?举个例子,我们把1想成QQ,2想成WPS,A想成Linux,B想成Windows。OK,那为什么要这样想

2016-12-06 18:59:30 386

原创 工厂方法模式

定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。这是标准工厂方法的类图。 下面我们来列举一个比较实用的通用模板。抽象产品类public abstract class Product { //产品类的公共方法 public void method1(){ //业务逻辑处理 } //抽象方法 p

2016-12-05 13:39:30 300

原创 单例模式

单例模式定义:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。使用场景: 1. 要求生成唯一序列号的环境; 2. 在整个项目种需要一个共享访问点或共享数据; 3. 创建一个对象需要消耗的资源过多,如要访问IO和数据库等资源; 4. 需要定义大量的静态变量和静态方法(如工具类)的环境,可以采用单例模式(当然,也可以直接声明为static的方式)。创建单例一般分为三步:

2016-12-04 18:47:15 319

原创 六大设计原则,开闭原则

开闭原则定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。 这句话的意思是说,一个软件实体应该通过扩展来实现变化,而不是通过写该已有的代码来实现变化。同样的,我们在现实开发中,最乐意做的事情就是扩展一个类,而不是修改一个类,不管原有的代码写的多么优秀还是多么糟糕,让开发读懂原有的代码,而后再修改是一件非常痛苦的事情。我们来看这样一个例子,T先生开了一家书店,专门卖小说类的书籍,然后他

2016-12-03 20:35:17 448

原创 六大设计原则,迪米特法则

“任何两个素不相识的人中间最多只隔着6个人,即只通过六个人就可以将他们联系在一起”,这就是著名的“六度分隔理论”。但是这个理论用在程序设计中,就不行了,如果一个类跳到另一个类,需要跳两次以上,那么我们就要考虑考虑想办法重构代码了。其实迪米特法则的核心观念就是类间解耦,弱耦合。迪米特法则也称最少知识原则。他对类的低耦合,提了四层含义。 1.一个类只与直接的朋友通信。那么,什么叫做一个类的朋友呢?出

2016-12-02 21:12:24 363

原创 六大设计原则,接口隔离原则

接口隔离原则定义: 1.客户端不应该依赖他不需要的接口 2.雷剑的依赖关系应该建立在最小的接口上看这个这定义兼职绕口,我们先来回想一下单一职责原则这个原则讲的是一个接口在业务逻辑上,只能有一个职责。而接口隔离原则说的是要建立单一接口,接口尽量细化,接口中的方法尽量少。看起来这两个原则很像,下面我们来举个例子解释一下他们之间的差别。假设,我们要写一个美女的接口。那接口中会有这几个方法,描述长相的,

2016-12-01 13:22:27 376

原创 六大设计原则,依赖倒置原则

依赖倒置原则的定义百度搜一下,很绕口,在Java中的表现就是:1.模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的。 2.接口或抽象类不依赖于实现类。 3.实现类依赖接口或抽象类。它的本质用六个字概括就是“面向接口编程”。我们先来看一下如果我们不是面向接口编程,我们会面临什么样子的窘境。T先生最近写了一款软件赚了一大笔钱,于是他买了一辆宝马(BMW),

2016-11-30 14:44:08 430

原创 六大设计原则,里氏替换原则

我们都知道继承是面向对象语言中极其重要的一部分语法,当然他的存在给了我们很大的便利,但是同样他也有很多的缺陷。继承是侵入性的,只要继承,就必须拥有父类的所有属性和方法;降低了代码的灵活性。子类必须拥有父类的属性和方法,上子类多了很多的约束;增强了耦合性。当父类的常量,变量,方法,被修改是,需要考虑子类的修改;那么,里氏替换原则就是主要对继承做了一些规范。我们先来看一下里氏替换原则的定义:

2016-11-29 16:58:55 1183

原创 六大设计原则,单一职责原则

我在差不多半年前读过这样一本书,《Head First 设计模式》,当时就被设计模式这四个字吸引了,曾经一度让我有了初恋般的感觉。但是没想着,做点记录,现在挺后悔的,所以差不多把设计思想又还给作者。这次重拾设计模式,就要开始做记录啦,写的不好的地方,多多包涵。献上一句我做喜欢的话,“三十年河东,三十年河西,莫欺少年穷”。在六大设计原则里面,单一职责原则是最引人们争议的,下面我们就围绕这几个问题来进行

2016-11-28 22:38:39 597

原创 2016年总结,辛勤劳作的一年

直到刚才听到门外的爆竹声,才意识到这一年,快结束了。今天是11月26号,其实离2017年还有一段距离,趁着今天有空,给自己写一篇文章。其实,我是很不想说,你好,2017,这句话的。因为说了的后果是已经到了2017了。时间永远是冰冷的,其实不管是2016年也好,2017年也好,我都不想错过什么,因为我知道,错过就是回不来了。其实,我的2016年也不算糟糕,我依旧可以由着性子写写代码,或是看会书,偶尔写

2016-11-26 21:25:29 2818

原创 RxJava笔记

给 Android 开发者的 RxJava 详解Awesome-RxJava

2016-11-07 12:34:42 337

原创 Android百度地图(二)

在百度地图(一)的基础上,进行的操作1.地图图层public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_1: // 显示普通地图 baiduMap.setMapType(BaiduMa

2016-11-06 14:36:50 347

原创 Android百度地图,HelloMap(一)

最近做到项目要用到百度地图,只拿到Api的文档,还是很痛苦的,博主找了很多地方,所以这里记录一下,后续还会有关于百度地图的文章出来。用百度地图,第一步就是配置环境,密钥之类的,这里给出网址  http://lbsyun.baidu.com/index.php?title=androidsdk/guide/key http://lbsyun.baidu.com/index.php?title=

2016-11-04 13:01:00 497

原创 IPC第四篇,Socket通信

这边提供一个简单的SocketDemo里面两个关键的类TCPServerService.javapublic class TCPServerService extends Service { private boolean mIsServiceDestoryed = false; private String[] mDefinedMessages = new String[] {

2016-10-15 14:21:11 426

多个AIDL协作开发

多个AIDL协作开发

2016-10-15

JNI_C回调Java

JNI_C回调Java

2016-09-09

Android侧拉菜单

Android侧拉菜单实现

2016-09-02

Android下拉刷新

自定义控件实现Android下拉刷新,上拉刷新

2016-08-31

Android完全自定义控件

Android完全自定义控件,自定义属性

2016-08-28

Android自动轮播图片

实现图片的自动轮播效果

2016-08-28

空空如也

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

TA关注的人

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