标准库

Android快速开发框架-ZBLibrary 源码分享

柔情痞子 提交于 2020-03-01 12:42:38
坐标标准库ZBLibrary,是一个MVP架构的Android快速开发框架,提供一套开发标准(View,Data,Event)以及模板和工具类并规范代码。 封装层级少,简单高效兼容性好。Android Studio、Eclipse多平台支持。 OKHttp、UIL图片加载、ZXing二维码、沉浸状态栏、下载安装、自动缓存以及各种Base、Demo、UI、Util直接用。 全新的手势,侧滑返回、全局右滑返回都OUT啦! BaseHttpListActivity,几行代码搞定http请求列表 加载和缓存; BaseView,自定义View竟然如此简单; 万能的Entry,两个变量的Model/JavaBean再也不用写了; 100多个常用style,一行搞定View属性,一键统一配置UI... 丰富的功能 简单的实现 详细的注释 规范的风格 下载地址(欢迎Star,欢迎Fork) ​ https://github.com/TommyLemon/Android-ZBLibrary 下载试用 ZBLibraryDemoApp.apk 来源: oschina 链接: https://my.oschina.net/u/2437072/blog/662017

全新的手势,侧滑返回、全局右滑返回都OUT啦!

只愿长相守 提交于 2020-03-01 09:32:27
前言 Android快速开发框架-ZBLibrary 最近将以前的全局右滑返回手势改成了 底部左右滑动手势 。 为什么呢?为了解决滑动返回手势的问题。 目前有3种滑动返回手势 一、侧滑返回 代表app: 微信(带跟手动画) 问题: 屏幕尺寸超过一定大小(按正常手掌大小和手指长度算,最大可掌握尺寸为4.7寸)会导致用户右手持机时手指够不到左侧滑动手势触发区域。 即便勉强够到,失败率也很高,失败几次后用户就不想再用了。 二、全局右滑返回 代表app: 酷狗音乐(带跟手动画)、QQ(无跟手动画) 问题: 1.与向右滑动切换tab的手势冲突 下方的 酷狗乐库 界面和 QQ添加 界面就是为了避免冲突而没有左右滑动切换tab的手势。 2.与向右拖动网页等的手势冲突 如果内容宽度超出了屏幕宽度,用户向右滑动只是想拖动网页或照片,结果却关闭了界面。 所以酷狗跳转到这种网页会调用应用外浏览器;QQ还是用内嵌的QQ浏览器,但所有网页界面都不支持滑动返回。 三、底部左右滑动手势 代表app: 快用通讯录 事实上,这种方式不仅能向右滑动返回,还能向左滑动"前进"(效果等同于点击右上角按钮)。 并且完美地解决了以上所有问题!比如下方的带tab的界面,中间左右滑动切换tab、底部左右滑动对应导航栏的"返回"、"所有"。 下面这个是 中间左右滑动切换用户引导界面、底部向右滑动返回上个界面。

微软c标准库中字符串操作源代码

和自甴很熟 提交于 2019-12-10 07:47:19
位置:VC\crt\src (crt C RunTime library) char * strcat(char * dst, const char * src) { char * cp = dst; while(*cp) { cp++; /* find end of dst */ } while (*cp++ = *src++); /* Copy src to end of dst */ return dst; /* return dst */ } char * strcpy(char * dst, const char * src) { char * cp = dst; while (*cp++ = *src++); /* Copy src over dst */ return dst; } char * strchr(const char * string, int ch) { while (*string && *string != (char)ch) { string++; } if (*string == (char)ch; return (char *)string; return NULL; } int strcmp(const char * src, const char * dst) { int ret = 0; while (!(ret = *

Docker源码解读:1.flag解读

你。 提交于 2019-12-07 08:31:45
我是怎么想到要先看docker中的flag呢,就是因为docker采用了c/s结构,而且daemon和client都是用同一个程序的,因此,为了做出区分,肯定是要用参数来区分的。先来看位于./docker/docker/docker.go下面的main函数代码: func main() { //第一次肯定是返回false的,因为没有任何initializer if reexec.Init() { return } // Set terminal emulation based on platform as required. stdin, stdout, stderr := term.StdStreams() logrus.SetOutput(stderr) flag.Merge(flag.CommandLine, clientFlags.FlagSet, commonFlags.FlagSet) flag.Usage = func() { fmt.Fprint(os.Stdout, "Usage: docker [OPTIONS] COMMAND [arg...]\n"+daemonUsage+" docker [ --help | -v | --version ]\n\n") fmt.Fprint(os.Stdout, "A self-sufficient runtime