毕业论文
计算机论文
经济论文
生物论文
数学论文
物理论文
机械论文
新闻传播论文
音乐舞蹈论文
法学论文
文学论文
材料科学
英语论文
日语论文
化学论文
自动化
管理论文
艺术论文
会计论文
土木工程
电子通信
食品科学
教学论文
医学论文
体育论文
论文下载
研究现状
任务书
开题报告
外文文献翻译
文献综述
范文
Android平台手机图片浏览软件的开发实现(7)
举个例子,当用户触摸屏幕上的按钮时,应用程序的UI线程把触摸事件分发给widget,widget先把自己置为按下状态,再发送一个显示区域已失效(invalidate)的请求到事件队列中。UI线程从队列中取出此请求,并通知widget重绘自己。
如果应用程序在与用户交互的同时需要执行繁重的任务,单线程模式可能会导致运行性能很低下,除非应用程序的执行时机刚好很合适。如果UI线程需要处理每一件事情,那些耗时很长的操作,诸如访问网络或查询数据库等,将会阻塞整个UI(线程)。一旦线程被阻塞,所有事件都不能被分发,包括屏幕绘图事件。从用户的角度看来,应用程序看上去像是挂起了。更糟糕的是,如果UI线程被阻塞超过一定时间(目前大约是5秒钟),用户就会被提示“应用程序没有响应”(ANR)对话框。如果引起用户不满,他可能就会决定退出并删除这个应用程序。
此外,Andoid的UI组件包并不是线程安全的。因此不允许从工作线程中操作UI,只能从UI线程中操作用户界面。于是,Andoid的单线程模式必须遵守两个规则:
1. 不要阻塞UI线程。
2. 不要在UI线程之外访问Andoid的UI组件包。
2.7 3D图库分析
Gallery3D的界面生成和普通的应用程序不一样。普通程序一般一个界面就是一个activity,布局用xml或代码都可以实现,界面切换是activity的切换方式;而Gallery3D没有用android的UI系统,而是用opengl画出来的,即界面是在同一个activity的,如主界面,缩略图界面,单张图片查看界面,标记界面等都属于同一个activity。
在应用程序中有三个非常重要的线程存在:主线程(Gallery随activity的生命周期启动销毁)、MediaFeed初始化线程(进入程序时只运行一次,用于加载相册初始信息)、MediaFeed监听线程(一直在跑,监听相册和相片的变更),其中MediaFeed初始化线程的工作是:调用MediaFeed 的loadMediaSets加载相册。MediaFeed监听线程MediaFeed.run()的工作是:根据“内容变化监听器“返回的媒体变动消息 (增删改),持续不断的更新 MediaFeed中的相册和相片变量。
Gallery3D中定义了很多控件它们都继承自com.cooliris.media.Layer,分别代表不同场景和界面下的UI元素,具体有如下控件。
com.cooliris.media.GridLayer : 网格所略图显示和单个图片显示
com.cooliris.media.BackgroundLayer : 背景
com.cooliris.media.HudLayer : 相册显示
com.cooliris.media.ImageButton : 图片按钮(主要指进入Gallery后右上角的那个控件)
com.cooliris.media.TimeBar : 进入Gallery后下方可拖动的悬浮控件
com.cooliris.media.MenuBar : 点击图片时弹出的菜单按钮
com.cooliris.media.PopupMenu : 点击菜单按钮后弹出来的菜单项
com.cooliris.media.PathBarLayer : 如今Gallery后左上方显示图片路径的空间
Gallery3D的渲染从 RenderView 开始。RenderView 从 GLSurfaceView 继承而来,采用了通知型绘制模式,即通过调用requestRender 通知 RenderView 重绘屏幕。RenderView 将所有需要绘制的对象都保存一个 Lists中,Lists 包含了5个ArrayList,其定义如下所示:
public final ArrayList<Layer> updateList = newArrayList<Layer>();
public final ArrayList<Layer> opaqueList = newArrayList<Layer>();
public final ArrayList<Layer> blendedList = newArrayList<Layer>();
共18页:
上一页
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
下一页
上一篇:
超市库存系统的国内外研究现状和发展趋势
下一篇:
JSP+mysql药品销售及管理系统设计与实现+用例图
Android手机考勤平台的设计与实现
基于android的环境信息管理系统设计
Python+mysql宠物领养平台的设计与实现
Android全国天气移动终端应用程序设计研究
基于MOODLE平台的在线交互式学习设计
Android员工请假系统设计
Android手机考勤系统设计
基于Joomla平台的计算机学院网站设计与开发
从政策角度谈黑龙江對俄...
酵母菌发酵生产天然香料...
浅谈高校行政管理人员的...
压疮高危人群的标准化中...
浅论职工思想政治工作茬...
AES算法GPU协处理下分组加...
上海居民的社会参与研究
STC89C52单片机NRF24L01的无线病房呼叫系统设计
提高教育质量,构建大學生...