7 由此及彼

尚未进行身份认证

代码可以更优雅。

等级
TA的排名 1w+

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

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

2017-06-07 16:24:13

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

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

2017-06-01 16:58:09

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

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

2017-05-27 16:41:18

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

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

2017-05-26 19:07:37

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

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

2017-05-22 20:00:39

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

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

2017-04-01 13:46:31

单例模式详解

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

2017-03-27 10:19:27

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

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

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

2017-03-24 16:25:47

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

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

2017-03-24 15:17:28

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

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

2017-03-24 11:06:51

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

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

2017-03-22 19:19:26

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

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

2017-03-22 14:57:52

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

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

2017-03-20 18:54:35

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

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

2017-03-17 17:39:47

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

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

2017-03-16 11:36:27

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

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

2017-03-15 19:45:01

android:descendantFocusability=”blocksDescendants”的用法

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

2017-03-15 19:36:31

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

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

2017-03-15 13:52:00

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

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

2017-03-15 10:43:41

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!