专栏首页博文视点Broadview【专家答疑】疯狂的Android

【专家答疑】疯狂的Android

Android系统就是一个开放式的移动互联网操作系统,Android已经成为应用最广的移动互联网平台,对于Java语言而言,Android系统给了Java一个新的机会。在过去的岁月中,Java语言作为服务器端编程语言,已经取得了极大的成功,Java EE平台发展得非常成熟,而且一直是电信、移动、银行、证券、电子商务应用的首选平台、不争的王者。但在客户端应用开发方面,Java语言一直表现不佳,虽然Java既有AWT/Swing界面开发库,也有SWT/JFace界面开发库,但对于客户端应用开发人员而言,大多不愿意选择Java语言。Android系统的出现改变了这种局面,Android是一个非常优秀的手机、平板电脑操作系统,正不断蚕食传统的桌面操作系统,而Android平台应用的开发语言就是Java,这意味着Java语言将可以在客户端应用开发上大展拳脚。

博文视点联合EOE网站,特邀《疯狂Android讲义(第3版)》图书作者李刚老师,现场为大家讲解关于Android开发技术问题。小编挑选了几段精彩的问答,分享给大家~


李刚:十余年软件开发从业经验,疯狂软件教育中心教学总监。疯狂Java实训营创始人,疯狂Java体系原创图书作者。广东技术师范学院计算机科学系兼职副教授。培训的学生已在华为、IBM、阿里软件、网易、电信盈科等名企就职。国内著名高端IT技术图书作家,其中疯狂Java体系图书均已沉淀多年,赢得极高的市场认同,多次重印成为超级畅销图书,并被多所“985”、“211”高校选作教材,部分图书已被翻译成繁体中文版,授权到台湾地区。

Q:书里面有介绍自定义View的吗?自定义控件感觉能做出很炫,符合自己要求的效果;可是,这中间的逻辑好像很难……

A:有自定义View的知识,至于你说得很炫的效果,主要需要2方面的知识,用户交互响应和图形、图像绘制与变换。因此无论你看上去多炫的自定义View,说到底都是开发者绘制上去。(另:本书第18章有一个《合金弹头》的游戏,整个游戏界面就是一个派生自SurfaceView的自定义View,你可以参考参考。) 不过有一些特定的图形、图像特效,还需要一定的数学基础知识。 关于自定义组件,不管看上去多么”酷炫“,其实无非是2个东西: 1. 用户交互。 2. 图形、图像的绘制和变换。 ——如果你没有自己掌握图形、图像的绘制,想做好看的自定义控件,几乎是不可能的;反过来,如果你图形、图像绘制掌握好了,那么你可以想把控件绘制成怎样,就绘制成怎样,一切都是你自己做主的。 《疯狂android讲义》有整整一章介绍图形、图像的绘制、变换相关内容;另外第18章的《合金弹头》整个游戏界面都是基于SurfaceView的自定义控件。

Q:看过这本书的第2版,写得很好,通俗易懂,逐渐深入。第3版和第2版中开发环境不同外,还有什么内容进行了升级?谢谢。

A:更新还是比较多的。 版本升级,Android 5.0的新知识,包括Material Design、实时阴影,屏幕捕捉、新型传感器、Camera v2(以前Android的相机API太糟糕了,Android 5.0的Camerav2效果非常好) 另外,第2版整合的是google地图,但由于众所周知的原因,在国内整合google地图不太靠谱,所以第3版改为整合高德地图。 第2版原来介绍的是《连连看》游戏,现在改为介绍《合金弹头》游戏。

Q:在书中涉及到android的GPS功能,android无线通信模块似乎没有设计到。例如bluetooth,NFC,可以开发很多新奇的应用。nfc还可以开发无线支付相关的应用,非常有前景。

A:是的。当初写第1版的时候,其实是已经包括了蓝牙相关的知识,但后来再出版时候,由于书实在太厚,所以被建议暂时没放进去。 后来也补充了nfc相关知识,但篇幅实在太多,如果有可能,可能会放在《疯狂Android讲义》补充篇中系统介绍。

Q:android最新版本又快出来了。技术更新真快。老师,想问一个问题。能有什么办法。在自己手机上装上最后新的android版本呢?在不靠第三方推送的情况下,能自己下载来安装吗?

A:通常的做法是 1. 先做rom 2. 然后把rom复制到手机的外部存储器(比如SD卡)上。 3. 清空手机原来的系统。 4. 选择安装新系统。 其实第4步、第5步根据手机不同,可能会存在一些差异。

