kotlin

Android 仿京东列表侧边栏UI库

时光毁灭记忆、已成空白 提交于 2020-10-31 13:45:06
项目背景 项目需求,仿京东列表侧边栏UI,Androidx UI需求,仿京东分类侧边栏。 首先作为一般的开发者,遇到这样的UI需求,首先一定是寻找开源,哈哈哈~ 在github上找到一个开源项目 VerticalTabLayout , 感谢开源 !这个库基本可以满足大部分的侧边导航栏需求。 但是这个项目已经很久没有维护了(不支持AndroidX,不支持kotlin语法,且tab页的切换过于粗暴,不满足UI设计师的需求)在此框架的基础上,开发了一套新的侧边栏框架,并贡献出来,希望可以帮助到大家。 正文 话不多说,先贴效果图。项目地址: https://github.com/JiaJie-xu1/VerticalTabLib How To Use Step 1. Add the JitPack repository to your build file allprojects { repositories { ... maven { url 'https://jitpack.io' } } } Step 2. Add the dependency dependencies { implementation 'com.github.JiaJie-xu1:VerticalTabLib:2.0.1' } Step 3. xml <com.partner.tabtools

从软件外包到阿里技术专家再到CTO,他究竟是如何一路晋升?

為{幸葍}努か 提交于 2020-10-31 07:06:46
技术界流传着许多未经验证的“定论” 例如: 程序员必然是千年格子衫牛仔裤; 日常脱发,大腹便便; 能进阿里必有着顶级高校学历; 管理层基本不写代码; ◐ 然而,他,似乎与这些定论大相径庭。 · 36岁的他,依旧黑发稠密,体态良好,丝毫没有中年男人的油腻,谈吐间可见他的儒雅与温和; · 专科出身,曾是当地国税局的一名小小信息员,软件外包公司的码农,十几年后,却进入菜鸟,负责公司核心业务服务器端技术架构; · 现是环球黑卡CTO的他,有着13年团队管理经验,却时常与一线同学讨论技术细节,并每天坚持写代码; …… 在他身上,一些想象中的 “不可能” 都成了现实中的 顺其自然。 ◐ 崔涛 现环球黑卡CTO 想都是问题 做才是答案 骨子里不安分的崔涛,不愿只在当地国税局当一名技术员。2002年,他只身从山西老家来到杭州找到了第一份软件外包的工作。这一干,就干了六年多。 “当时没什么想法,就是找一份工作,好好干!” 虽然软件外包对技术深度并没有太高的要求,但对于初入软件行业的新人来说,也是个不小的挑战。为了快速成长,那段日子里,崔涛阅读了大量的技术书籍,例如《Java与模式》、《Red Hat Linux 9 宝典》等等。在积累理论知识的同时,崔涛编写了各种实例代码以 练手 。 13年搬家时整理出来的书籍 在谈到印象最深的一本书时,崔涛的第一反应就是那本仅有340页的

【Kotlin学习之旅】Kotlin的字符型

江枫思渺然 提交于 2020-10-28 12:34:36
一、简介 字符型统筹用于表示单个的字符,字符型必须使用单引号(‘)括起来。 Kotlin语言使用16位Unicode字符集作为编码方式,而Unicode被设计成支持世界上所有书面语言的字符,包括中文字符,因此Kotlin程序支持各种语言的字符。 字符型值有以下3种表现形式。 直接通过单个字符来指定字符型值,如‘A’、‘9’和‘0’等 通过转义字符表示特殊字符型值,如‘\n’和’\t’等 直接使用Unicode值来表示字符型值,格式是‘\uXXXX’,其中XXXX代表一个十六进制的整数。 二、Kotlin语言中常用的转义字符 Kotlin语言中常用的转义字符,如下所示: 转义符号 说明 Unicode表示方式 \b 退格符 \u0008 \n 换行符 \u000a \r 回车符 \u000d \t 制表符 \u0009 \“ 双引号 \u0022 \‘ 单引号 \u0027 \ 反斜线 \u005c 字符型值也可以采用十六进制编码方式来表达,范围是’\u0000’~’\uFFFF’,一共可以表示65536个字符,其中前246个 ‘\u0000’~’\u00FF’字符和ASCII码中的字符完全重合。 更多的特殊符号的Unicode码可以参考下面链接 我的Android进阶之旅------>android中一些特殊字符(如:←↑→↓等箭头符号)的Unicode码值 三、注意事项

Kotlin Coroutines Flow 系列(五) 其他的操作符

佐手、 提交于 2020-10-28 03:07:23
八. Flow 其他的操作符 8.1 Transform operators transform 在使用 transform 操作符时,可以任意多次调用 emit ,这是 transform 跟 map 最大的区别: fun main ( ) = runBlocking { ( 1 .. 5 ) . asFlow ( ) . transform { emit ( it * 2 ) delay ( 100 ) emit ( it * 4 ) } . collect { println ( it ) } } transform 也可以使用 emit 发射任意值: fun main ( ) = runBlocking { ( 1 .. 5 ) . asFlow ( ) . transform { emit ( it * 2 ) delay ( 100 ) emit ( "emit $it " ) } . collect { println ( it ) } } 8.2 Size-limiting operators take take 操作符只取前几个 emit 发射的值。 fun main ( ) = runBlocking { ( 1 .. 5 ) . asFlow ( ) . take ( 2 ) . collect { println ( it ) } } 8.3