`
mondayw
  • 浏览: 144642 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

[译文]JavaFX TV平台上的一些开发贴士(上)

阅读更多



 原文:
Tips for Developing on the JavaFX TV Platform

作者:Larry HoffmanJim Holliday

出处:http://javafx.com/docs/articles/design_guidelines/index.jsp#50466819_30766

 

JavaFX TV应用

 

电视平台的功能特性会影响到你的设计在其之上运行的有效用户界面的方法,本文介绍了一些不同于桌面平台的电视平台设计方式,并提供了了一些设计有效的电视应用的技巧和指导。本文还就把为桌面平台编写的应用迁移到电视平台上这一过程提供了一些指引。

 

针对电视平台的应用

 

有一类应用是为电视平台设想并完全从头进行编写的,这类应用的目的是利用该平台独有的特性及优势。(虽然为桌面平台设想并编写的应用通常都可以运行在JavaFX TV配置上,正如把桌面应用迁移到TV一节中会讨论到的那样。)

 

电子节目菜单

 

TV平台上的典型的“应用杀手”是节目菜单(通常称为电子节目菜单,即electronic program guide,或者EPG),每个有线电视机顶盒或者卫星电视接收器都集成了一个EPG应用。

EPG的某些特点是其很多地方都用到了屏幕这一不变实物(通常是整个屏幕),并依赖于大量的下载自后端和本地存储的数据,它还涉及大量的用户交互。通过JavaFX技术,你可以设计出达到高水平视觉吸引力的EPG,并能够很容易地把它与其他应用和服务整合在一起。

Java技术非常适合于提供端到端的EPG解决方案,把用户的交互与运行在Java Enterprise Edition上的后端服务器连接起来。

 

社交网络化和体育广播

 

以电视为中心的应用的一个富有成果的领域有可能是把社交网络化和体育的现场直播整合到了一起,正在观看体育赛事的球迷被赋予了能够实时与其他球迷直接聊天的能力,或者是让他们能够有机会让自己组建的梦幻球队配合现场的比赛行动。

对于狂热的体育迷来说,这样绝妙的体育应用有可能是非常令人难以抗拒的。例如,在某个富有想象力的足球应用中,用户可以提前组装并保存他们自己的梦幻团队的名单。在观看足球赛季期间的比赛转播时,运动员在联赛中的所有比赛的实时统计数据可由电视运营商或者后端服务器中的服务运营商来组装,于是用户的梦幻球队的比赛表现就可以被实时地计算出来。在已经建立连接的用户之间可以有实时的聊天和评论。电视运营商、服务运营商或者设备制造商可以把这种交互应用作当作额外收费服务来进行收费。

需要再一次说明的是,Java技术是一种连接Java Enterprise Edition服务器来提供端到端解决方案的理想选择,JavaFX是用来为电视平台的用户界面编程的最佳选择。

 

信息类小工件

 

信息类小工件(informative widget)为强针对性的应用提供了另一个丰富的领域,这些小工件能够被开发来实时监控各种各样的事件:当地天气、航班信息、体育比分、新闻头条、股票价格以及拍卖清单等等,信息类小工件还可以被开发来通知正在看电视的用户接收邮件或者是SMS信息。

 

JavaFX TV profile编程

 

JavaFX TV方面(JavaFX TV profile)的编程非常类似桌面版的JavaFX平台的编程,不过,电视平台的特性会影响你设计用户界面的方式。本节介绍了JavaFX TV profile编程的一些指导方针和拇指规则,也说明了TV平台上固有的一些开发局限,并提供了一些处理这些局限的指引。

为了方便起见,JavaFX TV控件一节提供了说明所有的JavaFX TV控件的一个参考列表。

 

避免多个应用窗口

 

JavaFX TV这一profile不支持应用中的多个阶段(由JavaFXStage类来实现),在这一profile中,所有的阶段都是未修饰的(undecorated)。

 

使用大号字体

 

建议的电视应用的基本字体大小为24磅,字体大小必须是18磅或以上。

 

允许所有的电视显示模式

 

确保你的应用能够很好地呈现在各种电视屏幕上,确保其可以轻松地展现于不同的分辨率下:全高清(1920x1080像素)、准高清(1280x720像素)和(如果可能的话)标清(标准清晰度720x480像素)。

 

使用大尺寸控件

 

确保屏幕上的控件和其他对象对于一个坐在大约十英尺远的观众来说是清晰可见的。(对于更大的电视屏幕来说这个距离应更远。)因为相对于桌面屏幕来说,用户离电视机的屏幕会更远,电视机屏幕上的对象必须比标准的计算机屏幕上的对象要更大一些。一个好的指导准则是在把应用从桌面迁移到电视环境时,把线条的尺寸加大到三倍。

同样的,在绘制外形时不要使用细线条,特别是如果他们包含了曲线或者斜线的话,当使用只有单个像素宽度的线来绘制线条时,这些外形不能被很好的显示在电视机的屏幕上,你应该重写外形的strokeWidth属性,把其值设置为大于1.0

基于上述原因,TV profileJavaFX控件的大小被放大三倍,在XY维度上都是这样,这适用于各种用来绘制控件的外形或者线条。例如,控件中的一条线条在桌面profile上是一个像素的宽度,则在TV profile上是三个像素的宽度,这是通过CSS来自动实现的,不需要你这方面的任何额外工作。

 

溢出扫描

 

在排列你的应用时,小心避免显示器的边缘,确保应用所画的所有控件至少距离图像平面的边缘有5%的距离。许多电视机显示器采用溢出扫描(overscan来避免屏幕边缘的显示异常,某些电视机可以显示超出屏幕5%的整个图像画面,就采用溢出扫描的显示器来说,位于显示器边缘的控件会被切掉,使得事情进一步复杂化的是,溢出扫描的变化量取决于显示器。

溢出扫描的考虑使得MenuBar控件很难使用,因为菜单条通常位于屏幕的左上角,你可以使用MenuButton控件作为代替来提供菜单功能,该控件可以远离屏幕的边缘放置。需要注意的是,这一版本的MenuButton控件位于预览包中,预览包中的控件并未同公有控件一样已经进行了彻底的测试,而且在将来的版本中有可能发生改变,欲了解更多信息,请参阅公有与预览控件的对比一节。

 

控件间的用户导航

 

设计好用户使用电视遥控器在控件间的导航,在TV profile环境中,用户使用遥控器按钮来在屏幕上导航,既要把焦点从一个控件移到另一个控件上,又要与控件交互。控件之间的导航是通过左、右、上和下箭头按钮来完成的,选择则是使用OK按钮来完成,当某个控件获得焦点时,它的边缘会改变颜色。

JavaFX TV平台的这一最初版本中,存在着一些你必须知道的与屏幕导航相关的局限性,这些限制存在于皮肤的缺省设置方面,在未来的版本中可能会被设法解决,开发者可以提供实现了不同的屏幕导航的自定义皮肤。

某些控件还需要内部导航(例如,导航到菜单内部的菜单项),这种内部导航也是使用遥控器按钮来完成的,因为箭头按钮既用来在控件之间,也用来在控件内部导航,因此在排列你的应用的时候,你必须要了解一些设计上的限制。

除了一个之外,所有的控件都需要内部导航,导航限于单个维度——要么上/下,要么左/右,未使用的那个维度则是退出控件的出口路线。通过利用未使用的维度上的箭头键,用户可以退出一个控件,然后就可以使用箭头键来导航到邻近的控件上。例如,Slider控件只可以使用左和右箭头按钮来沿着轨道移动旋钮,但是用户可以使用上或者下箭头按钮来退出控件。以下这一表显示了需要内部导航的控件,以及他们的退出通道。

 

需要内部导航的控件及其退出通道

控件

状态

导航维度

退出通道

ListView(水平的)

Public

/

/

ListView(垂直的)

Public

/

/

Multi-line TextBox

Public

/

/

Slider

Public

/

/

ScrollView

Public

///

没有,详见ScrollView控件一节。

TreeView

Public

/

/

 

在布置用户界面的时候,要了解控件之间可用的退出通道,以及这些通道影响应用中的导航流程的方式。例如,你不应该把Slider或者水平的ListView控件摆在一排控件中,因为退出通道是上或者下箭头按钮,因此在水平方向上直接相邻的控件就不能被直接访问到。

 

使用ScrollView控件

 

ScrollView控件是个特例,因为控件内的内部导航在两个维度上都可用,没有留下退出通道,出于该原因,ScrollView控件最好只用在你能够用一个大的ScrollView控件来填满整个屏幕的情况下。这方面的一个例子是许可协议,用户从头部滚动到尾部,然后在底部点击OK或者Cancel按钮,用户不可能使用遥控器上的箭头键来退出ScrollViewOK或者Cancel按钮会驳回这一请求。

需要注意的是,Button或者其他控件可以内嵌在ScrollView控件之内,ScrollView控件内部的控件之间的导航的工作方式与其在ScrollView控件之外的工作方式一样——通过按下箭头按钮来从一个控件转移到另一个控件上。ScrollView控件会自动地滚动到获得焦点的控件上,不存在内置的到ScrollView控件内部的控件的导航支持,一旦ScrollView获得焦点,应用逻辑必须改变焦点到ScrollView内部的某个控件上。

 

嵌套

 

尽管在标准的JavaFX平台上存在这样的情况,即控件在理论上是能够彼此互相嵌套的,不过,除了ScrollView控件内有限的嵌套支持之外,嵌套在TV profile方面并未得到明确的支持,因此,你不应该期待来自缺省遍历引擎的预先定义的行为。

你可以提供自定义的遍历处理,把其作为应用的一部分,还要注意的是,不可越过的控件(不能获取焦点的控件)是不能被嵌套的,因为遍历引擎不能处理他们。

 

工具提示

 

避免使用ToolTip控件,虽然在理论上这一控件在TV profile中是完全可使用的,但实际上它并不能被用到,工具提示只有当指针箭头停留在没有获得焦点的控件之上时才起作用,这只有在有鼠标一类的箭头时才是可能的,因此在使用远程遥控器导航时它不会起到什么作用。

 

虚拟键盘

 

设计使用虚拟键盘来进行文本输入,JavaFX TV profile提供了一个虚拟键盘,依靠这一虚拟键盘,用户可以使用电视机的遥控器来把文本输入到文本框中,当用户导航到一个文本框上并按下OK按钮时,虚拟键盘就出现了,虚拟键盘如下图所展示的那样,可以注意到,键盘只提供了英文的录入版面。

 



JavaFX TV的虚拟键盘

 

把桌面应用迁移到TV

 

 

就为什么最初针对桌面的JavaFX应用不能够在TV profile上编译并运行这个问题来说,不存在什么技术上的原因。不过,能够这样做的应用必须是只用到公共profileAPI,并且是必须在本文之前描述的电视环境参数之内工作才行。

 

JavaFX的通用profile API包括了应用于所有屏幕的类:桌面显示器、手机和电视机,一方面,其他的JavaFX API包含有利用了只适用于其中一种屏幕,例如桌面环境的特定功能的类。以下这种情况是个例子,对于Swing API和基于AppletAPI来说,如果你想编写一个能够运行在所有的屏幕上的应用的话,那么无论何时在实践的时候,你应该只使用通用profile API

 

在把桌面应用迁移到TV profile上运行之前,你应该考虑几方面的因素。首先,你需要考虑用户界面,在使用TV profle来构建时,应用会自动以较大的尺寸来显示GUI控件和字体,以便与电视机相适应,在迁移桌面应用的时候,你不需要去处理控件和字体的大小。再者,你必须考虑是否要修改应用来处理这一类事情,比如避免多应用窗口、把控件摆在远离屏幕边缘的地方、用户遍历控件,以及在之前的Java FX TV profile编程一节中涉及的所有主题等。

 

小工件风格的应用

 

一般来说,最适宜迁移的桌面应用是专用的小工件风格的应用,这些应用不需要很多的文本输入或者用户交互,一个小工件就是一个轻量级的应用,通常不需要大块的屏幕显示面积,可以快速地调用它然后关闭或是最小化,小工件通常都是可支持数据的,其可能依赖于经由互联网的数据推送(data feed),或者是依赖于内嵌在广播流中的元数据。

小工件风格的应用的例子包括股票行情、天气小工具、新闻头条等等,这一类应用同样适用于三种JavaFX屏幕:桌面、手机和电视,JavaFX 1.3版本的示例中包含了几个JavaFX 的小工件风格的应用。

[译文]JavaFX TV平台上的一些开发贴士(下)

 

 

 

      

  • 大小: 79.4 KB
分享到:
评论

相关推荐

    javafx使用指南-目录版.pdf

    JavaFX 是一个基于 Java 语言的软件平台,用于开发桌面应用程序、移动应用程序和网络应用程序。它提供了一个统一的编程模型,可以跨平台运行,具有高清晰度的图形用户界面和多媒体支持。 JavaFX 的主要特点包括: ...

    javafx2.0用户界面开发

    5. JavaFX 平台给开发者提供了一个开发框架和一个运行环境,以便创建支持 java 的跨平台企业和商务应用。 JavaFX 的历史可以追溯到 2007 年 JavaOne 大会,Sun 公司介绍了 Javafx 平台,以便帮助内容开发者和应用...

    javaFX Demo 模板案例

    JavaFX 是一个用于构建桌面、移动和嵌入式设备上富客户端应用的开源图形用户界面(GUI)工具包。它是Java平台的一部分,提供了一系列高级特性,包括2D和3D图形处理、媒体支持、CSS样式以及强大的数据绑定机制。本...

    javaFx开发的炫酷浏览器

    总的来说,这个“javaFx开发的炫酷浏览器”项目是一个很好的学习平台,对于学习JavaFX的开发者来说,它不仅展示了JavaFX在开发复杂应用时的强大功能,也为实践和提高GUI编程技巧提供了实际案例。无论是毕业设计还是...

    JavaFX2开发教程

    JavaFX2.0是JavaFX的重大更新,与之前的1.3版本存在许多不兼容性,因此,如果要涉足JavaFX开发,建议直接采用2.0版本。JavaFX2.0引入了许多新特性,提升了用户体验和开发者的工作效率。 首先,安装JavaFX2.0 SDK是...

    javafx开发用工具

    JavaFX是一种用于构建桌面、移动和嵌入式设备上的富客户端应用程序的Java库。它提供了丰富的用户界面组件和强大的图形功能,使得开发者可以创建出美观且互动性强的应用程序。JavaFX是Oracle JDK 8的一部分,但自Java...

    JavaFX2.0基础教程.pdf

    Oracle宣布停止对JavaFX脚本语言的支持,并将JavaFX的部分API集成到Java标准库中,使得JavaFX成为开发跨平台富客户端应用的理想选择。 - **JavaFX2.0新特性**: - **API整合**:将原有的JavaFX脚本API集成到了Java...

    JavaFx开发Windows画图板工具

    JavaFX是一种强大的、基于Java的富客户端应用开发框架,它为创建桌面、移动和Web应用程序提供了丰富的图形用户界面(GUI)工具集。本项目“JavaFx开发Windows画图板工具”旨在模仿Windows操作系统内置的画图应用,为...

    JavaFx开发教程

    ### JavaFX开发教程知识点解析 #### 一、JavaFX Script编程语言简介 - **定义**:JavaFX Script 是一种专为简化图形用户界面 (GUI) 应用程序开发而设计的新编程语言。 - **特点**: - **声明式语法**:支持简洁...

    JavaFX 官方教程:RIA 应用开发

    JavaFX 官方教程:RIA 应用开发

    javafx实现好看的界面

    7. **跨平台兼容性**:JavaFX应用程序可以在多种操作系统上运行,包括Windows、Mac OS X和Linux,因为它们都是基于Java平台的。 8. **JavaFX Scene Builder**:这是一个可视化工具,可以帮助开发者快速构建和布局...

    JavaFX+官方教程:RIA+应用开发

    为了实现跨平台兼容性,JavaFX使用JavaFX runtime,该runtime可以在Windows、Mac OS X、Linux等多个操作系统上运行。值得注意的是,自从Java 11开始,JavaFX已经从JDK中移除,需要单独下载和管理。开发者可以选择...

    Eclipse 4 与 JavaFx开发教程

    e(fx)clipse项目还提供了针对开发环境的特定配置,确保开发者可以在Eclipse运行时平台上进行开发。教程强调,开发者需要设置好目标平台,以确保开发过程中的稳定性和兼容性。e4运行时被提供为一个自我包含的p2仓库,...

    RIA开发权威指南:基于JavaFX 完整版

    书中还提到了JavaFX产品的发布历程,从2007年的JavaFX系列产品发布,到2008年12月发布的基于Java语言的JavaFX 1.0平台,再到2009年2月发布的JavaFX 1.1。Sun公司对JavaFX产品家族的前景非常看好,期待它能够在多种...

    JavaFX官方文档

    JavaFX Script与各种主流集成开发环境(IDE)兼容,特别是NetBeans IDE作为Java编程语言的参考实现IDE,为JavaFX开发提供了强大的支持。 5. **适应各种规模和复杂度的GUI:** JavaFX Script能够支持任何大小和...

    JavaFx 入门文档,JavaFx实例

    它是Oracle在Java SE和Java EE平台上的官方图形用户界面(GUI)工具包,为开发者提供了一种创建美观、交互丰富的应用程序的方式。本文将深入探讨JavaFX的基础知识,包括其核心概念、开发环境的搭建、基本组件的使用...

    JavaFX官方教程(中文版)

    4. **跨平台兼容**:作为Java的一部分,JavaFX可以运行在任何支持Java的平台上,包括Windows、MacOS、Linux以及各种移动和嵌入式设备。 5. **FXML**:FXML是JavaFX的一种声明式语言,用于构建用户界面。它将界面...

    javafx 的一个简单演示demo

    javafx 的一个简单演示demo

    javafx的一个完整demo

    JavaFX支持跨平台运行,可以在Windows、macOS、Linux以及各种嵌入式设备上运行。 2. **JavaFX的MVC设计模式**:在点菜系统中,可能会涉及到模型(Model)、视图(View)和控制器(Controller)的分离。模型负责处理...

    JavaFX开发的示例代码

    JavaFX开发的示例代码

Global site tag (gtag.js) - Google Analytics