《框架及UI设计.ppt》由会员分享,可在线阅读,更多相关《框架及UI设计.ppt(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、android框架及应用开发介绍框架及应用开发介绍信息应用开发部信息应用开发部20092009年年9 9月月2Android的发展初探Android框架如何开发一个android应用如何开发一个widget目录Android发展路线2007年11月,Android发布2008年9月23日,HTC G1上市,android SDK 1.0发布2008年10月21日,android开源2009年4月27日,android SDK 1.5发布?android 2.0,代号donut,支持CDMA,多点触摸,文本语音引擎,3Android手机一览4华为pulseLG Etna5Android的发展初探
2、Android框架如何开发一个android应用如何开发一个widget目录Android框架6JNIJAVAC/汇编Android应用程序构成7ActivityServiceBroadcast ReceiverContent ProviderIntent8ActivityActivityA visual user interface通过view管理UI每一个有用户界面的应用至少包含一个activity一个应用可以有多个activity,其中一个作为main activity用于启动显示Activity通过startActivity或startActivityForResult启动另外的act
3、ivity9ActivityView通过View管理UIView绘制UI与处理UI eventView可通过xml描述定义,也可在代码中生成。setContentView(R.layout.main)Android建议将UI设计和逻辑分离android UI设计类似swing,通过布局(layout)组织UI组件10Activity生命周期Activity通过onCreate被创建当一个activity失去焦点,该activity将进入pause状态,系统在内存不足时会将其终止当一个activity被另一个activity覆盖,该activity将进入stop状态,系统在需要内存的时候会将其终
4、止1112IntentIntent(1)13类似于消息、事件通知Intent构成:action、category、dataActivity、Service、broadcast receiver之间的桥梁IntentactivityserviceBroadcast receiverIntent(2)两类intent:l显式:指定具体的目标组件处理startActivity(new Intent(ActivityLifecycle.this,AnotherActivity.class);l隐式:由系统接受并决定如何处理startActivity(new Intent(Intent.ACTION_D
5、IAL);在AndroidManifest.xml中定义activity、service、broadcast receiver接受的intent14Intent(3)Intent filter:action、category、data15frameworkComponent nameActionDataCategoryintentcomponentactivityserviceBroadcast receiver实例16action-DIALdata-tel:02038639592action-VIEWdata-http:/17ServiceService没有UI,启动之后一直运行于后台例子:
6、音乐播放器与应用程序的其他模块(例如activity)一同运行于主线程中通过startService或bindService创建Service通过stopService或stopSelf终止Service一般的,在activity中启动和终止service18Service生命周期onCreateonStartonDestroy19Context.stopService()Serivce.stopSelf()Context.startService()Context.bindService()20Content Provider何为Content provider什么是Content prov
7、ider?lContent Provider 是Android应用程序的四大组成部分之一l是android中的跨应用访问数据机制为何需要content provider?lAndroid中每一个app的资源是私有的lapp通过content provider和其他app共享私有数据21如何使用content provider通过content resolver访问Context.getContentResolver()22appContentResolverContentProvider AContentProvider BContentResolverContentResolverappap
8、p如何使用content provider(续)URI定位资源lcontent:/contacts/peoplelcontent:/call_log类似关系数据库的访问方式以二维数据表的格式暴露数据,缺省都包含_id字段23delete(Uriurl,String where,StringselectionArgs)insert(Uriurl,ContentValuesvalues)query(Uriuri,Stringprojection,Stringselection,StringselectionArgs,StringsortOrder)update(Uriuri,ContentValu
9、esvalues,Stringwhere,StringselectionArgs)定义自己的content provider在AndroidManifest.xml中声明一个provider创建MyProvider类,继承自ContentProvider。定义该provider提供的数据集的URI和字段名在MyProvider中实现ContentProvider的6个abstract method:query,insert,update,delete,getType,onCreate在其他app中使用ContentResolver通过URI访问MyProvider提供的数据24Android的
10、存储一般的,应用程序的数据(包括文件)都是私有的四种持久存储方式lPreferences类似properties,xml文件lFileslDatabaseSQLitelNetwork2526Broadcast ReceiverBroadcast receiver接收和处理android的广播消息Android的广播机制l系统事件例如变换时区、电量低等l应用程序发出广播消息:sendBroadCastl广播消息:intent27androidappBroadcast receiverSend Send broadcastbroadcast创建Broadcast Receiver实现一个Broad
11、castReceiverlpublic class MyAndroidReceiver extends BroadcastReceiverloverride onReceive(Context context,Intents Intents)注册BroadcastReceiverl在AndroidManifest.xml文件当中进行注册l在代码当中直接进行注册28 IntentsFilter filter=new IntentsFilter(NEW_BROADCAST);MyAndroidReceiver MyAndroidReceiver=new MyAndroidReceiver();re
12、gisterReceiver(MyAndroidReceiver,filter);Broadcast receiver生命周期Create ObjectonReceiveDestroyobject29Broadcast receiver对象在onReceive返回后被销毁onReceive中不适合处理异步过程。例如弹出对话框与用户交互,可使用消息栏替代。Android权限控制在AndroidManifest.xml中描述一个app的权限例如:30 权限举例(参考android.Manifest.permission)Manifest.permission)权限名称权限名称权限描述权限描述接收短
13、信android.permission.RECEIVE_SMS拨打电话android.permission.CALL_PHONE系统启动完毕通知android.permission.RECEIVE_BOOT_COMPLETED读取联系人信息android.permission.READ_CONTACTS修改联系人信息android.permission.WRITE_CONTACTS31Android的发展初探Android框架如何开发一个android应用如何开发一个widget目录工欲善其事,必先利其器Android SDKl最新版本:android-sdk-1.5_r2lAVD:andro
14、id virtual devicelADB:Android Debug BridgelHierarchyviewer:UI解析lIDE:eclipse+ADTlADT:Android Development Tools32Hello World33Android带UI应用的入口,类似mainUI界面设计的xml文件,android中采用一个xml描述UIAndroid project34Activity class自动生成的资源定义类存放应用使用的资源UI布局描述文件应用使用的静态字符串应用程序描述文件基本UI组件3536实例:实例:MyPhonebook37实例:短信未知号码提示实例:短信未
15、知号码提示38Android的发展初探Android框架如何开发一个android应用如何开发一个widget目录App widget组成39AppWidget Provider InfoAppWidget ProviderAppWidget ViewApp widgetApp Widget描述文件。定义widget大小、更新频率、接收的intent等App widget主体,java类,负责widget初始化,各种消息的响应等App widget界面描述文件。描述widget主界面的布局、包含的控件、显示效果等Configure Activity用于配置app widget的activity
16、App widget的UI设计40纵向屏幕横向屏幕CellsPixels4 x 1320 x 1003 x 3240 x 3002 x 2160 x 200CellsPixels4 x 1424 x 743 x 3318 x 2222 x 2212 x 148几个widget41android widget的局限功能l界面类是RemoteViews而不是View或ViewGroupl只支持少数布局和控件布局:LinearLayout,FrameLayout,RelativeLayout控件:button,TextView,ImageView,ImageButton,ProgressBar,AnalogClock,Chronometer(类似timer)android管理widget的策略:l只有当一个widget的所有实例都被delete了,该widget才会被disable。否则,被delete的widget实例仍然会在后台运行,只是界面没显示。4243