脉脉不得语的技术博客

心无所恃,随遇而安

Android开发周报 Issue#8

| Comments

文章

  1. 使用gradle构建android项目(续)

    在几个月之前,我已经写过一篇使用gradle构建android项目的博客了http://blog.isming.me/2014/05/20/android4gradle/,那篇文章已经介绍了如何使用gradle进行项目构建,以及为谷歌会推荐使用gradle。当时android的gradle插件是0.11.0,现在插件的版本已经是0.14.3了,对于一些老的方法和api,有一些已经被移除,无法使用。因此有必要再写一篇博客介绍这些被移除的部分和替代方案。同时由于个人学识原因,当时没有介绍的一些技巧,其他功能,也会在本文中进行介绍。

  2. 直接拿来用!十大Material Design开源项目

    本文详细介绍了十个Material Design开源项目,从示例、FAB、菜单、动画、Ripple到Dialog,看被誉为“Google第一次在设计语言和规范上超越了Apple”的Material Design是如何逐渐成为App的一种全新设计标准。另外推荐大家去 Github 上 Star 或者 Fork MaterialDesignCenter这个项目,该收集整理了

  3. 放弃WebView,使用Crosswalk做富文本编辑器

    Android WebView做普通浏览还好,做富文本编辑器(document.body.contentEditable=true;),常常会遇到各种奇葩的bug,而且很难修复。尽管Google在版本迭代中不断修复bug,但依旧没法用它来做富文本编辑。

  4. 在低版本android系统上实现Material设计应用

    ​Material Design真的很好看,动画效果真的很实用。前面也写了一些文章介绍如何编写Material风格的程序,但是很多都是一些新的api,低版本上面没有这些api,我们没办法使用。但是不用气馁,google官方,以及一些大牛,给我们提供了一些程序,让我们在低版本上面可以实现Material风格的程序,这里就给大家介绍一下。

Android开发周报 Issue#7

| Comments

新闻

  1. 盘点最受开发者喜爱的Android 5.0 Lollipop API

    作为Android系统的一次重大升级,Android 5.0 Lollipop突出采用全新的Material Design设计语言,不但在视觉和操作上更胜一筹,还包含扩展UI工具包供开发者使用,为应用添加3D实时阴影,可缩放矢量“drawbles”以及流畅的动画效果。本文着重介绍了其中值得开发者深爱的12款API,赶紧一睹为快吧!

  2. .NET开源了,VS开始支持Android和iOS编程并自带Android模拟器

    北京时间今天凌晨的 Connect (); 大会上,多少程序员的假想成为现实。.NET 开源,集成 Clang 和 LLVM 并且自带 Android 模拟器,这意味着 Visual Studio 这个当下最好没有之一的 IDE 正式支持编写 Android 和 iOS 程序。

  3. Android 5.0正式开启:Nexus系列最早更新 从谷歌给出的公告来看,今天就将会有用户收到Android 5.0的更新提示,而首批设备包含了Nexus 4、Nexus 5、Nexus 7以及Nexus 10。值得一提的是,今天早些时候,摩托罗拉也开始向Moto G的用户提供5.0系统的升级,随后到来的是Moto X,很快LG的G3也将得到系统的升级。

文章

  1. Android 那些你所不知道的Bitmap对象详解

    我们知道Android系统分配给每个应用程序的内存是有限的,Bitmap作为消耗内存大户,我们对Bitmap的管理稍有不当就可能引发OutOfMemoryError,而Bitmap对象在不同的Android版本中存在一些差异,今天就给大家介绍下这些差异,并提供一些在使用Bitmap的需要注意的地方。

  2. 如何给你的Android 安装文件(APK)瘦身

    Android的apk文件越来越大了这已经是一个不争的事实。在Android 还是最初版本的时候,一个app的apk文件大小也还只有2 MB左右,到了现在,一个app的apk文件大小已经升级到10MB到20MB这个范围了。apk文件大小的爆炸式增长主要是因为用户对app质量的期待越来越高以及开发者的开发经验增长。

  3. 创建Material Design风格的Android应用系列文章

    随着Android 5.0的发布,Android Developer网站也更新了,增加了创建Material Design风格的Android应用指南,也更新了Support Library,在support library增加了一些Material Design风格的控件和动画等,这里给大家简单介绍一下怎样开发aterial Design风格的Android应用。

Android开发周报 Issue#6

| Comments

