1、Android 界面的基本知识介绍
:
在前面几张中,我们重点介绍了View,ViewGroup,Widget,SurfaceView,GLSurfaceView,这些基础的知识是android设计界面的基石,android的提供了activitymanager,windowmanager,viewmanager,assetmanager,resourcemanager等相关类,管理activity,window,view,resource等,让其与系统结合,展示在屏幕上。 android界面设计分为如下几个层次:
第一个层次,应用设计级,使用基本的xml进行布局,xml使用系统的widget和布局方式来布局界面,activity通过setContentView来完成界面在窗口上展示,通过activity来控制widget的事件方式来进行。这个层次,掌握的知识就是系统提供了多少widget,系统提供的布局方式有哪些,适配器如何与相关的widget如何操作。
第二个层次,架构操作级,使用组合的xml进行布局,通过一个activity调用多个xml文件完成布局,主布局通过setContentView来完成,其他的布局通过inflate来加载其他的xml文件来优化局部界面的布局,activity可以继承基本的activity(基本activity抽象了公共界面部分),界面进行了抽象设计,这样可以降低代码的数量,并提高系统的可维护性。要进行这样的设计,要能理解界面这张图是如何布局的,ViewGroup(LinearLayout,FragmentLayout等)是如何加载view的,这样,就能抽象公共部分进行设计。
第三个层次,平台优化级,能够从系统抽象类继承View,ViewGroup,Widget,SurfaceView,GLSurfaceView,改良或者增强系统的功能,比如抽象出新的布局方式文件,提高系统的整体性能,在这方面的例子有,pullRefreshList就是一个在list基础上改良的拖动上下刷新界面,launcher 通过继承 ViewGroup来完成app icon的布局和拖动,ViewPager 继承ViewGroup 实现了多页的加载和操作,改良和增强系统功能的控件在不断增加。这些设计要充分了解系统的设计接口(如 ViewGroup 的 OnLayout , OnMeasure在 LinearLayout 中是如何被重载的,在FrameLayout 是如何重载的,这样,书写 ViewPager就知道如何操作)。
作为android程序员,
第一层次的划分目录结构就是ui,resource,adapter, 设计按照功能划分,各自实施
第二层次划分的目录结构就是ui,recource,adapter,widget,base, 设计时需抽象公共base,小组内部人员沟通后可以使用base和widget
第三层次划分的目录结构为ui,resouce,adapter,widget,base,libs,设计时需高度抽象,形成新的widget或者base,让外部程序员可以使用。
说实话,我也很想作为第三阶段的程序员,为android贡献一份大力量,但能力和时间问题,一直没有机会,只能停留在第二层次上。
2、复杂界面设计的要点介绍 :
要点一:从业务和 UI设计上入手,了解每一个业务和 UI中的元素,及操作变化方式,从ui元素中寻找系统能提供的widget,尽量从系统widget来找到界面设计的基石,在这方面 ,信息的咨询也尤其重要,比如很多外部的控件可以实现内部功能,可以寻找并在开源代码中下载。
要点二:划分xml及基础类的结构,划分系统的xml,adpter,base class, ui class等抽象到类的基本实施,并逐步细化到函数和成员变量级
要点三:以上2点都是基于自设计的方式进行,另外,很多时候,开源或者论坛都给我们提供了部分的模型代码,我们,特别是刚入手的同行们,需要基于一个base的架构级ui,从原创设计改为changed设计,当然根据系统的开发人员的架构能力,决定是否原创或者部分修改,或者完全继承都是设计者的策略要素,但是,设计者在使用敏捷开发的思路的时候,信息和咨询的掌握尤其重要,我们很多时候拿到的开源代码,可能是初学者练手的程序,而不是facebook释放的部分开源代码,我们基于那样的代码进行重构,还不如完全自己重构。
要点四:重构完成后的策略评估,在我们开始进行代码编写前,评估很重要,这些评估包括(仅仅我自己的经验):实施时可能的性能(很多设计要源码验证,比如浏览整个手机图片的速度,对内存的损耗是否一般手机能够承担,人机界面的响应是否满足用户的操作速度),实施时实现的难度(进度要求,实施者能力等),外部操作接口(如文件上传调用的异步操作和本界面的人机交互,大量数据处理过程和人机交互的关注和控制),异常情况的处理(如网速过慢,内存爆满等)。
要点五:优化和完善,系统设计中重复代码需要进行重新的抽象,需要将部分代码抽象为widget,不断优化和完善,才能让系统更加优化。
3、几个复杂界面的设计介绍:
1、多主题下载:
在前面几张中,我们重点介绍了View,ViewGroup,Widget,SurfaceView,GLSurfaceView,这些基础的知识是android设计界面的基石,android的提供了activitymanager,windowmanager,viewmanager,assetmanager,resourcemanager等相关类,管理activity,window,view,resource等,让其与系统结合,展示在屏幕上。 android界面设计分为如下几个层次:
第一个层次,应用设计级,使用基本的xml进行布局,xml使用系统的widget和布局方式来布局界面,activity通过setContentView来完成界面在窗口上展示,通过activity来控制widget的事件方式来进行。这个层次,掌握的知识就是系统提供了多少widget,系统提供的布局方式有哪些,适配器如何与相关的widget如何操作。
第二个层次,架构操作级,使用组合的xml进行布局,通过一个activity调用多个xml文件完成布局,主布局通过setContentView来完成,其他的布局通过inflate来加载其他的xml文件来优化局部界面的布局,activity可以继承基本的activity(基本activity抽象了公共界面部分),界面进行了抽象设计,这样可以降低代码的数量,并提高系统的可维护性。要进行这样的设计,要能理解界面这张图是如何布局的,ViewGroup(LinearLayout,FragmentLayout等)是如何加载view的,这样,就能抽象公共部分进行设计。
第三个层次,平台优化级,能够从系统抽象类继承View,ViewGroup,Widget,SurfaceView,GLSurfaceView,改良或者增强系统的功能,比如抽象出新的布局方式文件,提高系统的整体性能,在这方面的例子有,pullRefreshList就是一个在list基础上改良的拖动上下刷新界面,launcher 通过继承 ViewGroup来完成app icon的布局和拖动,ViewPager 继承ViewGroup 实现了多页的加载和操作,改良和增强系统功能的控件在不断增加。这些设计要充分了解系统的设计接口(如 ViewGroup 的 OnLayout , OnMeasure在 LinearLayout 中是如何被重载的,在FrameLayout 是如何重载的,这样,书写 ViewPager就知道如何操作)。
作为android程序员,
第一层次的划分目录结构就是ui,resource,adapter, 设计按照功能划分,各自实施
第二层次划分的目录结构就是ui,recource,adapter,widget,base, 设计时需抽象公共base,小组内部人员沟通后可以使用base和widget
第三层次划分的目录结构为ui,resouce,adapter,widget,base,libs,设计时需高度抽象,形成新的widget或者base,让外部程序员可以使用。
说实话,我也很想作为第三阶段的程序员,为android贡献一份大力量,但能力和时间问题,一直没有机会,只能停留在第二层次上。
2、复杂界面设计的要点介绍 :
要点一:从业务和 UI设计上入手,了解每一个业务和 UI中的元素,及操作变化方式,从ui元素中寻找系统能提供的widget,尽量从系统widget来找到界面设计的基石,在这方面 ,信息的咨询也尤其重要,比如很多外部的控件可以实现内部功能,可以寻找并在开源代码中下载。
要点二:划分xml及基础类的结构,划分系统的xml,adpter,base class, ui class等抽象到类的基本实施,并逐步细化到函数和成员变量级
要点三:以上2点都是基于自设计的方式进行,另外,很多时候,开源或者论坛都给我们提供了部分的模型代码,我们,特别是刚入手的同行们,需要基于一个base的架构级ui,从原创设计改为changed设计,当然根据系统的开发人员的架构能力,决定是否原创或者部分修改,或者完全继承都是设计者的策略要素,但是,设计者在使用敏捷开发的思路的时候,信息和咨询的掌握尤其重要,我们很多时候拿到的开源代码,可能是初学者练手的程序,而不是facebook释放的部分开源代码,我们基于那样的代码进行重构,还不如完全自己重构。
要点四:重构完成后的策略评估,在我们开始进行代码编写前,评估很重要,这些评估包括(仅仅我自己的经验):实施时可能的性能(很多设计要源码验证,比如浏览整个手机图片的速度,对内存的损耗是否一般手机能够承担,人机界面的响应是否满足用户的操作速度),实施时实现的难度(进度要求,实施者能力等),外部操作接口(如文件上传调用的异步操作和本界面的人机交互,大量数据处理过程和人机交互的关注和控制),异常情况的处理(如网速过慢,内存爆满等)。
要点五:优化和完善,系统设计中重复代码需要进行重新的抽象,需要将部分代码抽象为widget,不断优化和完善,才能让系统更加优化。
3、几个复杂界面的设计介绍:
1、多主题下载: