Android开发技术周报 Issue#106
AlanGreatho
8年前
<h3><strong>新闻</strong></h3> <ol> <li> <p><a href="/misc/goto?guid=4959725823099656022" rel="nofollow,noindex">又有四款Chromebook获得Play Store支持</a></p> </li> <li> <p><a href="/misc/goto?guid=4959725823193767499" rel="nofollow,noindex">Google打击Pixel/Pixel XL黄牛 已锁定200多个帐号</a></p> </li> <li> <p><a href="/misc/goto?guid=4959725823280685793" rel="nofollow,noindex">谷歌加快Chrome和Android融合 首批产品明年末问世</a></p> </li> <li> <p><a href="/misc/goto?guid=4959725823358982119" rel="nofollow,noindex">谷歌在Instagram上开通Android官方帐号</a></p> </li> </ol> <h3><strong>教程</strong></h3> <ol> <li> <p><a href="/misc/goto?guid=4959725823447895392" rel="nofollow,noindex">Android ImageView 正确使用姿势</a></p> <p>本文主要介绍了ImageView的相关重要方法,从源码角度剖析了一些容易令人混淆或百思不得其解的问题。一、正确合理使用ImageView 的src 和background:1.src :为ImageView 原图内容,存放原图大小,不会被拉伸;2.background:为Imageview的背景,会根据ImageView给定的长宽进行拉伸;在ImageView中,可以同时设置src和background属性(为了减少绘制,可以根据使用场景来设置相应属性); 由于src中存放的是原图大小,如果需要对其缩放,就需要使用android:scaleTyle这个属性(scaleType 只对src属性有效),另外还可以对background设置透明度。</p> </li> <li> <p><a href="/misc/goto?guid=4959725823524231170" rel="nofollow,noindex">Android内存泄漏分析心得</a></p> <p>对于C++来说,内存泄漏就是new出来的对象没有delete,俗称野指针;对于Java来说,就是new出来的Object 放在Heap上无法被GC回收;本文通过QQ和Qzone中内存泄漏实例来讲android中内存泄漏分析解法和编写代码应注意的事项。Java 中的内存分配:1.静态储存区:编译时就分配好,在程序整个运行期间都存在。它主要存放静态数据和常量;2.栈区:当方法执行时,会在栈区内存中创建方法体内部的局部变量,方法结束后自动释放内存;3.堆区:通常存放 new 出来的对象。由 Java 垃圾回收器回收。</p> </li> <li> <p><a href="/misc/goto?guid=4959725823609446657" rel="nofollow,noindex">安卓自定义View进阶-特殊控件的事件处理方案</a></p> <p>本文带大家了解 Android 特殊形状控件的事件处理方式,主要是利用了 Region 和 Matrix 的一些方法,超级实用的事件处理方案,相信看完本篇之后,任何奇葩控件的事件处理都会变得十分简单。不得不说,Android 对事件体系封装的非常棒,即便对事件体系不太了解的人,只要简单的调用方法就能使用,而且具有防呆设计,能够保证事件流的完整性和统一性,最大可能性的避免了事件处理的混乱,着实令人佩服。然而世界上并没有绝对完美的东西,当【事件处理】遇上【自定义View】,一场好戏就开演了,玩的好叫坐镇军前,指挥千军万马而分毫不乱,玩的不好就是抓耳挠腮,眼见敌人前后包抄而无可奈何。</p> </li> <li> <p><a href="/misc/goto?guid=4959725823698280057" rel="nofollow,noindex">携程移动端 UI 界面性能优化实践</a></p> <p>人类大脑与眼睛对一个画面的连贯性感知其实是有一个界限的,譬如我们看电影会觉得画面很自然连贯,其帧率通常为 24fps;那么,用手机当然也需要感知屏幕操作的连贯性(尤其是动画过渡),所以在手机领域 Android/iOS 索性就把达到这种流畅的帧率规定为 60fps。基于上面的背景,我们开发 App 的帧率性能目标就是保持在 60fps(16ms/帧),即我们在进行 App 性能优化时,要遵循如下准则:1.尽量保证每帧在 16ms 内处理完所有的 CPU 与 GPU 计算、绘制、渲染等操作,否则会造成丢帧卡顿问题。2.基于上面的卡顿原理,我们知道所谓的卡顿其实是可以量化的,每次是否能够成功渲染是非常重要的问题,即 16ms 能否完整的做完一次操作直接决定了卡顿性能问题。</p> </li> <li> <p><a href="/misc/goto?guid=4959725823776811479" rel="nofollow,noindex">Android 开发绕不过的坑:你的 Bitmap 究竟占多大内存?</a></p> <p>做移动客户端开发的朋友们肯定都因为图头疼过,说起来曾经还有过 leader 因为组里面一哥们在工程里面加了一张 jpg 的图发脾气的事儿,哈哈。为什么头疼呢?吃内存呗,时不时还给你来个 OOM 冲冲喜,让你的每一天过得有滋有味(真是没救了)。那每次工程里面增加一张图片的时候,我们都需要关心这货究竟要占多大的坑,占多大呢?Android API 有个方便的方法</p> </li> <li> <p><a href="/misc/goto?guid=4959725823853712968" rel="nofollow,noindex">PNG图片压缩对比分析</a></p> <p>随着版本的迭代,业务的增加,QQ音乐apk的大小已经超过25M,其中res目录占用的大小超过5.5M,所以提出了对安装包进行瘦身的技术需求。业务的增加导致图片越来越多,通过分析可以知道PNG格式图片是项目中数量最多的图片,关于PNG图片的介绍可以参考: <a href="/misc/goto?guid=4959725823945939198" rel="nofollow,noindex">PNG文件格式详解</a> 。为了实现减包任务,对图片进行压缩是很重要的一部分。</p> </li> </ol> <h3><strong>开源库 & App</strong></h3> <ol> <li> <p><a href="/misc/goto?guid=4959725824030357420" rel="nofollow,noindex">RapidInterpolator</a></p> <p>仿写自 Rebound,安卓曲线动画调节工具,可方便设计师和开发者在程序内部逐个调节动画的曲线、时间、延迟。提高动画调试效率,减少编译浪费的时间</p> </li> <li> <p><a href="/misc/goto?guid=4959725824119164502" rel="nofollow,noindex">Crescento</a></p> <p>Add curve at bottom of image views and relative layouts.</p> </li> <li> <p><a href="/misc/goto?guid=4959725824210953908" rel="nofollow,noindex">ENViews</a></p> <p>一个华丽丽的动效控件库,所有控件原型取自 <a href="/misc/goto?guid=4959725754326696677" rel="nofollow,noindex">Nick Buturishvili</a> 的设计作品</p> </li> <li> <p><a href="/misc/goto?guid=4959725824320909254" rel="nofollow,noindex">SuspendButtonLayout</a></p> <p>一个带浮动按钮的布局,按钮可以随意拖动展开</p> </li> <li> <p><a href="/misc/goto?guid=4959725824397489582" rel="nofollow,noindex">SmartFonts</a></p> <p>一个方便你在应用里使用自定义字体的库</p> </li> <li> <p><a href="/misc/goto?guid=4959725824482477240" rel="nofollow,noindex">Android-Debug-Database</a></p> <p>一个可以在浏览器里查看 App 的数据库和 SharedPreferences 数据的库</p> </li> <li> <p><a href="/misc/goto?guid=4959725824577997425" rel="nofollow,noindex">AlgorithmVisualizer-Android</a></p> <p>一个展示各种算法可视化的 App</p> </li> <li> <p><a href="/misc/goto?guid=4959725824653375002" rel="nofollow,noindex">jstraining</a></p> <p>全栈工程师培训材料</p> </li> <li> <p><a href="/misc/goto?guid=4959725824745942290" rel="nofollow,noindex">MaterialBadgeTextView</a></p> <p>Badge 风格的 TextView,支持 Shadow 和 Elevation</p> </li> <li> <p><a href="/misc/goto?guid=4959725824816242061" rel="nofollow,noindex">GaussianBlur</a></p> <p>A easy and simple library to apply Gaussian blur on images</p> </li> <li> <p><a href="/misc/goto?guid=4959725824902530720" rel="nofollow,noindex">SimpleText</a></p> <p>A simple spannable string helper</p> </li> <li> <p><a href="/misc/goto?guid=4959725824990301701" rel="nofollow,noindex">BadgeView</a></p> <p>a BadeView base on android</p> </li> <li> <p><a href="/misc/goto?guid=4959725003114183556" rel="nofollow,noindex">dynamic-load-view</a></p> <p>A library to dynamic load view in online apk, can be used for hotfix dynamic update</p> </li> <li> <p><a href="/misc/goto?guid=4959724269288756030" rel="nofollow,noindex">Moxy</a></p> <p>Moxy is a library that help to use MVP pattern when you do the Android Application. Without problems of lifecycle and boilerplate code!</p> </li> </ol> <h3><strong>设计</strong></h3> <ol> <li> <p><a href="/misc/goto?guid=4959725825121580257" rel="nofollow,noindex">啥是Design Sprint冲刺?</a></p> <p>Design Sprint是目前在湾区比较流行的一种设计方法。它是由Google内部(其实是Google Venture,Google投资的一家类似的咨询公司,湾区的蓝罐咖啡就他们做的叼叼的)梳理的一套如何带领团队快速做创新设计并验证设计的基本流程。我翻译整理了以下这两个文档《New Form Factors Sprint Playbook》《Product Design Sprint Playbook 》,总结了Design Sprint操作执行的要点和中间过程可用的方法,算是做个思路拓展也便于我在团队内运用类似的方法开展设计创新活动。</p> </li> </ol> <h3> </h3> <p>来自:http://www.androidweekly.cn/android-dev-weekly-issue-106/</p> <p> </p>