Q:老师,关于Android屏幕适配有没有比较好的方案?

A:屏幕适配我通常有2种做法: 1. 利用Android本身资源管理提供的、针对不同目录提供不同资源的方式进行屏幕适配。 2. 程序先获取屏幕大小,然后在程序中根据屏幕大小动态进行计算。 如果只是做APP,一般第一种方式就够了。这个可参考《疯狂Android讲义》第6章;如果要做游戏,通常会采用第二种方式,这个可参考《疯狂Android讲义》的第18章的“合金弹头”游戏。 不过,无论如何,由于Android设备的屏幕变化太多了,总有一些可能是照顾不到的。

Q:老师,您好,自己接触Android有一段时间了,一直觉得自定义控件和NDK开发是Android领域比较麻烦的内容了(自定义控件还相对容易理解些),之前一直看的都是第二版的疯狂Android讲义,不知道这个新版本图书,在NDK开发上会有详细的介绍说明吗,最近HTML5也比较热,老师觉得HTML5结合Android开发前景好吗?还是单独的HTML5、Android开发比较好?

A:很遗憾,由于篇幅限制,第3版依然没有NDK的内容。HTML 5的知识可参考《疯狂HTML 5/CSS 3/JavaScript讲义》。HTML 5做的应用可以迅速地跨Android、iOS两大平台,因此存在很大的吸引力。 但对于HTML 5开发而言,实际上并不存在在PC机、android、ios的区别,因为我们面向的HTML 5的工业规范,我们写的东西,放在Android APP中,只要借助于WebView组件即可运行;放在iOS APP中借助于UIWebView即可。

Q:androidL正式引入ART,java开发是否有新的变化,需要注意什么问题?感谢。

A:ART的一个主要改变就是AOT,这种做法的好处是让APP运行时更加流畅,但势必导致如下2个缺点: 1。APP安装过程会变慢(因为安装之后就要进行预先的基础性编译) 2。APP占用的存储空间会变多(因为安装时就进行了编译,因此文件体积更多)。 对于这两种可能存在的问题,其实前面部分网友提到的插件式开发是一个不错的解决方案,尤其是当你的应用功能较多时,将不同功能分拆到不同插件中可能会更好。

Q:老师,你好!我的app现在是还用的4.0.3,有些缓存机制也用的第三方的框架,经常会出现图片预加载导致内存溢出的问题,我想问你下:

1 不知道5.0在app缓存机制方面有没有好的提升?

2 如果我将4.0.3升级到5.0的话是不是要整个重新设计?大概哪些方面比较耗时间?

3 不知道5.0以下的机子刷5.0的包会有不兼容的问题吗?有哪些需要注意的不?

希望老师能帮我回答下,谢谢!

A:1. 图片预加载导致溢出的问题。建议把大图片拆分,然后分开加载,如果你实在需要一个进程就预加载很多图片,那一定是设计有问题,因此用户界面上能看到的总是有限的。用户暂时看不到的,可以先做个代理,等到需要时再去加载。 2. 升级到5.0,改动的API还是比较多的。 3. 刷机问题通常建议参考各手机厂商的意见。

Q:我想问下Android开发对于Java水平要求高不高,最近看过很多Android开发经验1~3年的人,Java水平实在不敢恭维。问为什么水平差,回答说这些知识在开发时没有用到过,比如内部类的使用,protected权限修饰符用法、同步操作等等,至于泛型和注解甚至都没有听说过。因为我是从 J2EE转过来的,对Java基础要求比较高,难道现在Android开发对Java水平要求不高了?

A:按道理来说,Android开发对Java要求同样很高。不过国内现状就是,大家对基础知识往往很忽略,再加上大量书籍、培训机构热衷于搞各种快餐式口号,比如14天学会java、零基础20天掌握android开发之类,但这种口号往往很能迎合市场,最后导致部分人的基础比较薄弱。

Q:请问您是怎么成为前端,PHP,iOS和Android等各方向的全能专家的?

A:坚持。贾岛有句诗:“十年磨一剑”;初中时读过一个关于“卖油翁”的寓言;其实说的都差不多。 基本上,只要你把任何编程语言经营十年以上,你会发现很多东西都似曾相似。 就比如Swift吧,虽然是一门新语言,但你依然会发现它其实是一门老语言:它不过是这个语言、那个语言……的一些特性拼凑起来的。

Q:请问李刚老师android开发的过程中怎么看源码效果才最好啊?

