Android Weekly Notes Issue #236
Android Weekly Issue #236
December 18th, 2016
Android Weekly Issue #236
本期内容包括: Google的物联网平台Android Things; FileProvider; Android Studio的Layout Preview使用; Retrofit2使用; Google Sign-In和SmartLock; 把敏感信息放入NDK的解决方式.
设计部分讨论了调色板的灵感来源和几个开发app的时候应该注意的问题.
ARTICLES & TUTORIALS
Getting started with Android Things
Internet of Things (物联网, IoT), 是互联网, 传统电信网等咨询承载体, 让所有能行使独立功能的物品之间实现互联互通的网络.
2016年12月, Google发布了Android Things的开发者预览版, 这是一个专门为IoT设备定制的Android系统.
本篇文章一步一步地教你如何写一个IoT的基本程序, 跑在Raspberry Pi 3 Model B上.
FileProvider
上次我们提到了用DownloadManager下载的东西可以和其他应用分享, 那么如果我们下载的时候没有用DownloadManager呢?
比较常见的情况是我们的应用需要分享内容到其他应用, 或者是文件的类型是我们应用不能自己处理的, 需要找一个支持这种文件类型的其他应用来帮我们打开它.
怎么解决呢? 答案是用FileProvider.
上一期有一篇文章也说过Android 7开始废弃了"file://", 解决方案就是用FileProvider, 所以实现是一样的, 这里就不重复了.
Working with the Layout Preview
Layout Preview向你展示了你的xml将如何在设备上显示. 你可以用它查看布局在不同的配置下如何显示, 比如可以切换横竖屏, 语言等等.
但是它同样也有一些问题:
Issue #1: Preview显示空白
当你的布局是由动态获取的数据来填充的, preview不知道如何填充, 所以你看到的是空白的.
一个好的practice是使用tools命名空间, 指定一些只在preview阶段使用的属性. 这样你就可以指定一些text或src用来预览.
Tip #2: 使得动态内容在Preview可见
如果你的图片是动态资源, 你也可以设置一些最大宽高给parent view, 以防真实的图片比期待的大太多或者是比例不对. 你可以设置tools:layout_height 和tools:layout_width, 还有tools:background在preview中查看view占多大.
本文还推荐了另一个阅读资料: Tools of the trade — Part 1
Tip #3: 修复坏掉的Previews
当你创建一个自定义View的时候, 你需要确保你的View不需要任何外部依赖即可被实例化, 否则Preview可能看不到你的View. 因为Preview不是运行在你的app上的, 它只是运行在IDE的JVM上, 所以View framework之外的东西它是访问不到的.
解决办法是在你的自定义View中做一些特殊处理, 比如把依赖注入放在!isInEditMode()里, 或者用tools:命名空间加一些默认值.
Tip #4: 布局没有被渲染
里面的控件在preview里会被重叠在一起.
解决的办法是使用tools:showIn="layout", 指定具体是显示在哪个布局里. 如果你有多个布局都用到这个, 你可以选一个.
从Android Studio 2.2开始, 你可以使用tools:parentTag来指定parent的类型, 比如tools:parentTag="LinearLayout".
Tip #5: 在Preview中显示隐藏的View
如果你在layout中把view的visibility设置为gone, 那么它是不会在Preview中显示的.
解决办法: 使用tools:visibility="visible".
Android Things Tutorials
Android Things教程.
Get Started With Retrofit 2 HTTP Client
本篇文章以实例讲述如何使用Retrofit, 虽然都是基础内容, 但讲解很详细.
Improving sign-in experience with Google Sign-In and SmartLock
Google提供了两种方式来帮助我们改善用户的登录体验:
Google Sign-In(之前被称为Google+ Sign-In)和SmartLock.
这篇文章举例解释了Google Sign-In和SmartLock的实现.
Google Sign-In的部分比较简单.
SmartLock让我们可以:
- 让用户保存credentials.
- 在打开应用的时候请求credentials.
- 使用存在Chrome上的credentials, 这样我们的网站和app就可以共享credentials.
- 显示Email提示, 让用户选择email地址.
- 所有的这些信息都保存在Google的server里, 用户可以保存或删除.
Demo app: charbgr/AuthManager
Storing your secure information in the NDK
这篇文章说敏感信息放在Java代码里不安全, 很容易被人反编译查看出来, 如果放在NDK里面就好一些, 你打开查看的只能是二进制文件, 很难找到.
DESIGN
Introduction to Natural palettes
作者从大自然的图像中得到颜色组合的灵感.
文章中举了几个例子, 如何用相关的照片找到相关主题的调色板.
另推荐一个网站: IN COLOR
BALANCE
Make your Android app look better
让你的App看起来更好的几点建议:
- 使用同一个图标集的图标.
(这里推荐了一些图片工具和网站.) - 使用Material Design设计的keylines, 使用固定的格子大小.
- 使用颜色的时候小心一些. (这里推荐了一些调色板网站)
- 选择字体要明智一些.
LIBRARIES & CODE
Material Components
模块化和可定制的Material Design UI组件. Android, iOS, Web.
Android-oss from Kickstarter
Kickstarter开源了他们的Android应用.
stencil
一个kotlin写的Android库, 实现一种文字路径的动画.
AuthManager
包装了Google Sign-In和SmartLock的Manager.
FolioReader-Android
一个ePub阅读器和解析框架.
BufferTextInputLayout
对Support Library中的TextInputLayout的扩展, 增加了字数统计.
TextLayoutBuilder
使用Builder模式来配置创建一个Layout的属性.
Android Weekly Notes Issue #236的更多相关文章
- Android Weekly Notes Issue #230
Android Weekly Notes Issue #230 November 6th, 2016 Android Weekly Issue #230. Android Weekly笔记, 本期内容 ...
- Android Weekly Notes Issue #227
Android Weekly Issue #227 October 16th, 2016 Android Weekly Issue #227. 本期内容包括: Google的Mobile Vision ...
- Android Weekly Notes Issue #237
Android Weekly Issue #237 December 25th, 2016 Android Weekly Issue #237 这是本年的最后一篇issue, 感谢大家. 本期内容包括 ...
- Android Weekly Notes Issue #229
Android Weekly Issue #229 October 30th, 2016 Android Weekly Issue #229 Android Weekly笔记, 本期内容包括: 性能库 ...
- Android Weekly Notes Issue #221
Android Weekly Issue #221 September 4th, 2016 Android Weekly Issue #221 ARTICLES & TUTORIALS And ...
- Android Weekly Notes Issue #219
Android Weekly Issue #219 August 21st, 2016 Android Weekly Issue #219 ARTICLES & TUTORIALS Andro ...
- Android Weekly Notes Issue #235
Android Weekly Issue #235 December 11th, 2016 Android Weekly Issue #235 本期内容包括: 开发一个自定义View并发布为开源库的完 ...
- Android Weekly Notes Issue #234
Android Weekly Issue #234 December 4th, 2016 Android Weekly Issue #234 本期内容包括: ConstraintLayout的使用; ...
- Android Weekly Notes Issue #231
Android Weekly Issue #231 November 13th, 2016 Android Weekly Issue #231 Android Weekly阅读笔记, Issue #2 ...
随机推荐
- .NetCore MVC中的路由(1)路由配置基础
.NetCore MVC中的路由(1)路由配置基础 0x00 路由在MVC中起到的作用 前段时间一直忙于别的事情,终于搞定了继续学习.NetCore.这次学习的主题是MVC中的路由.路由是所有MVC框 ...
- CENTOS 6.5 平台离线编译安装 PHP5.6.6
一.下载php源码包 http://cn2.php.net/get/php-5.6.6.tar.gz/from/this/mirror 二.编译 编译之前可能会缺少一些必要的依赖包,加载一个本地yum ...
- MVC CodeFirst简单的创建数据库(非常详细的步骤)
最近在学习MVC的开发,相信有过开发经验的人初学一个新的框架时候的想法跟我一样最关心的就是这个框架如何架构,每个架构如何分工,以及最最关键的就是如何与数据库通信,再下来才是学习基础的页面设计啊等 ...
- Xamarin与Visual stuido2015离线安装包分享
最近看见大伙留言才知道国内安装Xamarin开发原来这么艰辛啊! 第一:网速不快 第二:Android SDK下载受限 等等... 鉴于这些原因,特写下这篇文章以及分享打包好的离线包以帮助大家尽快体验 ...
- mysql进阶之存储过程
往往看别人的代码会有这样的感慨: 看不懂 理还乱 是离愁 别是一番滋味在心头 为什么要使用存储过程? 在mysql开发中使用存储过程的理由: 当希望在不同的应用程序或平台上执行相同的函数,或者封装特定 ...
- 关于.NET参数传递方式的思考
年关将近,整个人已经没有了工作和写作的激情,估计这个时候很多人跟我差不多,该相亲的相亲,该聚会喝酒的聚会喝酒,总之就是没有了干活的心思(我有很多想法,但就是叫不动我的手脚,所以我只能看着别人在做我想做 ...
- Android如何制作漂亮的自适布局的键盘
最近做了个自定义键盘,但面对不同分辨率的机型其中数字键盘不能根据界面大小自已铺满,但又不能每种机型都做一套吧,所以要做成自适应,那这里主讲思路. 这里最上面的titlebar高度固定,下面输入的金额高 ...
- C#调用C++代码遇到的问题总结
最近在开发服务后台的时候,使用c#调用了多个c++编写的dll,期间遇到了一系列的问题,经过一番努力最后都一一解决了,在此做个总结,方便以后参考,毕竟这些问题也都是很常见的,主要有以下问题: 类型对照 ...
- 设计模式C#合集--单例模式
单例模式 代码: 第一种: private static Singleton singleton = null; private Singleton() { } public static Singl ...
- Android Retrofit 2.0 使用-补充篇
推荐阅读,猛戳: 1.Android MVP 实例 2.Android Retrofit 2.0使用 3.RxJava 4.RxBus 5.Android MVP+Retrofit+RxJava实践小 ...