Android应用开发者账号技术具有怎样的技术才算高级水平

Android应用开发者具有怎样的技术才算高级水平_百度知道
Android应用开发者具有怎样的技术才算高级水平
我有更好的答案
在黑客眼里,码农只不过是不入门的水平。你说应用开发,只要用心都能学会。
采纳率:77%
编程要很厉害,而且能够自己做软件(不是那种简单的哦)
为您推荐:
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。面试时,问哪些问题能试出一个Android应用开发者真正的水平? - 安卓 - 伯乐在线
& 面试时,问哪些问题能试出一个Android应用开发者真正的水平?
这是我在知乎上关于,大家感觉有些帮助,就收录在这里,以下是我的回答:
一般面试时间短则30分钟,多则1个小时,这么点时间要全面考察一个人难度很大,需要一些技巧,这里我不局限于回答题主的问题,而是分享一下我个人关于如何做好Android技术面试的一些经验:
面试前的准备
1. 简历调查
简历到你手上的时候,你要做好充分的调查分析,不仅仅是对公司负责,也是对自己与候选人时间的尊重,明显不match的简历,就不要抱着“要不喊过来试试看”的想法了,候选人也许很不错,但如果跟你的岗位不match, 也不要浪费大家时间,你要想清楚现在需要的人是有潜力可以培养的,还是亟需帮忙干活的。另外如果简历里附带了博客链接,GitHub地址,相关作品的,可以提前去看看,直接看人家多年积累的文章与代码,比这短短一小时的面试来得靠谱的多。
2. 准备问题
了解清楚候选人背景后,要根据简历,有针对性的准备问题,可以是他作品或做过项目里的某个技术细节的实现方式,也可以是他声称精通的某些领域的相关问题。总之不要等到面试过程中现想问题,特别是刚开始面试别人的同学,往往经验不足稍带紧张导致大脑短路,其实也是很尴尬的,把要问的问题提前写下来,准备充分。
考察哪些点?
1. 简历是否真实
这其实是面试第一要务,面试的过程其实就是看简历是否属实的过程,因为能到面试环节,说明这个人是符合要求的,不满足要求的早就被剔除了,如果他真的如简历描述的那样,100%会招过来,如果人人都如此,那就不需要有面试这种过程了。
需要注意的是这里的真实有三层含义:
一是他如实描述了自身经历,很多人只在一些大项目里做一个很小的螺丝钉,但简历里往往夸张这段经历。
二是不知道自己不知道,常见于简历里各种“精通”开头的描述,因为知识体系与视野的局限,明明只是了解很浅却夸口精通,很多时候他并不认为自己说的有问题,而是真的以为自己已然精通,有点井底之蛙的感觉。
三是简历里的真实要与你的期望相匹配,一门技术了解到怎样的程度才算精通,很难有定论,所以这里的“真实”只能是候选人与面试官标准之间的契合,这种有主观运气成分,也许面试官水平不够错误判断了你,也不用感到不爽,面试何尝不是种双向选择呢。
2. 技术的深度
技术的深度一向是我最看重的部分,当今任何一个技术领域都非常宽广,一个人要同时掌握那么多知识并且都深入几乎不可能,那都需要拼学习效率与工作年限了。而你曾经做过的东西,正在做的东西,是绝对可以了解得更深入的,一个对技术有好奇心,有技术热情的人,都不会仅仅停留在这个东西挺好用,而是会忍不住去探究它背后的技术原理,即便不是亲自去看源码,也会花点时间了解别人整理过的经验,所以单凭考察技术上的深度,就可以考察一个人是否对技术有热情,是否有技术好奇心等等这些很多大牛认为的所谓“优秀程序员的特征”。
之前曾看到过一句话:“一个人对他所做的事情了解得越深,他就能做的越好”。放在这里再合适不过了。
3. 技术的广度
深度是有了,还需要广度吗?我个人的理解是:深度是必要条件,广度是加分项。同样的有技术好奇心的优秀程序员,也不会满足于仅仅局限于自己的一亩三分地,工作之余,也会想要尝试一些其它的领域和方向,因为投入问题也许不够深入,但很多领域知识你知道与不知道,对你个人知识体系的形成关系很大。比如你要实现一个功能,在你当前熟悉的技术领域上很困难或者效果不佳,在你就要放弃时你的同事告诉你,这用一个简单sql语句就可以实现啦,为什么要搞得那么麻烦?这个例子虽然举得很蹩脚,但是我想意思大家应该已经明白了。知识越有广度,头脑里的技术体系就越完备,同样的问题,你就可以想到N个解,思考一下就得出最优解了,如果你听都没听过一些东西,就会经常说出“这个好难搞啊”,“这根本就不可能”,其实有的时候真是知识的局限问题,所谓的从0到1难,也是这个意思。
4. 逻辑思维能力
这也是我比较看重的一点,这里并不是指那些臭名昭彰的脑经急转弯问题,而是通过交流观察,判断一个人表达观点逻辑是否清晰,回答问题是否有章法,这个很难描述,但如果你细心观察,你会发现很容易通过一些简单的交流,就可以看出一个人是否逻辑清晰。有时候你会觉得某个人表达沟通很不错,其实不是沟通的问题,是他说出去的话,经过了他大脑的条理清晰的整理,让你很容易就能明白。这种习惯不是一朝一夕就能养成的,所以面试过程中这点装不出来。
另外一个人如果逻辑清晰,而且反应又敏捷,语速很快,那是大大的加分项,恭喜你,碰到一个聪明人了。
具体问哪些问题?
前面提到的是要重点考察的点,那么具体的Android开发,有没有一些通用的问题可以问的呢?我个人一般会从这几个角度考察候选人:
1. Android经验
如果不是校招,Android经验是必须的,我比较喜欢问一些基础概念与技术原理,比如Activity、View、Window的理解,各LaunchMode的使用场景,View的绘制流程,Touch事件机制,Android动画的原理,Handler, Looper的理解,Android跨进程通讯的方式,Binder的理解,Android Mashup设计的理解等等。
2. Java水平
基本上就是Effective Java那本书里提到的东西,如果你背完那本书里的问题,并且对答如流,没问题,就要你这样的。其实也会考察关于final用法,反射原理,注解原理,java编译过程,GC等一些常见问题。
3. IT基础知识
其实就是计算机科班学生学校里学到的一些东西,在校招时这块是重点,社招会放宽,但一些基本的常识是要有的,比如不少人都不知道http的get post有啥区别,https的那个s是什么意思,讲不清进程与线程的概念,不知道二分算法是个啥东西。这些简单问题的筛选,可以过滤一些所谓野路子的程序员,是不是科班出身不重要,搞这行就得对一些基本常识有概念,不然以后怎么愉快的交流呢?
4. 代码质量的认识
我们需要的是一个对代码味道有感觉的人,关于这点,看下《Clean Code》就够了,面试中这点其实不好考察,可以让他聊一聊对代码质量的认识,虽然不能排除对方夸夸其谈,至少想法不多,只能提到命名风格这一点的人是不符合要求的,也可以在写Code的环节中观察。
5. 技术视野
比如对Android开发新技术的了解与学习,对其它流行技术领域的了解,这其实与我刚才提到的技术广度的考察有关,就我面试过程中,发现很多非互联网行业的从业人员,因为公司各种操蛋规定与公司技术氛围的原因,技术视野相当狭窄。
我个人对这点深有体会,2011年我还在传统行业从事软件研发,当时的公司因为担心技术信息泄露,不让上网,相当封闭,我个人虽然自认为已在那个行业内做到业内专家的级别,但总感觉哪里不对,有一天我很兴奋的打算跟身边同事聊一聊Android的时候,发现他们居然都不知Android为何物?2011年啊同志们,当时的震惊无法言表,深切感觉到需要作出改变了,毅然放弃多年行业积累,转战移动互联网,直到现在。时至今日,多年前的小伙伴也有很多混出了名党,开始走向人生巅峰,我也从来没有后悔当初做出的选择。
6. 技术想象力
一个优秀的技术人,如果知识的深度与广度足够,知识已成体系,那么他对于一些从未接触过的领域,也是可以做出足够合理的想象与判断,面试过程中如果问到一些领域候选人没有涉猎,这时候一般不用过多纠缠,但如果你想借这个问题考察下他的技术想象力,可以深入下去,比如问他:“你觉得这个东西应该是什么原理呢?”,“这个酷炫的控件,如果要你来做,你会怎么实现?”。在这方面表现出色的同学无疑是有深厚基础与足够广度的人。
7. 技术习惯
好的程序员都会有好的习惯,比如各种快捷键的熟练应用,各种命令行的掌握,一些提高开发效率的工具与习惯,碰到问题是baidu还是google,有没有做一些小工具帮助减少重复工作,工作之余有没有继续学习?有没有看什么不错的书等等,这些小细节很大程度上决定了程序员的开发效率,这也是为什么很多人说一个优秀程序员抵得上100个普通程序员,这也是重要原因之一。
面试后的反馈:
面试一般不止一轮,你需要给出你的反馈,多轮面试结果一起考量,减少误判的风险,反馈一般怎么写呢?以下是我的建议:
1. 面试纪录
面试过程中的完整纪录,尽量客观评价,让其它面试官知道你问了哪些问题,回答的怎么样,也避免了重复问题的尴尬。
2. 优点与缺点
你的主观评价,亮点有哪些,你觉得哪些地方不够好?
3. 综合评价
你对候选人的综合评价,hire或者no hire的根本原因,如果有些地方感觉没考察清楚,期望其它面试官继续加强考察,也可以写上。
4. 怎样才给通过?
通过标准因人而异,每个人都有自己心中的bar, 但还是有些可直观考量的因素的:
一是岗位的要求,不同的岗位标准当然不一样,校招与设招肯定也不一样。
二是岗位的紧急程度,兄弟们天天加班忙死了,赶紧找人过来帮忙吧哈哈。
三是候选人的年龄,大龄程序员莫怪,一把年纪了还跟刚毕业一两年的同事一个水平,说明成长太慢,做技术的潜力有限,这个大家应该能理解。
四是前面提到的做技术的深度,这个是必须的,广度也要有一些,视野不能太窄。
五是要有亮点,大家在面试的过程中要注意发掘亮点,有时候他问题很多但有一个足够的亮点也够了,用心观察也发现不了什么亮点的,就要注意了。
说了这么水平多,其实最重要的就是一句话,问问你自己:你真的原意跟那个家伙一起并肩战斗吗?
可能感兴趣的话题
不是Android面试嘛,肯定是自定义控件和各种框架啊不是吗,这些不是最体现水平,理论的我一直觉得有时能忽悠人,没有给个项目来的实际
关于安卓频道
安卓频道分享Android开发文章,精选工具和安卓相关的行业动态。
新浪微博:
推荐微信号
(加好友请注明来意)
– 好的话题、有启发的回复、值得信赖的圈子
– 分享和发现有价值的内容与观点
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 翻译传播优秀的外文文章
– 国内外的精选文章
– UI,网页,交互和用户体验
– 专注iOS技术分享
– 专注Android技术分享
– JavaScript, HTML5, CSS
– 专注Java技术分享
– 专注Python技术分享
& 2018 伯乐在线没有更多推荐了,
不良信息举报
举报内容:
试出一个Android应用开发者真正的水平
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!移动开发人员应该如何提升自己的技术水平移动开发人员应该如何提升自己的技术水平无人化之路百家号今天简单给大家介绍一下作为一个移动开发人员(主要指的是Android开发者)如何提升自己的技术水平。学习路线:每个人的学习路线不尽相同,应该根据需要选择适合自己的学习路线,可以总结两种供大家参考:自己为自己制定了学习计划:数据结构 -& 算法 -& 操作系统 -& 编译原理等等,这样一步一步的从底层踏实进行;不过这条路需要有足够的自制力和自学能力。以工作和项目为出发点,深入学习后面的实现原理和底层机制,不断扩大自己的知识面;这种学习也是可以的,就是可能会一时间不理解全貌有所偏颇。学习方法:初级学者主要从Android Developer开发网站上进行学习,其实不光是初学者,高级工程师也要不断看Google的官方文档才能深入理解。根据自己的水平,找适合自己、优秀的开源代码,学习里面的设计思想,并尝试仿写和实际应用。看Android源码,从Framework层入手,慢慢深入到Kernel层;在看的过程中,会遇到一些不容易看懂的地方,可以采用调试源码、打log输出等方式辅助自己去理解。有些代码值得自己花较长时间去”啃掉硬骨头”,反复地去理解、琢磨,强行度过这段瓶颈时间,后面再看其他代码可能会有种豁然开朗的感觉。有目的性的深入技术,不能只是浏览表面。一定要夯实基础,Android Developer开发文档要多看多回顾;看源码的时候不要轻易放弃,看的时候不要递归,及时返回,遇到不懂的点可暂时先放下,要有全局观。比如可以看看系统的Browser源码,非常经典优秀。应该注意的点:看源码的时候,应该初看来了解其整体,看大体思路;可以直接从方法名入手,因为方法名大多都是有明确含义的。推荐使用工具:source insight。要知道有很多机制都是通用的,不分平台、不分语言。比如,消息循环机制、cpu进程调度,这些原理需要去学习和掌握,可以达到一通百通、融会贯通的境界。提升技术水平的道路上有的时候是很辛苦的,需要自己给自己鼓励,坚持下去,总有一刻会体悟到&柳暗花明又一村&的快感。学习途径:资料是永远看不完的,要根据目前的需要有主题的学习:Android开发周报、开发者头条、infoq、stackoverflow。学会积累:经常总结学习的心得和工作的收获,并用印象笔记、博客、有道云笔记等记录。练习代码必不可少:阅读和项目相关的书籍、资料,尝试维护自己的github,经常写自己的demo。经常参加各种分享,与他人交流困惑。最重要的是:培养对技术的热情!最后用一张图来表达如何学习一个新技术:本文仅代表作者观点,不代表百度立场。系作者授权百家号发表,未经许可不得转载。无人化之路百家号最近更新:简介:一个充满技术信仰的人,对新技术充满热爱。作者最新文章相关文章2.2 值文件
本文所属图书&>&
如何才能真正进阶为Android应用开发高手?必须深入理解Android核心技术的底层原理和在开发中总结并使用各种最佳实践,别无他法!本书以Android的源代码为主,SDK为辅,针对应用开发者的需求,对各种核心技术的使...&&
值文件是应用必需的资源文件,其承担着应用的UI配置和文字显示工作。值文件包括字符串文件、字符串数组文件、配置文件、整数数组文件、维度文件、属性文件、颜色文件、风格文件、主题文件、标识符文件等,其中英文目录为res\values,简体中文目录为res\values-zh-rCN,繁体中文目录为res\values-zh-rTW,其命名规范遵循ISO639-2和ISO3166MA标准,其命名格式为:
values-&语言&-&方言&
1. 字符串文件
字符串是最常用的值资源,其常用的设置方法如下:
&string name=&edit_event_from_label&&From&/string&
&string name=&edit_event_all_day_label&&All day&/string&
&string name=&edit_event_calendar_label&&Calendar&/string&
&string name=&edit_event_show_extra_options&&Show extra options&/string&
如果该字符串资源不必本地化,则需要设置其translatable属性为 false,具体如下:
&!-不需翻译--&
&string name=&voice_mode_off& translatable=&false&&2&/string&
除了name属性外,另一个需要注意的属性是msgid。msgid属性通常用于框架层,在应用层不需显式声明。
在中,特定的符号,如Nont中的&&&,无法直接在字符串资源中设置,开发者必须通过转义字符的方式进行显示。
最后,在加载资源的过程中,会以资源的ID为线索进行加载。Android不允许在同一名字空间中出现相同的ID。
(1)字符串资源的引用
在Android中,资源分资源和应用资源两种,这两种资源在应用中引用的方式略有差异。资源并不全部对应用层开放,对应用层开放的系统资源在frameworks\base\core\res\res\values\目录下的public.xml中定义。不对应用层开放的系统资源的加载方式如下:
getString(com.android.internal.R.string. using);
//采用&@ com.android.internal.R./...&方式
除字符串资源以外的其他系统资源的加载方式和加载字符串资源类似,后面就不再详述其他类型的系统资源的加载了。
应用本身的字符串资源在XML配置文件中的加载方式如下:
&EditText android:id=&@+id/text&
& android:layout_width=&match_parent&
& android:layout_height=&match_parent&
& android:textSize=&18sp&&&&&//字体大小
& android:autoText=&true&
& android:capitalize=&sentences&
//引用字符串,采用&@ string/...&方式
& android:text=&@string/hello_activity_text_text& /&
在文件中,应用本身的字符串资源的加载方式如下:
//采用&R.string.***&方式
test.setText(R.string. hello_activity_text_text);
引用的框架层的字符串资源在XML配置文件中的加载方式如下:
&EditText android:id=&@+id/text&
& android:layout_width=&match_parent&
& android:layout_height=&match_parent&
//中等字体
android:textAppearance=&?android:attr/textAppearanceMedium&&&&
android:autoText=&true&
& android:capitalize=&sentences&
//引用字符串,采用&@android:string/...&方式
& android:text=&@android:string/cancel& /&
在文件中,引用框架的字符串资源的加载方式如下:
//采用&android .R.string.***&方式
test.setText(android.R.string.cancel);
(2)数据交换
对于复杂的字符串数据,出于方便设计的考虑,Android支持XLIFF (XML Localization Interchange File Format)和通配符。
在一个字符串标签中Android仅支持一个通配符,其应用方法如下:
&string name=&test&&test &%1&&/string&
在Java中加载通配符的方法如下:
test.setText(getString(R.string.hello).replace(&%1&,
String.valueOf(curPage)));
Android对XLIFF的支持的实现也非常简单。以ANR为例,其字符串资源如下:
&string name=&anr_process&&Process &xliff:g
id=&process&&%1$s&/xliff:g& is not responding.&/string&
XLIFF的名字空间为xmlns:xliff=&urn:oasis:names:tc:xliff:document:1.2&。
在Java中加载字符串的方法如下:
//采用的加载方法为getString (resId, formatArgs)
res.getString(com.android.internal.R.string.anr_process,
name1.toString(), name2.toString());
(3)下画线的实现
在Android中,文字特效目前仅支持加粗和斜体两种,如果希望实现加下画线的功能,则需要借助HTML语法,实现方法如下:
textView.setText(Html.fromHtml(&&u&&+helloStr+&&/u&&));
(4)语言切换的实现
语言的切换是通过资源管理器进行的,方法如下:
Resources resources = getResources();
Configuration config = resources.getConfiguration();
DisplayMetrics dm = resources .getDisplayMetrics();
config.locale = Locale.SIMPLIFIED_CHINESE;
resources.updateConfiguration(config, dm);
通过类似的设置,开发者也可以切换屏幕密度、MCC、MNC、屏幕方向等,当然部分设置可能需要高级别的权限。
2. 字符串数组文件
字符串数组通常用于下拉框等场景,如果不希望该字符串数组随着语言环境的变化而变化,可以将字符串数组的translatable属性设为false,方法如下:
&string-array name=&preferences_alert_type_values& translatable=&false&&
&&& &item&&0&&/item&
&&& &item&&1&&/item&
&&& &item&&2&&/item&
&/string-array&
字符串数组的加载也很简单,在XML配置文件中的加载方式如下:
&ListPreference
&& android:key=&preferences_alerts_type&
&& android:defaultValue=&@string/preferences_alerts_type_default&
&& android:title=&@string/preferences_alerts_type_title&
&& android:entries=&@array/preferences_alert_type_labels&
&& android:entryValues=&@array/preferences_alert_type_values&
&&//字符串数组,采用& @array/...&方式
&& android:dialogTitle=&@string/preferences_alerts_type_dialog& /&
在Java中字符数组的加载方式如下:
ArrayAdapter&CharSequence& adapter = ArrayAdapter.createFromResource(
&& this, R.array.colors, android.R.layout.simple_spinner_item);
&& //采用&R.array.***&方式
3. 配置文件
配置文件在应用开发中并不常用,通常用于应用的设置等场景,配置文件的实现如下:
&resources&
&bool name=&config_sf_limitedAlpha&&false&/bool&
&integer name=&config_shortAnimTime&&150&/integer&
&/resources&
在Java中配置文件的加载方式如下:
mLimitedAlphaCompositing = context.getResources().getBoolean(
&&&&&& com.android.internal.R.bool.config_sf_limitedAlpha); //采用&R. bool.***&方式
4. 整数数组文件
整数数组和字符串数组的使用方法类似,下面是整数数组的实现:
&integer-array name=&config_virtualKeyVibePattern&&
&&& &item&0&/item&
&&& &item&10&/item&
&&& &item&20&/item&
&&& &item&30&/item&
&/integer-array&
在Java中整数数组的加载方式如下:
int[]& tmpArray =
getResources().getIntArray(com.android.internal.R.array.config_virtualKeyVibePattern);
5. 维度文件
维度文件的实现也非常简单,示例如下:
&resources&
&&& &dimen name=&thumbnail_width&&84dp&/dimen&
&&& &dimen name=&thumbnail_height&&63dp&/dimen&
&/resources&
在Java中维度文件的加载方式如下:
getResources().getDimensionPixelSize(com.android.internal.R.dimen.thumbnail_width);
6. 属性文件
在Android中,属性文件通常由多个标签(如declare-styleable、eat-comment、attr)组成。
declare-styleable标签用于声明一个属性组,一个属性组可以由多个属性构成。在如下代码中,declare-styleable声明标签名为Animation的属性组。
&declare-styleable name=&Animation&&
&/declare-styleable&
加载属性组的方法如下:
TypedArray a = context.obtainStyledAttributes(attrs,
com.android.internal.R.styleable.Animation);
a.recycle(); //用于随后的复用
eat-comment标签用于声明标签上的内容为注释。
另外 attr标签用于声明属性。一个属性包括属性名和属性格式两部分。声明属性的示例如下:
&resources&&&&&&&
&&&&&&& &attr name=&buttonStyle& format=&reference& /&
&&&&&&& &attr name=&buttonStyleSmall& format=&reference& /&
&&&&&&& &attr name=&buttonStyleInset& format=&reference& /&
&&&&&&& &attr name=&buttonStyleToggle& format=&reference& /&
&/resources&
目前,Android支持的属性格式包括reference、color、float、integer、fraction、boolean、dimension、string等。
需要注意的是,Android允许属性支持多种属性格式。下面是background属性的实现示例:
&attr name=&background& format=&reference|color& /&
由上述示例可以看出,background属性既可加载配置文件,又可直接设置ARGB值。
为属性配置偏好值的方法如下:
&attr name=&bufferType&&
&&& &enum name=&normal& value=&0& /&
&&& &enum name=&spannable& value=&1& /&
&&& &enum name=&editable& value=&2& /&
偏好值的实现分为enum、flag两种类型,其中flag表示以二进制方式表示偏好值。
7. 颜色文件
颜色的设置文件通常会放在框架层的资源目录中。对颜色属性进行引用而不是在应用层显式声明,有利于在系统层面保持UI的一致性。在颜色的声明中,采用的是ARGB的格式。颜色设置的方法如下:
&resources&
&&& &color name=&magic_flame&&#00ffffff&/color&
&&& &color name=&button_text&&#ffffffff&/color&
&/resources&
颜色设置在XML配置文件中的加载方式如下:
&TextView android:id=&@+id/error&
&&& android:layout_width=&match_parent&
&&& android:layout_height=&wrap_content&
&&& android:textColor=&@color/red&
&&& android:textStyle=&bold&
&&& android:visibility=&gone&/&
在Java中颜色设置的加载方式如下:
setBackgroundColor(getResources().getColor(R.color.candidate_background));
//采用& R.color.***&方式
另外,在Android中,Google提供了多种系统颜色定义,如primary_text_dark、primary_text_light、white、black、transparent等。
8. 风格文件
一个好的应用除了技术上应设计得优雅外(即代码具有高的可读性、可扩展性、复用性、性能),用户体验也非常重要(包括文字的用语和观感、图片的观感和交互设计)。风格的设计决定了用户体验中文字和图片的效果。风格文件的设置方法如下:
&&?xml version=&1.0& encoding=&utf-8&?&
&resources&
&&& &style name=&digit_button_style& parent=&button_style&&
&&&&&& &item name=&android:background&&@drawable/blue_button&/item&
&&& &/style&
&/resources&
设置风格的方法如下:
&com.android.calculator2.ColorButton
&&& android:id=&@+id/digit7&
&&& android:text=&@string/digit7&
&&& style=&@style/digit_button_style&
9. 主题文件
主题文件在框架层比较常用。对于进行差异化工作的厂商而言,保持同一个主题是一个基本的UI需求,定义统一的风格文件供公司所有产品引用,是个不错的选择,示例如下:
&style name=&Theme.Light.NoTitleBar&&
&&&& &item name=&android:windowNoTitle&&true&/item&
下面是XML配置文件中的引用方式:
&activity android:name=&.fuelgauge.PowerUsageDetail&
&&&& android:theme=&@android:style/Theme.NoTitleBar&
&&&& android:label=&@string/details_title&&
&/activity&
风格和主题的设计看似简单,实际上涉及的维度很多,既要考虑到用户的视觉感受,又要照顾不同层次、不同地区用户的文化差异。如何在考虑这些要素的基础上将需要的信息以一种统一、简洁、优雅的方式呈现出来,挑战很大,通常需要UI、UE工程师具备多年的积累和深厚的文化底蕴。关于UI、UE方面的更多内容,请参考文献[39]和文献[40]。
10. 标识符文件
标识符文件对于应用层开发者来说并不常见,但这并不意味着开发者完全接触不到,在使用系统提供的ListView、Tab等就会涉及。标识符文件的实现方式如下。
&resources&
& &item type=&id& name=&background& /&
& &item type=&id& name=&checkbox& /&
& &item type=&id& name=&content& /&
&/resources&
在实际的开发中,经常需要自定义Tab的布局,这时候必须声明tabhost、tabcontent、tabs等控件ID为系统ID,方法如下:
&& xmlns:android=&http://schemas.android.com/apk/res/android&
&&& android:id=&@android:id/tabhost&
&&& android:layout_width=&match_parent&
&&& android:layout_height=&match_parent&&
&&& &LinearLayout
&&&&&&& android:orientation=&vertical&
&&&&&&& android:layout_width=&match_parent&
&&&&&&& android:layout_height=&match_parent&&
&&&&&&& &TabWidget android:id=&@android:id/tabs&
&&&&&&&&&&& android:layout_width=&match_parent&
&&&&&&&&&&& android:layout_height=&wrap_content&
&&&&&&& /&
&&&&&&& &FrameLayout android:id=&@android:id/tabcontent&
&&&&&&&&&&& android:layout_width=&match_parent&
&&&&&&&&&&& android:layout_height=&0dip&
&&&&&&&&&&& android:layout_weight=&1&
&&&&&&& /&
&&& &/LinearLayout&
&/TabHost&
对于自定义列表的布局,必须声明ListView的控件ID为系统ID,方法如下:
&FrameLayout
&&& xmlns:android=&http://schemas.android.com/apk/res/android&
&&& android:layout_width=&match_parent&
&&& android:layout_height=&match_parent&&
&&& &ListView
&&&&&&& android:id=&@android:id/list&
&&&&&&& android:layout_width=&match_parent&
&&&&&&& android:layout_height=&match_parent&
&&&&&&& /&
&/FrameLayout&
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。
文章下载读书

我要回帖

更多关于 苹果开发者中心技术 的文章

 

随机推荐