Android M DeepLinks AppLinks 详解

在Android M中Google做了很多优化性能、提升用户体验的事情,比如说:App权限、Google Now on Tap、Doze省电系统、AppLinks、DeepLinks等。最近工作接触到了AppLinks、DeepLinks这两个提升用户体验的优化,于是将自己对这两个优化的分析理解记录了下来。

DeepLinks、AppLinks是两个比较容易混淆的概念,但是在Android M中是两个完全不同的东西。

DeepLinks

从概念上不容易理解DeepLinks,所以举个例子来说。比如我们的手机安装了微信,当其他App发起一个Action为android.intent.action.SEND的intent的时候,Android系统会弹出Choose Picker供用户选择被调起应用,如果微信适配了Android M的DeepLinks,给DeepLinks中添加了常用8位微信联系人,那么在系统弹出的Choose Picker中会直接显示这8位联系人,供用户选择,直接将消息发送至选择用户。

Read on →
Dec 17th, 2015

Android Resource Walkthrough

关于Android Resource这一块老罗博客有详细分析,并且罗老师的博客大家都懂的,质量很高。但是我还是决定把自己从 开发者的角度对这一块的理解记录下来,所以就有了这篇文章,本文章也来自于对罗老师博客的学习研究。

文章主要从 代码编写代码编译代码运行 三个阶段来分析。

代码编写阶段

首先我们来看Android应用资源分类,Android应用程序资源可以分为两大类,分别是assets和res。

  • assets
    • assets类资源放在工程根目录的assets子目录下,它里面保存的是一些原始的文件,可以以任何方式来进行组织。这些文件最终会被原装不动地打包在apk文件中。如果我们要在程序中访问这些文件,那么 就需要指定文件名来访问。
Read on →
Aug 18th, 2015

Android4.4及以上版本实现状态栏与顶栏同色

在Android中实现状态栏与顶栏同色,可以增加应用的美观性,提升用户体验。那么这一点是如何实现的呢?

目前,比较常用的是github上一个叫做SystemBarTint的库。但是在实际使用的过程中,当与碎总的SwipeBackLayout滑动返回一起使用的时候,会发现通知栏并不能和当前页面一起被滑走,在StatusBar与ActionBar连接的地方会有很明显的撕裂感,非常影响用户体验。所以在我们自己的项目中放弃了这种实现方式并寻求其他解决方案,最终通过阅读SwipeBackLayout源码和SystemBarTint源码找到了解决方案,实现了状态栏和顶栏同色与滑动返回的完美结合。

首先我们通过SystemBarTint的源码分析来搞明白状态栏和变色是如何实现的

Read on →
Mar 4th, 2015

Android Develop Tips(一)

Android常用项目结构

在Android的开发过程中一直在不断的调整自己对于项目结构的架构方式,经过了多次的调整之后,现在基本每个项目都会以如下方式来架构:

  • api 放置一些API口类
  • app 放置一些与整个东西pp相关的类,如继承自Application的当前应用的Appliation类、继承自系统Resources写的当前应用的Resurces类、应用的版本管理VersionManager类等
  • bean 主要用来放置java bean的类
  • io 放置一些io操作的类,如网络请求、文件读写、数据库操作等等
  • provider 放置provider相关的类
  • receiver
    放置整应用里边需要的reiver类
  • service 放置整个应用里边的sevice类
  • ui
    • activity 整个应用的actvity类
    • adapter 整个应用的adapter类
    • controller 整个用中用到的ew层进行操纵的roller类
    • fragment 整个应中的fragemnt类
    • util 对应用中ui进行操作的一些helper类
    • view 整个应中可以分离出来的view
    • widget 整个应用的自定义控件
  • util 各种各样的工具类

我现在基本上每个项目都是这种架构方式了,另外,我习惯将自己平时的积累的一些工具类之类的类整理到一个Common的library module中,自己的每个项目都会把这个common module倒入进来,这样子方便了很多。

Read on →
Dec 11th, 2014

To Mac

经历了好久的外包填坑,终于把电脑从黑苹果换到了白苹果,各种环境也都搭好了,当然也包括博客环境了,所以博客之后恢复正常更新。

Nov 15th, 2014

After Install Ubuntu 14.04 LTS

前奏

之前从ubuntu 13.10升级到ubuntu 14.04 LTS,由于输入法的问题,在删除iBus的时候不小心删除了Unity的一些东西,结果桌面环境挂掉了,无奈重装系统,装完系统倒是焕然一新了,可是各种缺环境.然后开始了一系列配置环境的艰辛历程,通过这篇博文记录这艰辛历程,以备下次强迫症患了再一次作大死。

开工

基本系统配置

换源: 果断将源换成我大联创自己的源 mirrors.hustunique.com.之后sudo apt-get update更新一下.

安装chrome: 直接chrome官网下载chrome的deb包,然后通过软件中心安装即可.很庆幸的14.04中没有之前版本中出现的缺少lib的问题.

终端配置: 安装Termiantor终端,此终端比自带的终端强悍很多.

终端环境: 弃用bash,换上高大上的zsh.通过github上的 oh-my-zsh来管理zsh配置,执行以下shell即可

1
2
3
sudo apt-get install zsh
curl -L http://install.ohmyz.sh | sh  //自动安装
chsh -s /bin/zsh

Read on →
May 12th, 2014

Android-FeedBack

选择

之前开发OverHust的时候,需要用到用户反馈这一功能,于是就在考虑怎么实现用户反馈这一功能。

