Android Studio试用总结

Android Studio是一年前Google I/O上推出的一款Android开发IDE,他基于JetBrains’ IntelliJ IDEA,目前还在preview阶段。增强了布局拖拽和预览功能,使用了新的构建系统Gradle,增加了android相关的重构和quick fix功能。之前听说用Android Studio来构建应用程序的时候会很方便,而且在学习常用Android开源项目的时候看到大部分都提供了对Android Studio的支持,所以就折腾了下,分享点经验给大家。

大多数Android Studio尝鲜者遇到的最大的障碍是Gradle,启动的时候非常慢,他需要从Maven库下东西,网络不稳定,这就坑了,不知道别人怎么解决的,我是翻墙搞的,光这一点就阻止了Android Studio大陆范围内推广,而且多人合作的时候同伴不一定习惯这个东西。网络的问题如果解决后,就需要了解Gradle的构建原理,这也需要费一番功夫的,去年谷歌I/O上有40分钟的视频来说明他是怎么工作的,链接在这里,讲的很清楚,在Linkedin上查到主讲人的头衔是”Tech Lead for the Android SDK at Google”。

你可以新建一个HelloWorld工程感性的认识一下Android Studio的使用。你肯定会在这个过程拿他和Eclipse做对比,很可惜的是,他们的目录结构不像AppCode和Xcode一样目录完全兼容可以相互无缝替换,不能直接import对方的工程,虽然现在Eclipse提供了功能可以把现有项目导出来再导入到Android Studio中,但是这个过程并不是无痛的,也会有些小问题,很麻烦;反过来,要把Android Studio中的项目导出来到Eclipse中,那就是纯属找事了。
(更多…)

继续阅读 →

android触摸事件处理流程

(系列文章点这里)

最近在工作中,经常需要处理触摸事件,但是有时候会出现一些奇怪的bug,比如有时候会检测不到ACTION_MOVE和ACTION_UP,我决定下决心写个测试的小程序,来研究一个触摸事件从上往下是怎么传递和处理的。

先说下大概的流程吧,这个应该在很多博客中都有讲解:当一个事件来临的时候,会先传递给最外层的ViewGroup(比如LinearLayout,FrameLayout),如果这个ViewGroup没有去拦截这个事件的话,才会给传递给下层的ViewGroup或者View。如果被拦截掉的话,它会自己去处理这个事件,这个ViewGroup内的View将无法得知上层发生了什么。

ViewGroup的拦截事件的函数为

public boolean onInterceptTouchEvent(MotionEvent ev)

onInterceptTouchEvent的参数ev就是一个触摸事件,可以从ev获取到事件的坐标,类型,当前屏幕上点的个数等等。通常我们在继承ViewGroup的时候都会重写这个方法,判断目前需不需要拦截,即返回true还是false。返回true的时候表明事件不再往下传了,否则就往下传。那返回true的时候怎么处理呢?
(更多…)

继续阅读 →

几个在线教育网站的使用感受

最近经常使用的在线教育站点有Coursera,CodeSchoolCodeCademy

先说下Coursera,这个应该是知名度最高的,覆盖了很多学科。教课的形式跟大学差不多,一般是每周放出几段视频(每段十几二十分钟)和课后作业,课后作业各种形式的都有:问答的,提交程序代码在线测评的,同学之间相互测评的等等。今年以来,Coursera对中文的支持提高了很多,第一次访问Coursera的界面都是中文的比较友好,另外中文教学课程也逐渐丰富,典型的比如国立台湾大学的《機器學習基石》、《機率》,上交的《数学之旅》、《社会与法》,北大的《计算概论A》、《人群与网络》等等等等。当完成一项课程合格之后,大多数会提供一份Statement of Accomplishment, 就是pdf版的证书。Coursera还有一项收费服务Signature Track,提交作业时会有让用户打一段文字并会拍摄头像识别是不是本人,如果成功完成课程会有学校官方认可的证书发放,可以放到简历或者LinkedIn上。不过在国内这种环境下貌似意义不大,唯一有意义的是催促你按时完成课程,毕竟一份Signature Track要四五十刀,不过了就可惜了。在Coursera上混了一年多,只完完整整学完了两门课,一门是创始人Andrew Ng的《Machine Learning》,另一门是仅有四周的《Computing for Data Analysis》,主要原因是太贪了,有时候同时进行十几门,哪能学好呢。我现在老实了,在一个时间段只学习一门课程,现在正在跟的是UIUC的Android课程,并且注册了Signature Track,希望能认真完成,然后再去找其他感兴趣的东西。

推荐课程:
(更多…)

继续阅读 →