Android
三杯两盏
这个作者很懒,什么都没留下…
展开
-
倒计时控件CountdownView
这是新项目中用到的一个倒计时控件,可以通过addView(…)添加到任意布局中。计时长短可调;各种颜色、尺寸可调;可以传入一个监听器,当计时结束时会得到通知。效果:基本用法:FrameLayout fl_container = findViewById(R.id.fl_container);//第2个参数为倒计时时长CountdownView countdownView = ...原创 2018-07-12 21:40:11 · 662 阅读 · 0 评论 -
Fragment使用过程中一些需要注意的点
对Fragment相关知识的一点复习和整理。1 使用add-hide-show来显示和切换fragmentadd(int containerViewId, Fragment fragment):将fragment添加到容器中,并不会remove掉容器中已有的fragment。fragment默认是可见的,下面两个方法可以改变fragment的可见状态:hide(Fragm...原创 2017-06-27 20:09:50 · 575 阅读 · 0 评论 -
NestedScrolling机制(四)——最后一个例子
系列文章的最后,让我们来实现最初见到的那个饿了么店铺详情页效果吧。成品效果及对比如下: 算是低仿吧,主要是也没想要仿的一模一样(因为懒)。内容部分有两个列表和只有一个列表其实是一样的道理(NestedScrollingParent 1vs2 无压力);至于两个列表之间的连动,只要监听列表内容的位置然后自己处理一下就好。闲话不多说,下面进入正题。1 activity_main.xml根布局就是我们后面原创 2016-12-26 20:54:37 · 2279 阅读 · 2 评论 -
NestedScrolling机制(三)——机制本质以及源码解析
要了解NestedScrolling机制的本质,当然少不了阅读源码。这里我们先给出结论:NestedScrolling机制本质上就是两个相互关联的接口,当我们调用一个接口中的方法时,另一个接口中与之对应的方法就会被触发,仅此而已。这就意味着,尽管我们之前介绍NestedScrolling机制时,为其加了很多条条框框和使用规则,但实际上,我们可以按照自己的需求和想法,完全自由的去使用它们————只要知原创 2016-12-26 20:47:43 · 1949 阅读 · 1 评论 -
NestedScrolling机制(二)——实例
1 实现自己的NestedScrollingParent和NestedScrollingChild这个示例来自:http://blog.csdn.net/lmj121212/article/details/52974427 自己在原项目代码基础上做了精简和梳理,添加了注释以帮助理解,下载地址:项目代码(已整理)此项目中的NestedScrollingParent和NestedScrollingCh原创 2016-12-26 20:43:25 · 3802 阅读 · 15 评论 -
NestedScrolling机制(一)——概述
如今,NestedScrolling机制(可以称为嵌套滚动或嵌套滑动)在各种app中的应用已经十分广泛了,下图是“饿了么”中的一个例子:当向上滚动列表时,列表的父view(整个白色部分)会跟着一起向上滑动,当顶部的banner收缩到只剩标题栏时,则列表的父view保持固定,而列表继续滚动;当向下滚动列表时,则是相反的过程。这种效果其实也可以通过CoordinatorLayout结合Behavior来原创 2016-12-26 20:28:44 · 4208 阅读 · 1 评论 -
Activity的非正常销毁
Activity的非正常销毁原创 2017-06-27 20:37:43 · 2008 阅读 · 0 评论 -
Activity的启动模式(一)
Activity的启动模式(一)原创 2017-06-27 20:43:04 · 626 阅读 · 0 评论 -
Activity的启动模式(二)
Activity的启动模式(二)原创 2017-06-27 20:49:27 · 543 阅读 · 0 评论 -
工具类:并发任务管理器ConcurrentTasksManager
在app开发中经常会有这样一种需求:在多个线程中并发执行多个任务,当且仅当这些任务全部完成时,才继续进行下一步操作。以app的欢迎页为例,通常需要同时做这样几件事:1 获取基础的配置信息 2 检查更新 3 计时n秒(这是为了保证欢迎页至少被展示n秒),当且仅当这3个任务均被完成时,才跳转到app的主界面。通常的做法是写几个状态变量与并发执行的任务一一对应,每当一个任务完成时,就去更新并检查这些...原创 2018-04-08 16:37:06 · 634 阅读 · 0 评论 -
过滤器控件——FilterView
这是新项目中用到的一个过滤器控件,会根据输入数据动态生成过滤器视图。每组过滤条件为单选,当选择的过滤条件有变化时会通过回调方法通知用户,并更新标题栏上的条件显示。效果样式设置控件仅提供了几个简单的样式设置项,如文字颜色、背景颜色、按钮背景选择器等,通过相应的set方法来进行设置(如果有更复杂的需求建议直接修改控件源码):setAnimateDuration(long a...原创 2018-04-03 18:47:29 · 1445 阅读 · 0 评论 -
ViewPager导航控件——SimpleViewpagerIndicator
写这个小控件是因为最近负责维护的一款app大改版,设计师给了一个新的ViewPager导航样式,但找了几个常用的导航控件发现都无法100%实现设计师给的效果,于是就干脆自己动手丰衣足食了。控件只有一个单独的java类,代码也很简单,放出来希望能帮到需要的人。效果控件提供了比较丰富的可配置选项,下面是两个例子:1.所有配置项均使用默认值(tab宽度包裹内容、indicator与文...原创 2018-03-31 11:24:13 · 2529 阅读 · 1 评论 -
基于zbar的相机扫码性能优化实践
1 需求背景公司的多款工具类app都用到了相机扫码功能。近来,因为业务的快速发展,对扫码模块的性能也有了更高要求,主要是两方面:由于使用中经常会遇到商品条码密集排列的情况,因此要求扫码识别区域要非常精确。举个例子,比如扫码界面中展示给用户的扫码框是一个200*100的矩形,那么真正被识别的图像数据就只能是这个矩形框中的内容。针对多个条码连续扫描识别的情形,要求每个条码的识别时间尽可能地短,这样使原创 2017-11-22 16:02:56 · 5601 阅读 · 3 评论 -
Android Camera详解
本文译自官方文档:https://developer.android.com/guide/topics/media/camera.htmlAndroid框架层包含了对多种相机和相机特性的支持,可以让你在你的应用中拍照或录像。本文档主要讨论如何快速、简单的进行拍照和录像,同时也对如何开发复杂一些的相机应用做了简要介绍。1 基础Android框架层支持通过android.hardware.camera2翻译 2017-11-13 10:21:04 · 4925 阅读 · 0 评论 -
子窗口(child window)应用实战
1 在页面任意位置展示一个漂浮view1.1 需求背景前几天接到一个小需求,要在app某页面中显示一个漂浮的文字提示。本来想就弹个Toast的,但PM还要求文字提示支持手动关闭(比如触摸屏幕任意位置关闭,或者点击文字提示后关闭),那么系统的Toast就不能用了。另一方面,因为需要弹出文字提示的页面无论页面展示逻辑还是业务逻辑都异常复杂,所以不太希望去它的布局文件中添加view,也不希望对其代码逻辑有原创 2017-09-30 17:44:57 · 5152 阅读 · 0 评论 -
android事件传递——2.传递流程详解
1 完整的事件传递流程下沉事件从上到下(即从父级到子级),依次通过各个控件的dispatchTouchEvent方法:在dispatchTouchEvent方法中会调用onInterceptTouchEvent方法判断是否要拦截,如果拦截(onInterceptTouchEvent返回true),则将事件交给同一控件的onTouchEvent方法,如果不拦截,则将事件继续传递给子控件的dispat原创 2017-07-12 17:45:42 · 468 阅读 · 0 评论 -
android事件传递——1.概述
1 事件传递流程概述事件的传递是由最顶层(即最外层)的父控件开始,一层一层向下传递,直到最底层(即最内层)的子控件。若最底层的子控件没有消耗掉事件,则:事件又会从最底层的子控件开始,一层一层向上传递,直到最顶层的父控件。当父控件不拦截事件(onInterceptTouchEvent返回true,代表拦截事件)时,事件才会向下传递给其子控件。含有子view的viewGroup默认都不会拦截。当子控件不原创 2017-07-12 17:43:19 · 356 阅读 · 0 评论