新闻

  1. Android 5.0 Lollipop源代码发布

    Google将最新的Android 5.0 Lollipop系统源代码上传在公开的Android Open Source Project(AOSP) 库

  2. Android 5.0 Lollipop 安全特性详解

    Android 5.0 Lollipop 正式版发布在即,根据 Google 的说法,Android 5.0 是 Android 历史上最为重大的版本变更,带来了全新的设计风格,全新的软件运行环境,更好的续航能力以及大量的细节改进。可能关于 Material Design、ART 模式等等新特性你已经有所了解,但是我们今天要聊的是 5.0 的另一个重大变革,关于安全性的改进。

  3. Copresence: Google 正为 iOS 和 Android 之间数据通讯架设的桥梁

    Google 最近被人发现正在开发的名为「Copresence」的功能,未来很有可能成为跨移动操作系统数据传输的最好解决方案。Copresence 的功能将允许 Android 和 iOS 操作系统设备之间互相传输文件、照片、发送导航定位、文字信息等多种类型的数据——并非通过互联网,而是更加本地化的点对点连接方式。

文章

  1. 在Android上创建卡片式UI

    自从卡片式UI第一次在Google+ app上亮相,这种设计模式在Android社区上开始变得越来越火。很多人都热衷于这种设计模式并在他们的开发中使用。这不只归功于其时尚的外观,还有它实用之处。每张卡片拥有其相关的内容及其内容所触发的动作。换句话来说,每张卡片有它唯一的内容管理机制。

  2. 34个Android常用adb shell命令汇总

    调试Android程序有时需要adb shell 命令,adb全称Android Debug Bridge ,就是起到调试桥的作用。通过adb我们可以在Eclipse中通过DDMS来调试Android程序,说白了就是debug工具。adb通过监听Socket TCP 5554等端口让IDE和Qemu通讯。

  3. 使用Gradle构建Android项目

    Gradle是以Groovy为基础,面向java应用,基于DSL语法的自动化构建工具。是google引入,替换ant和maven的新工具,其依赖兼容maven和ivy。使用gradle的目的:更容易重用资源和代码;可以更容易创建不同的版本的程序,多个类型的apk包;更容易配置,扩展;更好的IDE集成;

  4. 适配多屏幕的最佳实践

    对于Android应用开发来讲,比较头疼的,也是比较重要的一个工作就是要尽可能多的支持市场上的Android设备,由于Android的开放性,各种奇奇怪怪的设备都有,符合标准的,不符合标准的,行货,水货,山寨货鱼龙混杂,防不胜防。

  5. 如何有效的减少重复的代码

    重复的代码一直都是可维护性的大敌,重构的重要任务之一也就是要去除掉重复的代码,有效的减少重复代码,可以大大提高软件的扩展性。

  6. 在android中画圆形图片的几种办法 在开发中经常会有一些需求,比如显示头像,显示一些特殊的需求,将图片显示成圆角或者圆形或者其他的一些形状。但是往往我们手上的图片或者从服务器获取到的图片都是方形的。这时候就需要我们自己进行处理,将图片处理成所需要的形状。

Android开发周报 Issue#5

| Comments

文章

  1. 进入Material Design时代

    Material Design是Android 5.0系统的重头戏,并在以后App中将成为一种设计标准,而且随着已支持Android 5.0 Lollipop的Nexus 6的开售,Google希望开发者更快的支持Material Design,连续发了3篇文章,来帮助开发者如何在自己的App 中实现Material Design。并表示:expect Winter 2014 to be a big quarter for design on Android.

  2. Android中View大小的确定过程

    子View有一个期望的尺寸大小,父容器有尺寸大小约束,这两方面的约束协调,用来计算View的大小状态。根据父容器的尺寸状态,以及子View的LayoutParams,可以确定子View的大小和状态:MeasureSpec,并要求子View确定自身大小。调用子View的measure()方法,子View的onMeasure()方法也会被执行。子View在onMeasure()方法中,根据父容器给出的尺寸大小和约束,根据自身情况,确定最终的大小。父容器根据子View的确定的大小,最终确定自身大小。

  3. ScheduledThreadPoolExecutor实现原理

    自jdk1.5开始,Java开始提供ScheduledThreadPoolExecutor类来支持周期性任务的调度,在这之前,这些工作需要依靠Timer/TimerTask或者其它第三方工具来完成。但Timer有着不少缺陷,如Timer是单线程模式,调度多个周期性任务时,如果某个任务耗时较久就会影响其它任务的调度;如果某个任务出现异常而没有被catch则可能导致唯一的线程死掉而所有任务都不会再被调度。ScheduledThreadPoolExecutor解决了很多Timer存在的缺陷。

  4. Android-IM架构设计

    文章介绍了蘑菇街开源的IM项目Android客户端的整体架构和消息流程。

  5. Android 命名规范(提高代码可以读性) 刚接触android的时候,命名都是按照拼音来,所以有的时候想看懂命名的那个控件什么是什么用的,就要读一遍甚至好几遍才知道,这样的话,在代码的审查和修改过程中就会浪费不少不必要的时间。如果就是我一个人开发,一个人维护的话还好,可是如果一个项目是团队分工合作,这样让你的同事去看你的代码就更加吃力了,因为大家之间的编程方式不一样,所以,在开发过程中,命名规范统一尤为重要,最好是团队中统一好大家命名方法,这样对于日后的工作会轻松很多。

