自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(387)
  • 资源 (2)
  • 收藏
  • 关注

原创 项目实战:优雅的实现专车意见反馈

今天我们拆解一下专车的意见反馈,涉及到TextWatcher监听、特殊字符过滤Pattern等知识点和hideInputMethod收键盘、setEnabled按钮使能、shape圆角矩形、maxLength最大长度、hint默认提示、String.format优化效率等细节,如图是我们开发时的标注图,聚焦到每一像素,对UI敏感,练就一双火眼金睛···意见反馈标注图.png

2017-06-07 16:24:13 696

原创 项目实战:封装友盟,数据化监控应用

《从理论到实践,埋点专车费用明细模块》在简书首页、人人都是产品经理等各大媒体取得了不错的反响。正所谓授人以鱼不如授人以渔。今天我们从代码层面进行埋点实现,引入友盟并进行封装,然后视具体规划埋点,数据化监控我们的应用,数据分析,Go。首先,参考官方文档申请key,添加权限,进行一系列准备操作。耐心花10~30 min 都看一遍哈。友盟统计分析Android文档http://dev

2017-06-01 16:58:09 726

原创 项目实战:自定义View实现右上角更多,让页面更简洁

从APP页面的视觉设计上考虑,一个页面呈现的元素不能太多,最好一个页面只做一件事,干净整洁,这时,我们可以考虑将一些功能收入右上角更多中,今天我们通过一个自定义View快速实现右上角更多功能,让页面更简洁,产品更优雅。如图,以我们专车的费用明细为例,改版后页面更简洁了有木有,至于有些功能收的是否合理,我们另做讨论。我们先把地基打扎实,写一下我们的核心,自定义

2017-05-27 16:41:18 864

原创 项目实战:微交互之转场动画(anim、style、theme)

一般情况,APP中页面转场是整体统一的,但有时为了表达页面之间的从属、并列等关系,我们可能会采用不同的转场动画。比如,我们专车页面之间的转场采用如下规则,以便更好的表达页面之间的关系,给用户更好的体验。下面以专车行程模块为例,录制一个简单的gif动画,大家可以看一下效果。ps:简书不能上传视频,只能传gif展示动效,但我用的这款gif录制软件比较渣,很多地方都失真了,大

2017-05-26 19:07:37 1109

原创 项目实战:微交互之按钮选择器

相信大家在很多APP中都见过这种微交互,点击按钮时,发现点击前和点击时按钮(甚至是按钮里的文字)的样式不一样,给用户一个友好的小提示,你确实点击了这个按钮,今天我们做一下这个效果。首先,你以为的就是你以为的吗,表面上看它是一个按钮(Button),其实它是一个文本(TextView)。我们先在布局中定义它。 <TextView android:id="@+id/s

2017-05-22 20:00:39 957

原创 项目实战:超实用小工具isFastClick解决重复点击按钮问题

相信大家在项目开发中都遇到过这种case,点击按钮时,由于手机一时卡顿或者手速过快,造成按钮重复多次点击,跳转生成多个Activity(然后一个个关)或者其他重复操作。现在,就让我们通过几行代码一劳永逸的解决它。小工具的核心思想就是借助System.currentTimeMillis()计算多次点击按钮的时间差,如果这个时间差很小,我们就认为这是无效的重复点击。封装一个Utils工

2017-04-01 13:46:31 1639

转载 单例模式详解

一、 概述1.1 定义确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。1.2 使用场景确保某个类有且只有一个对象的场景,避免产生多个对象消耗过多的资源;或者某种类型的对象应该有且只有一个。eg:创建一个对象需要消耗的资源过多,如访问IO和数据库资源。1.3 关键点构造函数不对外开放,一般为 private ;通过一个静态方法

2017-03-27 10:19:27 357

转载 The "Double-Checked Locking is Broken" Declaration(你不知道的单例)

Double-Checked Locking is widely cited and used as an efficient method for implementing lazy initialization in a multithreaded environment.Unfortunately, it will not work reliably in a platform inde