目前,常规方法如下:

  • 利用第三方服务,例如:友盟

  • 调用用户已登录的邮箱帐号发送邮件

利用第三方服务

优点:使用第三方服务,只需要调用接口,简单粗暴。

缺点:导入Library工程,自定义度不高。如果仅仅会用到第三方的用户反馈这一服务的话,更没必要导入别人的Library工程。

调用用户已登录的邮箱帐号发送邮件

优点:直接调用系统的发送邮件服务,更加简单粗暴。

缺点:如果用户没有在系统中登录邮箱帐号,那就悲剧了。

Read on →
Apr 16th, 2014

Linux内核编译

系统发行版ubuntu13.04,内核版本3.12.13 首先,官网下载所需内核。

为了之后的方便,切换到root权限 命令:sudo -i

复制内核包到制定目录 命令:cp ./linux-3.12.13.tar.xz /usr/src

解压内核包 命令:tar -xvf linux-3.12.13.tar.xz

切换到/usr/src目录下 命令:cd /usr/src

Read on →
Mar 9th, 2014

忙碌、充实的日子

年后初八离开家人,别离了可爱的女朋友,只身一人来到了学校,继续着忙碌而又充实的日子。从年后过来学校到现在收尾了不少事。终于有时间来总结我的大二上学期的生活。

记得暑假比别人大概早到校了一个月,提前开始了同样忙碌而又充实的日子。刚到校就开始开发一个微信公众平台,其实就是去熟悉了微信的公众的平台开发流程和php的一些基本用法。华科软件2013级微信公众平台,当时做得最爽的一个功能就是给新生的“我到了”功能,帮助了不少学弟和学妹。也就是在开发这个过程中接触到了腾讯街景地图,然后基于街景这一块继续深入做了下去,也就有了后来的OverHust。

OverHust,是一款基于街景的校园地图应用。当时接触到腾讯街景的时候就感觉街景很好玩,然后就萌生了写一个Android App的想法,了解一些基本情况后确定这个东西可以做,然后就找了一些人开始开发了。 <!--more--> 之前也做过一些android的应用,但是OverHust是我的第一个真正的产品。当OverHust刚开始开工的时候正好赶上了学校点团队的“斯达康种子杯”然后就随手报了名,顺便参加了比赛。然后就一路开发了下来,直到比赛最终决赛的时候做出了应用的初步版本。最终凭借着街景的有趣性、以及整个应用的界面设计和一些细节的把握等等各方面的原因,拿了大赛的一等奖,也拿了10000大洋,比赛也就结束了,但是应用离一个真正的产品还差得很远,于是就继续开发。一个个的实现各个功能模块,一个个的小细节改了又改,只为了让自己满意,让用户满意。在这期间也到光谷软件园democoffee关于OverHust做了一次分享,讲了Overust的用户定位、以及一些开发细节,当天也在democoffee认识了不少朋友,关于应用也和在场的很多人聊了很多。分享会之后,对于OverHust这个应用,自己静下心来想了很多很多,想了很多OverHust究竟能给用户带来什么?最终想明白了,就是街景与华科校园生活的精密结合。在期末考试之前放出了v0.8版测试,年后过来学校又接着开发了一段时间,现在整个应用v1.0基本已经开发完毕,过一段时间能上线了。

OverHust是我大二上学期最大的收获,我学着去做一个完整的产品出来,尝试着去带一个产品出来,当然也完整的写了整个应用,可以体验了一下产品经理和程序员一块当的感觉。整体感觉就是做一个让用户用着很舒服的应用要考虑太多太多的东西。

大二上学期另一个收获就是忙了将近两个月的团队(@联创团队)招新,从开始的招新策划到最后的新人进来团队开始新人任务整整忙了两个月,招新共有五轮考核(笔试、单面、熬夜测试、素质拓展、群面)。每一轮考核都有很多事要忙,那些日子整天事情多到只能用便签来记,要不记不住,事情实在太多,比如说借教室,面试者的考核等等很多的事都得来安排。整个招新流程下来,感觉自己成长了不少,学会了如何合理去安排人员、如何合理的给别人安排任务、如何处理一些矛盾、如何与一些领导去交流等等的很多东西,更重要的学会了承担。同时,看到自己招进来的人每天在启明八楼做着自己喜欢的事情,心里真心的开心。

大二也想明白一个很简单的问题,当时武汉外边的一个创业者找到了我,希望我和他一块创业,然后我负责技术这一块,刚开始看着一些看起来很华丽的东西,比如说期权、股份之类的东西,很是动心,然后心里就开始动摇了。可是,静下心来好好想了一段时间发现自己太天真了。现在创业根本不是时候,首先自己没有过硬的技术实力,其次对于一个公司的运作完全没有概念、然后也还没真正了解这个行业、人际圈子也还很窄。现在唯一需要做的就是安心学东西,学技术,让自己变得有实力了再来考虑这些事情。

最后,总结一下大二上学期的学习。大二上的学习基本上还是很满意的,面向对象、数据结构、计算机图形学这些课都上的挺认真的,就有一门毛概课基本没去上,最后的考试结果也还算满意。总之,大二上的课堂学习算是过关了,没有出现之前的挂科。

一句话,忙碌而又充实的日子。

Feb 21st, 2014

MentalModel开发心得

学校工业设计系一个实验室的老师在研究Android的交互设计,研究到人的心智模型这一块时,需要做一个实验,然后呢,就要用到一个Android的App,最后我帮他做了这个App,这期间有很多的体会和经验,写下来留给自己看。

这个应用大概是这样子的:

Read on →
Oct 28th, 2013