前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【专家答疑】疯狂的Android

【专家答疑】疯狂的Android

作者头像
博文视点Broadview
发布2020-06-11 10:55:55
5410
发布2020-06-11 10:55:55
举报

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年应该尽力把一门语言、技术摸熟,但后来的日子,一定不要把自己局限在这里面,因此世界是变化的,只有拥抱变化的人才能走得更远。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-06-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 博文视点Broadview 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档