A:首先第一点(也许是我个人的方法):不要想着一次就把所有源代码都看完。 接下来将你想查看的的源代码关联到你的IDE工具上。当你对某个功能感到迷惑时,你可以通过IDE工具提供的步入功能来跟踪程序的调用关系,跟踪各个方法之间的层次关系、方法实现,这样根据分功能地查看源代码。 这样不会让你产生茫然无措的感觉,而且你日积月累地坚持,时间长了,慢慢很多东西都会有较好的了解。

Q:我是几年前看疯狂java和疯狂android,然后出来找到工作的.当时还买了轻量级j2ee,疯狂ajax,疯狂xml等书.书中内容讲得不错.胜过国内出版的大部分书籍.后来李刚老师还有出IOS的书,敢问李刚老师为何知识面涉及能如此广泛?如果一个IT从业员,有没有必要学习这么多?

A:其实大家看到我能写出书的部分,只是我的小部分而已。 实际上,以前还做过vfp、vb、asp、pb、C之类的开发。 只是后来在Java上浸淫的时间最长,这里面有两个原因: 1.Java本身具有强大的生命力和非常广的应用面。 2. 我本人对Java确实充满了喜爱:作为一个从C过来的Java开发者,很难不被java编译器的人性化和智能化吸引。 对于一个从业十大几年的人而言,可以称得上见证了许多技术的兴衰成亡:比如pb的昙花一现,delphi昔日的辉煌无比、asp过往的风靡全国...... 对于一个刚踏入软件行业、或踏入软件行业不久的人来说,往往希望自己能一直用一门开发语言或一种技术,往往担心自己的所用的语言、技术被淘汰,甚至参与网络上各种争论、骂战——其实这都是不成熟的表现。 当一个程序员做到8年、10年以上,他很难永远之用一门语言:因为每门语言既然存在,总有它专门的地方。 作为一个技术人员: - 上等程序员,能发现不同语言的优势和不足,甚至开发出自己的编程语言; - 中等程序员,能横向比较各种不同的编程语言,扬长避短,进而做到他山之石,可以攻玉; - 下等程序员,抱残守缺,总认为自己所用的语言、技术是最好的。 因此对于一个优秀的技术人员来说,头3年应该尽力把一门语言、技术摸熟,但后来的日子,一定不要把自己局限在这里面,因此世界是变化的,只有拥抱变化的人才能走得更远。

本文分享自微信公众号 - 博文视点Broadview(bvbooks)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-06-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【移动开发丨主题周】Android服务调用的模式

    Android 的框架服务都是实现在system_server 的各个线程中的。因此应用调用它们时,必须使用进程间通信(IPC,Inter Process Co...

    博文视点Broadview
  • “非虫”带你剖析Android软件安全漏洞

    作为手机操作系统的大赢家之一,Android已经融入了我们的生活,从手机平台渗透到智能电视、智能家居甚至智能交通、智慧物流领域。但是,恶意软件的横行也对Andr...

    博文视点Broadview
  • Spring经典高频面试题,原来是长这个样子

    本文选自《Spring 5核心原理与30个类手写实战》一书,文末参与互动有机会赢取本书。本文题目目录:

    博文视点Broadview
  • Android完整知识体系路线

    移动研发火热不停,越来越多人开始学习Android 开发。但很多人感觉入门容易成长很难,对未来比较迷茫,不知道自己技能该怎么提升,到达下一阶段需要补充哪些内容。...

    Android技术干货分享
  • Android 获取版本号

    As described in the android documentation, the SDK level (integer) the phone is ...

    阳光岛主
  • 请收好这一份全面 & 详细的Android学习指南

    版权声明:本文为博主原创文章,未经博主允许不得转载,更多请继续关注Carson_Ho htt...

    Carson.Ho
  • 我想谈谈关于 Android 面试那些事,写给有开发经验的你们

    专栏的其他文章都针对 Android 面试不同的方面做了很深入的剖析,我就主要说说10月到11月小米面试前后的一些总结吧!当然,我不会透露任何的面试细节,即便是...

    Android技术干货分享
  • 从Android8.0版本的烧写分区变化看安全

    ●system.img 主要包括Android框架。 ●boot.img (内核/ ramdisk)包含Linux内核+ Android补丁。 ●vendo...

    安智客
  • let 和 const 命令

    for循环 设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域。

    达达前端
  • 电话号码的字母组合

    给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下,即与电话按键相同。注意1不对应任何字母。

    WindrunnerMax

扫码关注云+社区

领取腾讯云代金券