Android开发周报 Issue#4

| Comments

文章

  1. Android系统性能调优工具介绍

    在软件开发过程中,想必很多读者都遇到过系统性能问题。而解决系统性能问题的几个主要步骤是:

    • 测评:对系统进行大量有针对性的测试,以得到合适的测试数据。
    • 分析系统瓶颈:分析测试数据,找到其中的hotspot(热点,即bottleneck)。
    • 性能优化:对hotspot相关的代码进行优化。
  2. The introduction to Reactive Programming you’ve been missing – 中文版

    什么是FRP?在互联网上有着一大堆糟糕的解释与定义。维基百科一如既往的空泛与理论化。Stackoverflow的权威答案明显不适合初学者。Reactive Manifesto看起来是你展示给你公司的项目经理或者老板们看的东西。微软的Rx terminology “Rx = Observables + LINQ + Schedulers” 过于重量级且微软味十足,只会让大部分人困惑

  3. Android Lollipop 新特性 - Palette

    Palette 可以从一张图片中提取颜色,我们可以把提取的颜色融入到App UI中,可以使UI风格更加美观融洽。比如,我们可以从图片中提取颜色设置给ActionBar做背景颜色,这样ActionBar的颜色就会随着显示图片的变化而变化。

  4. Android 使用动态加载框架DL进行插件化开发

    随着应用的不断迭代,应用的体积不断增大,项目越来越臃肿,冗余增加.项目新功能的添加,无法确定与用户匹配性,发生严重异常往往牵一发而动全身,只能紧急发布补丁版本,强制用户进行更新.结果频繁的更新,反而容易降低用户使用黏性.或者是公司业务的不断发展,同系的应用越来越多,传统方式需要通过用户量最大的主项目进行引导下载并安装.

代码&开源库

  1. dex-method-counts

    一个可以统计 .dex 文件中方法个数的命令行工具。

  2. smali2java

    可以将smali代码转换为java代码的工具。

Android开发周报 Issue#3

| Comments

文章

  1. Instagram工程师教你如何改善App的性能

    扁平化设计由于其简洁的外表,更少的按钮和选项使得界面干净整齐,从而减少认知障碍的产生。扁平化设计更是功能上的简化于与重组,相比于拟物化而言,扁平风格的一个优势就在于它可以更加简单直接的将信息和事物的工作方式展示出来。本文来自Instagram一名工程师的分享。

  2. AppCompat V21:将 Materia Design 兼容到5.0之前的设备

    本篇文章翻译自Chris Banes(就职于Google,工作内容 Android Developer Relations team),android 5.0今天发布。在很多很棒的更新中,包括了新的UI组件和创建 Material Design 主题的能力。为了使你能够将新的设计中更新到旧的系统中,我们同时更新了包含 AppCompat 的support libraries。在这篇文章中,我将总体说明一下appCompat的新特性并介绍一下如何应用于你的app中。

  3. Android中Activity启动过程探究

    文章从源码一步步分析了Android中Activity的启动过程,步骤很详细。

  4. 如何高效利用GitHub

    正是Github,让社会化编程成为现实。本文尝试谈谈GitHub的文化、技巧与影响。

  5. 跨终端Emoji

    由孢子社区 - 庄恒飞分享了饱子社区在跨终端Emoji表情上的一些实践经验。

Android开发周报 Issue#2

| Comments