2017-03-27 10:17:31 643

转载 Android面试一天一题(Day 26:ScrollView嵌套ListView的事件冲突)

后来我一试,发现ScrollView布局中嵌套Listview显示是不正常的,确切地说是只会显示ListView的第一个项。先说下为什么会只显示ListView的第一个Item,简单的说就是ListView在计算(比较正式的说法是:测量)自己的高度时对MeasureSpec.UNSPECIFIED这个模式在测量时只会返回一个List Item的高度(当然还有一些padding这些的值我们可

2017-03-24 16:25:47 558

转载 自定义View,有这一篇就够了

为了扫除学习中的盲点,尽可能多的覆盖Android知识的边边角角,决定对自定义View做一个稍微全面一点的使用方法总结,在内容上面并没有什么独特的地方,其他大神们的博客上面基本上都有讲这方面的内容,如果你对自定义View很熟了,那么就不用往下看啦~。如果对自定义View不是很熟,或者说很多内容忘记了想复习一下,更或者说是从来没用过,欢迎跟我一起重温这方面的知识,或许我的博文更符合你的胃口呢(*^_

2017-03-24 15:17:28 443

转载 Android使用UncaughtExceptionHandler捕获全局异常(末个人修正)

UncaughtExceptionHandler可以用来捕获程序异常,比如NullPointerException空指针异常抛出时,用户没有try catch捕获,那么,Android系统会弹出对话框的“XXX程序异常退出”,给应用的用户体验造成不良影响。为了捕获应用运行时异常并给出友好提示,便可继承UncaughtExceptionHandler类来处理。1、异常处理类,代码如下:

2017-03-24 11:06:51 353

原创 项目实战:几十行代码实现更加强大的Log,全方位输出类-方法-行数-信息

在项目开发中,我们经常使用Log帮助我们调试代码。但是,Log可以更加强大。在这里我对Log进行封装,借助StackTraceElement类,几十行代码实现更加强大的Log,全方位输出类-方法-行数-内容。我们先看一下Android的Log: /** * Send a {@link #DEBUG} log message. * @param tag Used t

2017-03-22 19:19:26 807

转载 Android安全攻防战,反编译与混淆技术完全解析(上)

之前一直有犹豫过要不要写这篇文章,毕竟去反编译人家的程序并不是什么值得骄傲的事情。不过单纯从技术角度上来讲,掌握反编译功能确实是一项非常有用的技能,可能平常不太会用得到,但是一旦真的需要用到的了,而你却不会的话,那就非常头疼了。另外既然别人可以反编译程序,我们当然有理由应该对程序进行一定程度的保护,因此代码混淆也是我们必须要掌握的一项技术。那么最近的两篇文章我们就围绕反编译和混淆这两个主题来进行一

2017-03-22 14:57:52 336

转载 为你的EditText添加一个烟花效果

一个绚丽易用的输入框烟花效果,模仿网页360搜索框。gif图片表现效果不好,实际的Demo里显示的效果更佳,同时不会有任何卡顿。EditTextFirework-demo请访问我的Giehub。https://github.com/covetcode/EditTextFirework-Demo在使用反射寻找光标的位置时,遇到一个很大的坑,明明在EditText源码中看到的方

2017-03-20 18:54:35 375

转载 Md系列3、CoordinatorLayout 里 Toobar和TabLayout等发生的一系列故事(末个人修正)

本文主要涉及android里面md设计的几个控件CoordinatorLayoutAppBarLayoutCollapsingToolbarLayoutTabLayout一、看,看出陌生本文假设是读者还没使用过adnroid support md的控件,先来看一下图片:海贼王演示.gif我们看到,标题栏可以伸缩,而且顶部状态栏是沉

2017-03-17 17:39:47 1105

原创 项目实战:关于format(String)你不知道的那些事

在项目中有一种很常见的case就是字符串拼接,以我们专车下单页的企业规则校验场景为例,如图,我们来分析这一句提示文案:立即叫车服务不符合企业用车规则,无法用车它是由两部分组成,动态的当前服务类型(立即叫车)+静态的固定文案(服务不符合企业用车规则,无法用车)。因为我们现在有很多服务类型(立即叫车、预约用车、日租、半日租、接机、送机、定制···),我们需要根据用户选择的服务类

2017-03-16 11:36:27 508

转载 Android自定义View的实现方法,带你一步步深入了解View(四)

不知不觉中,带你一步步深入了解View系列的文章已经写到第四篇了,回顾一下,我们一共学习了LayoutInflater的原理分析、视图的绘制流程、视图的状态及重绘等知识,算是把View中很多重要的知识点都涉及到了。如果你还没有看过我前面的几篇文章,建议先去阅读一下,多了解一些原理方面的东西。之前我有承诺过,会在View这个话题上多写几篇博客,讲一讲View的工作原理,以及自定义

2017-03-15 19:45:01 434

转载 android:descendantFocusability=”blocksDescendants”的用法

开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了,可能会发生点击每一个item的时候没有反应,无法获取的焦点。原因多半是由于在你自己定义的Item中存在诸如ImageButton,Button,CheckBox等子控件(也可以说是Button或者C

2017-03-15 19:36:31 3381

原创 项目实战:浅谈属性动画(2)-动画监听事件,消失的按钮,酷炫Path2.0

有了属性动画(1)的基础后,我们进阶玩法,为动画设置监听事件。先看一下消失的Button,在布局文件中添加Button,为其指定响应方法clickListener:[html] view plain copy Button      android:layout_width="wrap_content"      androi

2017-03-15 13:52:00 517

原创 项目实战:浅谈属性动画(1)-探索新玩法

属性动画是Google在3.0之后才提出的新动画框架,相比传统动画Animation只是系统不断调用onDraw方法重绘界面以实现动画效果。属性动画顾名思义是调用get、set方法真实改变属性。传统Animation有很大的局限性:1.只是重绘了动画,事件响应位置却没有改变,因此它不适用于具有交互动画的效果,只能做显示效果;2.不断调用onDraw方法重绘很浪费资源;

2017-03-15 10:43:41 653

转载 Android视图状态及重绘流程分析,带你一步步深入了解View(三)

相信大家在平时使用View的时候都会发现它是有状态的,比如说有一个按钮,普通状态下是一种效果,但是当手指按下的时候就会变成另外一种效果,这样才会给人产生一种点击了按钮的感觉。当然了,这种效果相信几乎所有的Android程序员都知道该如何实现,但是我们既然是深入了解View,那么自然也应该知道它背后的实现原理应该是什么样的,今天就让我们来一起探究一下吧。一、视图状态

2017-03-14 21:11:19 484

转载 两步实现类似格瓦拉的转场动画

嗯,真的是两步就可以实现了文章目录1 一.概述2 二.说明3 三.使用方法4 四.下载一.概述这是格瓦拉的转场动画效果。 (安利一发:格瓦拉有时候搞活动电影票真便宜~APP效果也很酷炫)刚开始以为是Android5.0以上才有,后面用4.4的机子发现也有这种的效果。下面是我简单的实现方法,真的只有两步

2017-03-14 16:11:34 487

转载 Android视图绘制流程完全解析,带你一步步深入了解View(二)

在上一篇文章中,我带着大家一起剖析了一下LayoutInflater的工作原理,可以算是对View进行深入了解的第一步吧。那么本篇文章中,我们将继续对View进行深入探究,看一看它的绘制流程到底是什么样的。如果你还没有看过我的上一篇文章,可以先去阅读 Android LayoutInflater原理分析,带你一步步深入了解View(一)  。相信每个Android程序员都知

2017-03-09 21:29:32 289

原创 一个登录Demo初识MVP

从我们的项目到招聘网站的JD,处处可见Android MVP 模式的身影。项目越来越庞大,开发越来越多,MVP的优势越来越明显。今天我们通过一个简单的登录Demo,初步学会MVP的使用。首先,什么是MVP?MVP模式是MVC模式在Android上的一种变体,要介绍MVP就得先介绍MVC。在MVC模式中,Activity应该是属于View这一层。而实质上,它既承担了V

2017-03-08 16:20:45 420

翻译 千呼万唤始出来的CoordinatorLayout

亲可记得我之前转载的INTRODUCTION TO COORDINATOR LAYOUT ON ANDROID,今天将它翻译一遍,以飨读者。在这一年的I/O开发者大会上,Google引入了一个新的Android设计支持库来帮助开发者们在他们的APP中

2017-03-04 15:27:13 399

转载 Git的核心概念

本文不是Git使用教学篇,而是偏向理论方面,旨在更加深刻的理解Git,这样才能更好的使用它,让工具成为我们得力的助手。版本控制系统Git 是目前世界上最优秀的分布式版本控制系统。版本控制系统是能够随着时间的推进记录一系列文件的变化以便于你以后想要的退回到某个版本的系统。版本控制系统分为三大类:本地版本控制系统,集中式版本控制系统和分布式版本控制系统本地版本控制(Loca

2017-02-23 11:20:47 483

转载 Android Http请求方法汇总

这篇文章主要实现了在Android中使用JDK的HttpURLConnection和Apache的HttpClient访问网络资源,服务端采用python+flask编写,使用Servlet太麻烦了。关于Http协议的相关知识,可以在网上查看相关资料。代码比较简单,就不详细解释了。1. 使用JDK中HttpURLConnection访问网络资源(1)get请求

2017-02-22 10:43:17 403

转载 INTRODUCTION TO COORDINATOR LAYOUT ON ANDROID

At this year’s I/O developers conference, Google introduced a new Android Design Support Library to help developers use material design in their apps. It contains many important material design buildi

2017-02-17 18:07:27 338

转载 Android L+ Theme 与 Toolbar 实例

前言随着Android L和M的发布,app的Material Design也逐渐普及。材料设计是良心之作,不仅逐渐推动Android琳琅满目的app界面的统一,而且使开发者更加关注app的功能,而非UI设计。于是乎,我也开始学习它,这里随着学习的进度会写相应的博文。##Android L +的Theme细心的朋友会发现,Material 的主题有:具体有什么效果,自己试下。@

2017-02-17 15:41:37 316

转载 Android WeakReference的理解与使用【末尾个人修正原作笔误】

前言: 看到篇帖子, 国外一个技术面试官在面试senior java developer的时候, 问到一个weak reference相关的问题. 他没有期望有人能够完整解释清楚weak reference是什么, 怎么用, 只是期望有人能够提到这个concept和java的GC相关. 很可惜的是, 20多个拥有5年以上java开发经验的面试者中, 只有两人知道weak reference的存在,

2017-02-16 15:08:47 742

原创 项目实战:借鉴Android API源码(Splitter-split和TextView-setText),不惧NullPointerException(文末彩蛋)

NullPointerException空指针异常可以说是我们开发中最常遇到的Bug,因此我们处处判空,胆战心惊。处处判空确实可以解决空指针异常的Crash。但处处判空未免过于草木皆兵,而且写出来的代码十分不优雅,多余判断效率低下,这不是我们的Style!这里,我们由点到面,借鉴一下Android API中Splitter类的split方法和TextView类的setText方法,我们

2017-02-06 15:36:50 1107

转载 聊聊并发(一)深入分析Volatile的实现原理

引言在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。它在某些情况下比synchronized的开销更小,本文将深入分析在硬件层面上Inter处理器是如何实现Volatile的,通过深

2017-01-24 14:51:28 216

原创 从源码分析,初步了解开源项目SlidingMenu(侧滑菜单)

我们看到的很多APP都有侧滑菜单的功能,今天我们学习一个Github上的开源项目SlidingMenu,对SlidingMenu 还不是很了解的童鞋,可以参考下本博客。本博客从源码入手,写一个小Demo引入SlidingMenu,后续开发大家可以自行扩展。jfeinstein10/SlidingMenuGitHub链接: https://github.com/jfeinstein10/Sl

2017-01-17 16:07:28 320

转载 Android SlidingMenu 使用详解

很多APP都有侧滑菜单的功能,部分APP左右都是侧滑菜单~SlidingMenu 这个开源项目可以很好帮助我们实现侧滑功能,如果对SlidingMenu 还不是很了解的童鞋,可以参考下本篇博客。将侧滑菜单引入项目的方式很多中,本博客先通过例子介绍各种引入方式,然后给大家展示个实例:主布局ViewPager,左右各一个侧滑菜单的用法,差不多已经能满足大部分应用的需求了。关于常用属性,在文章末尾介绍。

2017-01-17 11:59:32 259

原创 JavaSE系列:必知必会的异常(概述)

你能保证自己写的程序永远不出错?就算程序不出错,你能保证用户总是按你的意愿输入?就算用户聪明且配合,你能保证程序的操作系统永远稳定?你能保证程序的硬件不会突然坏掉?你能保证网络永远畅通?···正因为太多的无法保证情况,因此我们需要异常机制。通过异常机制我们可以使异常处理代码和正常业务代码分离,让程序代码更佳优雅,提高程序的健壮性,今天我们简单了解一下异常。(异常概述)

2017-01-16 21:04:54 274

转载 RxJava系列1(简介)

前言提升开发效率,降低维护成本一直是开发团队永恒不变的宗旨。近一年来国内的技术圈子中越来越多的开始提及Rx,经过一段时间的学习和探索之后我也深深的感受到了RxJava的魅力。它能帮助我们简化代码逻辑,提升代码可读性。这对于开发效率的提升、后期维护成本的降低帮助都是巨大的。个人预测RxJava一定是2016年的一个大趋势,所以也有打算将它引入到公司现有的项目中来,写这一系列的文章主要也是为了团队

2017-01-16 14:47:02 340

转载 聊聊并发(六)——ConcurrentLinkedQueue的实现原理分析

1. 引言在并发编程中我们有时候需要使用线程安全的队列。如果我们要实现一个线程安全的队列有两种实现方式:一种是使用阻塞算法,另一种是使用非阻塞算法。使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现,而非阻塞的实现方式则可以使用循环CAS的方式来实现,本文让我们一起来研究下Doug Lea是如何使用非阻塞的方式来实现线程安全队列Concurr

2017-01-16 11:10:21 247

转载 摩拜单车微信小程序开发技术总结

前言摩拜单车小程序已于微信小程序上线第一天正式发布,刷爆微博媒体朋友圈。本文主要讲讲技术方向的总结,在段时间的开发周期内内如何一步步从学习到进阶。思维转变微信小程序没有HTML的常用标签,而是类似React的微信自定义组件,比如view、text、map等没有window变量,但微信提供了wx全局方法集没有a标签链接,不可嵌套iframe事件绑定

2017-01-12 20:54:40 4393

原创 TextView文字间距美化-行间距

问题:Android系统中TextView显示中文时默认会比较紧凑,不是很美观。为了让每行保持一定的行间距,可以设置属性android:lineSpacingExtra或android:lineSpacingMultiplier。1、android:lineSpacingExtra设置行间距,如”3dp”。2、android:lineSpacingMultiplier设置行间距

2017-01-12 15:21:58 594

原创 JavaSE系列:从源码和API分析StringBuffer(概述、构造方法)

下面我们将从概述、构造方法···几个方面简单介绍StringBuffer:概述,提到StringBuffer,下意识的蹦出两点,1.我们如果通过String对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。而StringBuffer就可以解决这个问题。2.线程安全的可变(长度和内容)字符序列。ps:线程安全:同步,依次顺序执行,安全性高;线程不安

2017-01-06 11:40:53 270

用C++实现遗传算法

用C++实现遗传算法,vc++6.0可通过,经典学习资料!吐血推荐

2014-01-28

数学建模竞赛中应当掌握的十类算法

数学建模竞赛中应当掌握的十类算法,经典必看

2014-01-28

空空如也

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

TA关注的人

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