设为首页 加入收藏

TOP

Android Weekly Notes Issue #218(一)
2017-10-13 10:47:28 】 浏览:3576
Tags:Android Weekly Notes Issue #218

Android Weekly Issue #218

August 14th, 2016
http://androidweekly.net/issues/issue-218

ARTICLES & TUTORIALS

PathMorphing with AnimatedVectorDrawables

Android 5.0 推出了VectorDrawable, 矢量图为处理多种屏幕尺寸的带来了很多好处. 这篇文章先介绍了VectorDrawable的使用, 然后主要讲如何实时操纵图像的改变, 用AnimatedVectorDrawable实现一个图像变形的效果.
文中的例子是Android和Apple的log在互相变化.
source code available

Android UI Instrumentation test with Espresso

用Espresso写UI功能测试, 通常是: 定位UI元素, 然后与其交互, 检查UI元素的状态.
三种主要的组件是: ViewMatchers, ViewActions 和ViewAssertions.
一个简短的例子:

onView(withId(R.id.my_view))            // withId(R.id.my_view) - ViewMatcher
    .perform(click())                  // click() - ViewAction
    .check(matches(isDisplayed()));   //matches(isDisplayed()) - ViewAssertion

为了测试不受animation的影响, 有时候可能需要把设备上的Developer Options里的下面几个animation全关掉:
Window animation scale
Transition animation scale
Animator duration scale
然后这个文章里有具体的例子介绍如何写并且运行测试, 还附有相关源码.

How to Build an Android App for Fire TV - Part 1

创建在亚马逊的Fire TV上跑的Android应用.
文后可以点进part 2.

Android Wear Development for beginners

Complication是指手表上显示的除了小时和分钟之外的东西, 比如, 一个电池指示标志.
使用了Complication API之后, 用户就可以自己选一个地方, 然后从应用的列表中选一个东东来显示.
Wear应用是嵌入到一个主应用里面的, 当google play上主应用的apk被安装到手机上的时候, Wearable应用会自动安装在配对的设备上.
这篇文章详细介绍了如何创建一个Wear应用, 代码在github

官方文档: Watch Face Complications
官方sample: android-WatchFace

Router — Everything in its Right Place

之前有一篇文章介绍了用装饰者模式来构建高度模块化的Android应用: Creating Highly Modular Android Apps
那篇文章里也有一个例子Decorator.
这篇文章讲同样采用装饰者思想的一个库: Router.

Router首先基于一个将URL映射到程序界面的库: routable-android
Router在此基础上做出了一些扩展和改进, 可以用一个map文件(YAML/JSON/XML)来定义基本的构架.
输入是URL(可以带参数), 根据map进行解析, 然后传到plugins, 然后每个plugin创造一部分的输出, 当左右plugins的工作结束后, 输出就可用了(输出是由多个plugins组装而成的).
文末附有sample.

Boosting app performance with reflectionless (de)serialization

这篇文章研究了在解析JSON响应的时候如何提高效率.
作者他们的应用Vimeo Android用了Retrofit来做网络请求, 用Gson来反序列化, 不好的一点就是有点慢, 因为Gson用反射来解析JSON. 为了改进,他们想要去除反射.
他们创建了自己的Gson TypeAdapters, 并且利用程序中各个不同大小的model来测量对比了了反序列化的时间.
他们的实验测试了不同的机器对于不同大小model的处理, 在多数情况下, 不用反射会提高性能, 但是也有例外, 在解析很大的model时, 在高性能的机器上, 反而是使用反射的情况比较快.
他们的库: stag-java
STAG: Speedy Type Adapter Generation.

Introduction to Automated Android Testing - Part 4

讲如何写测试的系列文章, 有一个案例sample: GithubUsersSearchApp.
举例了一个MVP的真实例子, 然后给P写单元测试.
Presenter里有一个CompositeSubscription, 用来管理RxJava的subscriptions, detach的时候会注销所有的订阅, 防止了内存泄露和可能存在危险的view操作.
还创建了一个Contract接口, 把View和Presenter的接口定义写在里面.
这里面还有很机智的一点是把RxJava要用到的Scheduler也从presenter的构造函数传入, 这样在测试的时候就可以使用Schedulers.immediate(), 而在View里面我们就按实际情况使用其他.

Introduction to Android Testing - Part 3

这应该是跟上面那条一个系列文章的第三篇.
介绍了如何用Retrofit和RxJava请求Github API然后解析到models.
后面是写单元测试, 步骤很清楚, given, when, then.
可以从中学习一下怎么给这种Retrofit + RxJava的程序写单元测试.

Git as a secure private Maven repository

Bitbucket is a web-based hosting service for projects using Git.
讲了如何使用BitBucket或者Github作为一个private的Maven repository.
例子: WagonGitExample
Gradle 脚本: GitAsMaven

Crash reporting in Firebase

比较简单的一个文章, 如何set up Firebase的crash reporting.
其实Firebase Crash Reporting一旦构建好之后, 不需要加java代码, 所有uncaught的异常都是自动报告的.
Firebase Report Crashes.

Isometric AnimatedVectorDrawable – Part 1

神奇的AnimatedVectorDrawable, 这篇文章讲了用它来实现栅格地形图, 游戏里可以升降的草地的类似的东东. (看文章里的图吧, 我也形容不好.)
遗憾的是pathData animation当前在VectorDrawableCompat library暂不支持, 所以文中所讲的技术只能在api 21及其之上使用.
文中的例子有9个方块, 4个三角形, 把SVG作为矢量图VectorDrawable导入Andr

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Android Button的基本使用 下一篇EditText 基本用法

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目