热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

AndroidWeeklyNotesIssue#261

AndroidWeeklyIssue#261June11th,2017AndroidWeeklyIssue#261本期内容包括:AdaptiveIcons;Kotlin实现的几种常
Android Weekly Issue #261

June 11th, 2017
Android Weekly Issue #261
本期内容包括: Adaptive Icons; Kotlin实现的几种常用的设计模式; Android Instant App; Kotlin中的Ranges; 一个叫Graywater的库, 可以改善RecyclerView的性能; ItemDecoration的使用; 函数式编程; 提高Gradle的build的速度; 用RxJava 2包装Camera2 API.

代码部分有一个Kotlin实现的RSS阅读器值得一看.

ARTICLES & TUTORIALS

Adaptive Icons and more

关于Android O的Adaptive Icons, 这里是官方的文档: Adaptive Icons.

这篇文章介绍了如何用Android Studio制作这种icon.

Gang of Four Patterns in Kotlin

用Kotlin实现的各种设计模式:

  • Decorator -> 用extension functions.
  • Builder -> 用apply.
  • Prototype -> 用datacopy.
  • Singleton -> 用object关键字.
  • Template Method -> 用extension functions.
  • Strategy -> 方法参数, typealias, 高阶函数.
  • Iterator -> interator().

这是作者实现的repo: gof-in-kotlin.

From Westinghouse to Android Instant apps

作者讲了他和Instant App的故事.

Musings on Kotlin Ranges

作者讲了他发现的一些关于Kotlin的Ranges的有趣的事情:

  • IntRange如果初始值比结束值大, 会被认为是空的. 想要逆序的话就得用downTo或者reversed().
  • in range会被编译器优化为两个<=条件判断, 所以我们可以利用这点来简化我们本来的判断.
  • 几种range的for循环效率比较.

Introducing Graywater for Android

介绍一个叫Graywater的库, 处理RecyclerView中的复杂项目, 据说可以改善滚动性能, 减少内存使用, 而且提供了一种组件化的构建方式.

Making the Domain Android App Instant

Domain的Instant App实现, 概要介绍, 不涉及太多细节.
文章后面说了一些Instant App的限制, 比如: 4MB大小; 只有有限的权限, intent和库.

ItemDecoration &#8211; Avoid adding dividers to the view layout

ItemDecoration的介绍.

首先, 不要用在布局里加View的方法来加divider, 这对性能不好. 增加了多余的View, 还可能需要增加层级.

其次, 加View的方式也有一些副作用, 比如左右滑动item动画的时候, divider会和View一起移动, 这显然不好看.

最后, 加View的方式也不如ItemDecoration那样具有灵活性. 比如你想加不同长度的divider给不同位置的item.

所以推荐使用ItemDecoration. 自动25.0.0开始, support库还添加了DividerItemDecoration类.

注意:

  • 一个RecyclerView可以添加多个ItemDecoration.
  • onDraw()是在绘制item之前, onDrawOver()是在绘制item之后.

Functional Programming for Android Developers — Part 3

函数式编程教学第三部分, 主要讲高阶函数和Closures.

前两部分见:

  • Functional Programming for Android Developers — Part 1
  • Functional Programming for Android Developers — Part 2

How to speed up your slow Gradle builds

Google I/O 2017关于如何提高gradle build速度的10个建议:

  • 1.使用最新的Gradle plugin.
  • 2.避免使用老的multidex, 在API 21以前会有性能影响.
  • 3.在开发时disable multi-APK.
  • 4.最小化包含的资源.
  • 5.在开发时关闭PNG优化.
  • 6.使用Instant Run.
  • 7.避免非故意的改动. 如把vesionCode和当前时间相关, 这样每次build就等于manifest会被改变. 还有Crashlytics会为每次build生成id. 可以在develop的时候关闭这些.
  • 8.不要使用动态的依赖版本.
  • 9.注意memory的设置. 在gradle.properties中, 如org.gradle.jvmargs=-Xmx2048m.
  • 10.使能缓存. 在gradle.properties中, org.gradle.caching=true.

Reactive selfies with Camera2 API on Android &#8211; Part 1

作者的一个教程, 用RxJava2包装Camera2的API.
文章讲得很仔细, 项目代码见: Camera2API_rxJava2.

Re-animation

作者更新了他关于向量动画的文章, 因为support库25.4中加入了对老版本的兼容.

LIBRARIES & CODE

Karchitec

Kotlin的RSS阅读器, 使用了Google的android architecture components库.

SwiftKotlin

一个工具, 可以把Swift代码转换为Kotlin代码.

Graywater

一个改善RecyclerView滚动性能的库.

Fontify

提供不同语言自定义字体和style的TextView, EditText和Button.


推荐阅读
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • 初探PLC 的ST 语言转换成C++ 的方法
    自动控制软件绕不开ST(StructureText)语言。它是IEC61131-3标准中唯一的一个高级语言。目前,大多数PLC产品支持ST ... [详细]
  • android开发分享Flutter学习笔记(15)–App结构和导航组件
    今天上班没那么忙,突然想起来我好像没StatefulWidget(有状态组件)的demo,闲来无事,写一个简单的学习学习,前面我们有说过,Flutter不同于Android。Flu ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 合并列值-合并为一列问题需求:createtabletab(Aint,Bint,Cint)inserttabselect1,2,3unionallsel ... [详细]
  • 本文介绍了2015年九月八日的js学习总结及相关知识点,包括参考书《javaScript Dom编程的艺术》、js简史、Dom、DHTML、解释型程序设计和编译型程序设计等内容。同时还提到了最佳实践是将标签放到HTML文档的最后,并且对语句和注释的使用进行了说明。 ... [详细]
  • 摘录自Understandingplaceholderselectors.extendextend让你能够在多个选择器中通过继承的方式共享一段样式:.icon{transition ... [详细]
  • 初识顶部导航栏【flutter20个实例之一】
    初识顶部导航栏【flutter20个实例之一】-一、老套路,先看样式二图是我的实际开发中业务界面,用作展示而已二、讲解(后附源码)1.这里主要是用户AppBar组件** ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
author-avatar
玛丽
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有