文章

  1. Andriod Studio科普篇

    作者记录了自己在使用Android Studio时做的一些个性化设置,踩到的一些坑等等。

  2. 美团Android自动化之旅—生成渠道包

    文章介绍了三种打渠道包的方式。目前,Android团队打包基本使用第三种方式,完成了打包的自动化,解放了工程师的生产力,善哉善哉。打包的问题解决了,但有时候还需要为不同的渠道定制不同的APK。

  3. 美团Android自动化之旅—适配渠道包

    文章介绍了如何使用Android构建利器Gradle的flavor特性来定制渠道包。

  4. 如何把Android手机变成一个WIFI下载热点? — 报文转发及DNS报文拦截

    随着wifi的普及,移动运营商的热点也越来越多了,如中国移动的CMCC、中国电信的ChinaNet、中国联通的ChinaUnicom等,一般来说,连上此类的热点,打开浏览器上网时都会自动跳转到一个验证页面,最近有个项目也有类似的需求,Android手机自建热点,别的手机wifi连接此热点,打开浏览器,输入任意内容,自动跳转到一个下载列表页面,点击相应的链接即可下载相应的文件。

  5. Android通过Wifi来调试你的应用

    在Android中调试我们经常要用一根USB数据线连接到手机和电脑,一方面麻烦不说,手机一直连着电脑充电时间长了对手机也是一种伤害,另一方面如果哪一天忘记带USB数据线就很悲催了。今天就来教大家一种通过wifi来连接手机调试的方法,瞬间高大上有木有?而且不需要root,以后你就可以隔空给你公司的测试妹子安装/卸载apk了。

  6. Activity生命周期详解系列

    文章第一部分结合官方的Activity生命周期流程图讲解了各个生命周期方法的执行顺序,第二部分结合一些特定的使用场景分析了Activity的生命周期,第三部分讲解了onSaveInstanceState和onRestoreInstanceState这两个方法的作用。

Android开发周报 Issue#1

| Comments

文章

  1. HTTP2协议中英对照版

    HTTP 全称为 HyperText Transfer Protocol,中文叫做超文本传输协议。用于 Web 应用层传输,是 Web 架构的核心,它至今公布有 3 个版本:HTTP 0.9、HTTP 1.0、HTTP 1.1,作为与时俱进的我们,有必要去了解和学习 HTTP 2,它对我们未来 Web 性能优化工作起到很重要的作用,是一切优化的基础。现 Chrome 里也已使用 SPDY。

    由百度FEX团队的 zhangtao 等同学们,业余花费近半年时间翻译的 HTTP 2 草案发布。

  2. Android TouchEvent事件传递机制

    作者通过列举通俗易懂的例子和打印日志的方式讲解了Android TouchEvent事件传递机制。

  3. Android事件分发机制完全解析,带你从源码的角度彻底理解(上)

  4. Android事件分发机制完全解析,带你从源码的角度彻底理解(下)

代码&开源库

  1. SnappyDB

    一个Android平台的 key-value 数据库,在 读/写 操作方面可以完胜 SQLite。 下图就是它们在 读/写 方面的对比测试结果:

    image

Keytool 错误 java.io.IOException: Incorrect AVA Format

| Comments

今天在打包的时候碰到了 keytool 错误 java.io.IOException: incorrect AVA format 错误,还以为是混淆规则加的有问题导致的,看日志窗口也没有任何错误日志,只好请出Google大神,Google的一下错误信息,发现是有由于在创建Keystore时填写的 First and Last NameOrganizational UnitOrganizationCity or LocalityState or Province 等信息中是不允许有 , 符号的,将这些信息中的逗号去掉后就可以了。

image

Android开发周报 Issue#0

| Comments

文章

  1. SEAndroid安全机制框架分析

  2. Android apk动态加载机制的研究

  3. Android View系统解析(上)

  4. Android View系统解析(下)

  5. Android仿QQ5.0侧滑菜单ResideMenu源码分析

  6. Android ViewGroup事件分发机制

  7. ANDROID内存优化(大汇总——全)

  8. Android 属性动画(Property Animation) 完全解析 (上)

  9. Android 属性动画(Property Animation) 完全解析 (下)

  10. Android Fragment 真正的完全解析(上)

  11. Android Fragment 真正的完全解析(下)

  12. 利用&,^,~,«,»>写出高效艺术的代码

技巧

  1. Fragment的懒加载

  2. 去掉TextView中autolink的下划线