自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

论一个程序员的自我修养

不负韶华,砥砺前行!!!

原创 In FontFamilyFont, unable to find attribute android:font的报错处理

Information:Gradle tasks [:app:generateDebugSources, :app:mockableAndroidJar, :app:prepareDebugUnitTestDependencies, :app:generateDebugAndroidTestSou...

2018-07-20 13:53:18 1497 0

原创 Android Studio 项目导入的正确姿势

导入其他人的项目对于咱们开发人员来说是一个基础,可有些时候导入了10分钟20分钟甚至更久死活一直导不进来。这里就教大家一个轻松便捷的导入方法,顺便跟大家探讨一下导入程序的正确姿势。 第一步,首先查看根目录的build.gradle文件 拿到项目之后先不着急打开导入,咱们先查看一下根目录...

2018-07-20 11:46:57 281 0

原创 Android自定义View之钟表绘制

Android自定义View之钟表绘制 自定义view一直是Android进阶路上的一块石头,跨过去就是垫脚石,跨不过去就是绊脚石。作为一个攻城狮,怎么能被他绊倒,一定要跟它死磕到底,这段时间看到自定义View新手实战-一步步实现精美的钟表界面特别漂亮,咱们也来手撸一个。 先看下效果图...

2018-07-13 15:36:06 3829 3

原创 [问题解决]Android中getDrawable和getColor过时的替代方法

Android SDK 升级到 23 之后,用getDrawable()和getColor()方法就过时了,只不过当时没在意,而且也能正常运行,没报错就用。不过每天看着一条横线很不舒服,特此寻提替代方法。症状网上给的方案:谷歌推荐:

2017-09-22 11:32:50 642 0

原创 Glide与CircleImageView加载圆形图片的问题

最近在项目中遇到了一个奇怪的问题,Glide和CircleImageView一起使用加载圆形头像,发现第一次死活都加载出来,出来的是一张占位图,当你刷新的时候或者第二次进入的时候才能加载出来。究其原因,CircleImageView 把位置占了。这时候我们有如下4种解决方案,不管是哪一种都是可以解...

2017-09-05 18:48:01 450 0

原创 Android性能优化之电量优化

很多朋友都抱怨Android机电量不行,没有iPhone的耐用,问我怎么解决。我首先恭喜你们拥有一颗发现的眼睛,电量不耐用是Android的通病。明明电量是iPhone的几倍,但是可能还没有它耐用,为什么?究其原因,就是Android手机本身系统和ios的系统是不一样的(因为没有开发手机驱动的经验...

2017-09-05 15:12:21 544 0

原创 基于开源项目搭建属于自己的技术堆栈

在技术面试的时候肯定都会问到使用了哪些第三方框架,为什么使用它而不用其他的。身边朋友就有这样的亲身经历: 面试官:你们项目中加载图片都是用的什么框架? 面试者:Glide啊(内心窃喜) 面试官:为什么使用Glide而不用其他的? 面试者:(沉默10s),Glide好啊,...

2017-08-31 15:56:01 1498 0

原创 Android性能优化之图片优化

图片的加载和显示是每个APP都避免不了的问题,再了解Android中如何图片优化之前,先看一下Android系统支持的图片格式。 1. 图片的格式目前移动端Android平台原生支持的图片格式主要有:JPEG、PNG、GIF、BMP、和WebP(自从Android 4.0开始支持),但是在Andr...

2017-08-28 12:04:32 1539 0

原创 Android性能优化之代码优化

作为一个Android程序员,代码优化是最基本的能力。根据Android官方的建议,编写高效的代码的两个基本准则是: 不要做冗余的工作 尽量避免次数过多的内存分配操作 这里还有还有第三个准则:深入的理解所用语言特性和系统平台的API,具体到Android开发,就...

2017-08-25 15:57:29 527 0

原创 商城购物车加减控件的简单封装(续),解决ListView中数据错乱的问题

在上一篇文章中,我们学习了商城购物车加减控件的简单封装,知道了封装的思路过程和使用方法。还没有看过上一篇文章的朋友,建议先去阅读 商城购物车加减控件的简单封装 。这段时间收到一些小伙伴的反馈,在ListView或者是RecyclerView中存在item复用导致数据错乱的问题,这篇文章就重点解决...

2017-08-17 17:39:01 1361 2

原创 Android6.0运行时权限

Android6.0系统中引用了运行时权限功能,从而更好的保护了用户的安全和隐私。 哪些是Android列出的危险权限 权限组名 权限名 CALENDAR READ_CALENDAR / WRITE_CALENDAR CAMERA CAMERA CONTACTS RE...

2017-08-16 00:24:21 299 0

原创 商城购物车加减控件的简单封装

我们都知道,购物车是做商城项目必不可少的一个环节,购物车中的加减控件就是商城中的重中之重,最近项目中也用到了加减控件,但是使用起来样式不能随便更改,决定简单封装一下,以后用到的时候就不那么麻烦了,几行代码就搞定。本文主要是对封装的过程进行一下整理。 1. 先看下效果图效果图:Github地址:Ad...

2017-08-14 16:15:50 2405 3

原创 Kotlin应用于项目踩过的坑

在谷歌宣布Kotlin成为一级开发语言的时候就开始学习kotlin,现在已经在项目中开发使用了。我目前负责的项目老代码全是java,我不可能全转成kotlin,所以即便使用了kotlin,也只是在新建文件的代码里使用,老代码继续用java。kotlin的好处就是完全兼容java,java调用kot...

2017-08-09 17:45:13 4474 1

原创 Kotlin中val和var的区别

变量可以很简单地定义成可变(var)和不可变(val)的变量。这个与Java中使用的final很相似。但是不可变在Kotlin(和其它很多现代语言)中是一个很重要的概念。一个不可变对象意味着它在实例化之后就不能再去改变它的状态了。如果你需要一个这个对象修改之后的版本,那就会再创建一个新的对象。这个...

2017-08-09 13:51:20 2052 0

原创 Kotlin编码规范

最近项目中开始慢慢使用Kotlin编写代码,对于一些规范还是必要地。 资料原文:http://www.kotlinlang.org/docs/reference/coding-conventions.html 命名风格如果拿不准的时候,默认使用Java的编码规范,比如: 使用驼峰法命名(并避...

2017-08-09 11:48:39 436 0

转载 简析TCP的三次握手与四次挥手

TCP是什么?具体的关于TCP是什么,我不打算详细的说了;当你看到这篇文章时,我想你也知道TCP的概念了,想要更深入的了解TCP的工作,我们就继续。它只是一个超级麻烦的协议,而它又是互联网的基础,也是每个程序员必备的基本功。首先来看看OSI的七层模型: 我们捡重点看几个: 链路层,也称作数据链路...

2017-08-02 18:18:58 340 2

原创 64K方法数限制解决办法

随着业务逻辑越来越多,业务模块也越来越大,不可避免会遇到64K方法数的限制。最直观的表现就是编译报错:较早版本的编译系统中,错误内容如下:Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, ...

2017-07-27 16:26:49 812 0

原创 书写简洁规范的代码

写出简洁规范的代码对于开发者而言非常重要,它体现了开发者自己的专业性和技术水平,而且能够赢得别人的赞赏。对团队来说,团队成员遵循统一的代码规范,能够更好地维护代码库的稳定和谐。 Android是基于Java语言进行开发的,因此说到编码规范,首先需要遵循Java的编码规范。 - 1 Java编码规范...

2017-07-21 18:18:07 7042 1

原创 Android数据序列化方案研究

数据的序列化在Android开发中占据着重要的地位,无论是在进程间通信、本地数据存储又或者是网络数据传输都离不开序列化的支持。而针对不同场景选择合适的序列化方案对于应用的性能有着极大的影响。 广义上讲,序列化是将数据结构或者对象转换成可用于存储或者传输的数据格式的过程,在序列化期间,数据结构...

2017-07-12 14:48:06 1214 0

原创 Android异步处理技术

《Android 高级进阶》读书笔记 Android中,异步处理技术有很多种,常见的有Thread、AsyncTask、Handler&Looper、Executors等,在实际项目中,我们需要根据具体业务需求进行选择、一个完整的异步处理技术继承树如下: 1. Thread线程是Ja...

2017-07-11 18:14:39 339 0

原创 ANR产生的原因及定位分析

ANR全称是Application Not Responding,意思是应用程序无响应。相信从事Android开发的肯定遇到过。ANR的直观体验是用户在操作App的过程中,感觉界面卡顿,当界面卡顿超过一定时间(一般5秒),就会出现ANR对话框。ANR对于一个应用来说是不能承受之痛,其影响并不比应用...

2017-07-10 15:33:45 1482 0

原创 注解在Android中的应用

《Android 高级进阶》读书笔记 Android 开发中在很多地方都用到了注解,注解在Android中的作用不可谓不大。Android Support Library甚至专门推出了一个支持库Support Annotation,之前的一篇文章Android进阶Support Annota...

2017-07-07 16:12:17 522 0

原创 Gradle在Android Studio中的应用技巧

Gradle是Android Studio标配的构建系统,想要熟练使用Android Studio进行Android开发,必须对Gradle有一定程度的认知。这里主要是说一下关于Gradle的使用技巧 共享变量的定义Gradle开发中会涉及到很多配置,比如不同module中都要配置compileS...

2017-07-06 14:50:33 313 0

原创 Android Studio中的NDK开发

读书笔记:《Android 高级进阶》 NDK简介 NDK 是 Native Developmentit的缩写,是Google在Android开发中提供的一套用于快速创建native工程的一个工具。 使用这个工具可以很方便的编写和调试JNI的代码。NDK是一系列工具的集合 NDK提供了...

2017-07-04 14:29:32 358 0

原创 Android Design Support Library使用详解(二)

上一篇文章咱们已经学习了Snackbar,TextInputLayout、TabLayout、NavigationView、FloatingActionButton这四个MD新特性布局。如果还没有看的请先看下Android Design Support Library使用详解(一),前面几个比较简...

2017-07-03 17:00:53 4527 0

原创 Android Design Support Library使用详解(一)

这里写链接内容> Design Support Library是在Google I/O 2015上发布的一个全新兼容函数库,它使得开发者可以在Android2.1(API = 7)及以上的设备中实现Material Design效果,这个函数库提供了一系列的控件,主要包括:Snackbar,...

2017-06-30 16:35:21 1005 0

原创 PX、DP和SP之间的换算

在Android开发中,尺寸换算可以说既简单又复杂,而且还比较碎,特别是屏幕适配的时候肯定会用到他们。今天就来总结一下他们三者的关系,首先说下他们都是什么。px:像素单位。最基础的图像构成元素单位 dp:与密度无关的像素,这是一个基于屏幕物理密度的抽象单位。 这里要解释一下密度的概念,密度(d...

2017-06-29 18:22:41 530 0

原创 Android进阶Support Annotation Library 使用详解

Support Annotation Library是从Android Support Library 19.1 开始引入的一个全新的函数包,它包含一系列有用的元注解,用来帮助开发者在编译期间发现可能存在的Bug。Support Library本身也使用Annotation Library 提供的...

2017-06-29 15:04:27 2389 1

原创 Android动画机制完全解析

在Android 3.0之前的版本,我们能使用的动画类型有两种,分别是逐帧动画和补间动画;在Android3.0发布时,Android SDK又为开发者带来了更加强大灵活的属性动画,使得实现复杂的动画效果更加容易;随着时间的推进,在Android4.4中,Android SDK又为开发者带来了an...

2017-06-28 17:28:07 787 0

原创 Android View的绘制流程

View的绘制和事件处理是两个重要的主题, 之前说过View的事件分发处理机制,如果还不太清楚的同学可以先看一下Android Touch事件的传递机制,这里不再多说了。对于一些系统自带控件实现不了的功能,就需要我们自己去自己绘制,前提是你需要熟练掌握View的绘制流程。 1 在正式说View的绘...

2017-06-27 16:32:35 2099 2

原创 MVP应用架构模式

MVP全称是Model View Presenter ,MVP模式可以分离显示层和逻辑层,他们之间通过接口进行通信,降低耦合。 在android中,业务逻辑和数据存取是紧紧耦合的,很多缺乏经验的开发者很可能会将各种各样的业务逻辑塞进某个Activity、Fragment或者自定义View中,这样会...

2017-06-26 15:33:43 645 0

原创 MVC的介绍与实战

MVC的基本简介MVC全称是Model - View - Controller,是模型(model)-视图(view)-控制器(controller)的缩写。MVC是一种框架模式而非设计模式,GOF把MVC看作是3种设计模式:观察者模式、策略模式与组合模式的合体,而核心是观察者模式。简而言之,框架...

2017-06-22 18:11:06 311 0

原创 23种设计模式之桥接模式

桥接模式也称为桥梁模式,是结构型设计模式之一。现实生活中桥梁大家肯定知道,是连接河岸两侧的重要枢纽,至于桥接模式跟它很类似。 桥接模式的定义 将抽象部分与实现部分分离,使它们都可以独立地进行变化。桥接模式的使用场景 1.如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在...

2017-06-22 17:45:53 591 0

原创 23种设计模式之外观模式

外观模式在开发过程中的运用频率非常高,通过一个外观类使得整个系统的接口只有一个统一的高层接口,这样能够降低用户的使用成本,也对用户屏蔽了很多实现细节。 外观模式的定义 要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。外观模式的使用...

2017-06-21 16:09:43 471 0

原创 23种设计模式之享元模式

享元模式是对象池的一种实现,用来尽可能减少内存使用量,它适合用于可能存在大量重复对象的场景,来缓存可共享的对象,达到对象共享,避免创建过多对象的效果,这样就可以提升性能、避免内存溢出等。 享元对象中的部分状态是可以共享的,可以共享的状态称为内部状态,内部状态不会随着环境变化,不可共享的状态则...

2017-06-20 14:19:56 302 0

原创 23种设计模式之装饰模式

装饰模式也称为包装模式,结构型设计模式之一,其使用一种对客户端透明的方式来动态地扩展对象的功能,同时它也是继承关系的一种替代方案之一。 装饰模式的定义 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活装饰模式的使用场景 需要透明且动态地扩展类的功能时装饰模式的U...

2017-06-16 13:56:48 309 0

原创 23种设计模式之适配器模式

适配器模式在我们的开发中使用率极高,代码中随处可见。像ListView 、GridView 、RecyclerView等都使用了Adapter。一般优化也会是对它的优化。 适配器模式的定义 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够...

2017-06-15 16:18:08 276 0

原创 23中设计模式之组合模式

组合模式也称为部分整体模式,结构型设计模式之一,组合模式比较简单,它将一组相似的对象看作一个对象处理,并根据一个树状结构来组合对象,然后提供一个统一的方法去访问相应的对象,以此忽略掉对象与对象集合之间的差别。 组合模式的定义 将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象...

2017-06-14 18:10:27 287 0

原创 Android 7.0 更新APK在安装时的报错 android.os.FileUriExposedException解决办法

1、在AndroidManifest.xml中添加如下代码<provider android:name="android.support.v4.content.FileProvider" android:author...

2017-06-14 15:11:26 1033 0

原创 Android Touch事件的传递机制

android中会经常遇到多个View ViewGroup嵌套的问题,如果想要快速的解决这种问题,就需要对View的事件传递有较深入的理解。一次完整的事件传递机制,主要是三个阶段,分别是事件的分发,拦截和消费。 1.1 触摸事件的主要类型 触摸事件对应的是MotionEvent类,事件的类型主要...

2017-06-14 14:20:38 737 4

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