安卓TV开发(四) 实现主流智能TV视频播放器UI
- 格式:doc
- 大小:107.00 KB
- 文档页数:9
文档编号:基于Android的多功能视频播放器系统设计说明书目录1引言 (4)1.1目的 (4)1.2适用围 (4)2系统架构 (5)2.1硬件架构 (5)2.2软件架构 (9)3完整功能结构图 (11)4系统数据库设计 (11)4.1 E-R图设计 (11)4.2字段设计 (11)4.2.1本地视频文件记录表 (11)4.2.2历史播放文件表 (12)4.2.3 收藏文件表 (12)5视频播放器部署图 (13)6 系统需求 (13)6.1系统界面需求 (13)6.2系统性能需求 (13)6.1系统开发环境需求 (14)7视频播放器流程图 (14)1引言1.1目的本文档是多通道同步数字记录仪升级换代项目的系统设计文档。
从系统的高层角度对系统的硬件架构、软件架构、网络架构、系统部署、系统运行方式进行设计,为下一步各个模块的详细设计提供系统级的视图。
1.2适用围本文用于描述多通道同步数字记录仪升级换代项目的系统设计,给出系统的主要架构与配置项,对相关运行、数据、用户接口、容错与复用和重要模块进行分析,作为项目后续详细设计与开发实现的依据。
本说明书的阅读对象为:跟我们同龄的有一定基础的大学生,以及相关的项目开发人员等等。
.. .. ..2系统架构2.1硬件架构2.1.1 JDK安装JDK是Java语言的原创者推出的原始开发环境。
采用JDK开发Java程序能够很快理解程序中各部分代码之间的关系,有利于理解Java面向对象的设计思想。
在Windows上安装JDK非常简单,访问Oracle官方下载页面,网址为www.oracle./technetwork/indexes/downloads/index.html,也可从其他下载。
下载完成后,双击运行JDK安装程序并根据提示设定环境变量。
2.1.2 Android SDK安装以及系统设置下载好SDK包后,将zip文件解压缩至合适的地方。
在下文中,默认SDK安装目录为$SDK_ROOT 。
视频播放器的程序设计及代码示例一、介绍视频播放器是一种常用的应用程序,用于播放电影、电视剧、MV等各种类型的视频文件。
它可以提供良好的用户体验,具备快进、快退、调节音量、全屏播放等功能。
在本文中,将介绍视频播放器的程序设计原理,并给出一些示例代码来帮助读者更好地理解和实践。
二、程序设计原理1. 用户界面设计:视频播放器的用户界面需要简洁明了,并提供直观的操作按钮,如播放、暂停、停止、快进/快退、音量调节等。
可以使用图标、按钮、滑块等控件来实现,并合理布局,以便用户轻松地操作和控制播放器。
2. 视频解码与显示:视频播放器需要将视频文件进行解码,并实时将解码后的图像进行显示。
常见的视频解码算法有H.264、MPEG-2等。
可以使用像素缓冲区来存储解码后的图像数据,并使用界面库或图形库将图像数据显示在屏幕上。
3. 音频解码与播放:视频文件中通常包含音频轨道,视频播放器需要将音频数据解码并实时播放。
音频解码可以使用MP3、AAC等常见的音频解码算法。
播放音频可以使用操作系统提供的音频播放接口,如Windows下的DirectSound、Linux下的ALSA等。
4. 文件格式支持:视频播放器需要支持常见的视频文件格式,如MP4、AVI、MKV等。
这涉及到对不同格式文件的解析和支持,需要使用相应的解析库或者开源框架。
5. 视频控制功能:视频播放器除了基本的播放、暂停、停止功能外,还应该提供快进/快退、跳转指定位置、循环播放、调节音量和亮度等高级控制功能。
通过对用户操作的监测,可以实现这些功能,并更新界面以反映当前的播放状态。
三、代码示例以下是一个基于Java编写的简单视频播放器的代码示例,用于展示播放视频文件和基本的控制功能:```javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.File;import ponent.EmbeddedMediaPlayerComponent;import uk.co.caprica.vlcj.player.embedded.EmbeddedMediaPlayer;public class SimpleVideoPlayer {private JFrame frame;private JPanel playerPanel;private JButton playButton;private JButton pauseButton;private JButton stopButton;private EmbeddedMediaPlayer mediaPlayer;public SimpleVideoPlayer() {frame = new JFrame("Simple Video Player");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(800, 600);playerPanel = new JPanel();frame.getContentPane().add(playerPanel, BorderLayout.CENTER);playButton = new JButton("Play");pauseButton = new JButton("Pause");stopButton = new JButton("Stop");playerPanel.add(playButton);playerPanel.add(pauseButton);playerPanel.add(stopButton);mediaPlayer = newEmbeddedMediaPlayerComponent().getMediaPlayer();playButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {mediaPlayer.play();}});pauseButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {mediaPlayer.pause();}});stopButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {mediaPlayer.stop();}});frame.setVisible(true);}public static void main(String[] args) {SwingUtilities.invokeLater(new Runnable() {public void run() {SimpleVideoPlayer player = new SimpleVideoPlayer();}});}}```这段代码使用了Java语言,基于VLCJ (VLC Java Bindings)库来实现视频播放器。
基于Android的视频播放器的设计与实现中文摘要如今,随着基于Android操作系统的智能手机的广泛应用,视频播放器已成为智能手机的一个必不可少的程序,广大用户迫切需要一个贴近用户、方便用户、个性化的视频播放器。
因此,设计一个基于android手机的多功能播放器,具有重要的实际意义。
本次毕业设计主要使用JDK + Eclipse + Android-SDK-Windows工具进行开发,使用的编程语言是Java语言。
该程序主要由4个不同Activity来实现,每个Activity实现相应的功能模块,能够有效满足Android手机用户在视频播放中的常见需求。
本论文详细介绍了播放器程序的设计思路、设计方案、系统结构和项目工程结构,对系统的可行性与需求性进行了详细的分析,阐述了系统各个模块功能的设计与实现。
对程序主要的Activity都进行了详细的介绍和分析,包括对其使用的布局文件的具体介绍,以及各个控件的作用。
在最后进行了程序测试,对每一个实现的模块功能都做了测试,并且记录了大量截图用来展示测试结果,以观察程序应有的功能是否正常运行,以及发现程序中可能存在的问题。
所开发的程序界面比较友好,操作相对容易,达到设计要求。
关键词:安卓;视频播放;Activity;MediaplayerThe Design and Implementation of Video Player Based on AndroidABSTRACTNow, with the wide application of smart phone based on the Android operating system, video player has become the essential application of smart phone. Most of consumers urgently require a personalized video player which is close to user and facilitate user. Therefore, the design of a multifunctional player based on android mobile phones has an important practical significance.The project design is developed by using JDK, Eclipse, and Android-SDK-Windows tools. The programming language is Java. The program consists of four different Activities and each Activity achieves the corresponding functional modules which can effectively satisfy the common requirements for playing video on Android mobile phones.This paper introduced the design ideas, design scheme, system architecture and project engineering structures of video player. The feasibility and requirements of system were analyzed in detail. The system function and each module were explained. The main Activity of the program are described and analyzed in detail including the using layout file, as well as the role of each control. Finally, I made the test for the program including the functions of each implemented modules. In order to observe whether the program should function properly and find the problems that may exist in the program, many screenshots were saved to demonstrate the test results. The developed program has a friendly interface and can be operated relatively easy, which has achieved the design requirement.KEY WORDS: Android; Video Play; Activity; Mediaplayer目录中文摘要 (I)ABSTRACT (II)目录 (III)第一章绪论 (1)1.1课题的来源及意义 (1)1.2 ANDROID发展现状及前景 (1)1.3项目的主要工作和解决的问题 (2)1.4系统设计的目标及基本思路 (3)1.5论文组织结构 (3)第二章 ANDROID视频播放器相关技术介绍 (4)2.1 ANDROID介绍 (4)2.2 ANDROID开发平台及相关技术 (5)2.2.1 ANDROID-WINDOWS开发环境 (5)2.2.2 MEDIAPLAYER视频技术 (6)2.2.3 SURFACE、SURFACEVIEW、SURFACEHOLDER三者之间的关系 (9)第三章系统分析及系统结构设计与实现 (11)3.1系统分析 (11)3.1.1系统可行性分析 (11)3.1.2 系统需求分析 (11)3.2系统结构设计 (12)第四章测试 (16)4.1测试环境和条件 (16)4.2测试 (16)4.3测试结果分析 (24)结论 (25)参考文献 (26)附录 (28)第一章绪论1.1课题的来源及意义在这个信息化的时代,IT业已经成为世界发展的主流,我们对信息技术的依赖远远超过了对我们自己的依赖,计算机和手机已经成为我们日常生活中不可缺少的获得信息的渠道。
基于Android的网络视频播放器系统设计与实现引言随着互联网、移动互联网和智能手机的普及,网络视频的需求迅速增长。
用户希望通过移动设备随时随地观看视频内容,这使手机应用程序已经成为网络视频的主要方式之一。
为了提供良好的用户体验,网络视频播放器开发成为热门的领域之一。
本文提出了一种基于Android的网络视频播放器系统,重点介绍了其设计与实现。
系统设计网络视频播放器主要由两大部分组成,即客户端和服务器。
客户端包括用户界面、视频播放器和网络传输模块,服务器包括视频存储和视频传输模块。
整个系统的设计基于MVC(Model-View-Controller)模式,其中Model代表数据模型,View代表用户界面,Controller代表控制器。
客户端用户界面:用户界面是整个网络视频播放器系统的入口。
该系统的用户界面采用Android官方推荐的Material Design设计语言,采用响应式布局,可以适配不同的屏幕大小和分辨率。
用户可以在该界面搜索、播放和下载视频。
此外,用户可以进行评论、点赞、收藏等交互操作,这些数据通过网络传输模块发送到服务器。
视频播放器:视频播放器是整个系统的核心组件。
播放器采用Android系统自带的MediaPlayer类,可以播放多种格式的视频,包括MP4、AVI、MKV和FLV等。
在播放时,播放器会先从服务器下载视频的流媒体数据,然后通过解码和渲染器进行播放。
播放器的界面有全屏和非全屏两种模式,用户可以通过手势和按钮进行切换。
此外,播放器还支持视频加速、字幕选择和画面效果调整等功能。
网络传输模块:网络传输模块主要负责与服务器进行通信。
该模块采用HTTP协议进行数据交换,包括视频流媒体数据、用户交互数据和系统消息等。
客户端与服务器之间的通信采用SSL/TLS加密,以保证通信安全。
此外,为了提高视频传输的效率,网络传输模块采用了分段下载和本地缓存策略。
服务器视频存储:视频存储模块主要负责对视频进行持久化保存和管理。
智能TV应用程序设计的技巧总结智能电视是近年来崛起的一种新型电视媒体,随着互联网技术和智能终端的快速发展,智能电视应用程序的开发也得到了越来越广泛的关注和推广。
智能电视应用程序可以实现多种功能,比如视频点播、音乐播放、游戏娱乐等,为用户的娱乐生活带来了更多的选择和便利。
在智能电视应用程序的设计和开发中,需要掌握一定的技巧和方法,下面就对一些常见的技巧进行总结和探讨。
一、UI设计UI设计是智能电视应用程序开发的重要一环,优秀的UI设计可以提高用户体验和应用使用效率。
在UI设计中,需要注意以下几个方面:1. 界面简洁明了:尽量减小屏幕占用空间,保持核心区域简洁明了,使用户能够快速找到自己想要的功能。
2. 颜色配色合理:保证色彩搭配和平衡性,不能因为堆砌过多颜色而使用户感到混乱和误导。
3. 图标设计规范:图标的设计要符合视觉规范,体现品牌特色和应用的功能。
二、视频点播视频点播是智能电视应用程序中常见的一种功能,对于视频点播的设计和开发,需要注意以下几个方面:1. 视频格式支持:不同电视厂商对于智能电视的操作系统及硬件都可能会有一些不同的设定,所以在视频格式支持上需要考虑兼容性问题。
2. 画质优化:尽可能提高视频画质,保证用户在观看视频时的视觉体验。
3. 交互体验优化:在视频播放时,可以通过增加互动节目和观众评论功能,增强用户的参与感和社交互动性。
三、音乐播放音乐播放是智能电视应用程序中的关键功能之一,对于音乐播放的设计和开发,需要注意以下几个方面:1. 音质优化:尽可能提高音质,保证音质清晰、稳定。
2. 音乐版权问题:需要与合法的版权服务商合作,保证用户使用的音乐可靠。
3. 交互设计:音乐播放用户体验与视频类似,在听歌的过程中可以增加歌词显示、歌曲信息查询等附加功能。
四、游戏娱乐游戏娱乐是智能电视应用程序中非常重要的一个方面,可以丰富用户的娱乐体验和社交互动性。
对于游戏娱乐的设计和开发,需要注意以下几个方面:1. 游戏玩法设计:需要有趣、耐玩、易懂的游戏规则和操作方式,保证玩家能够快速进入游戏状态。
Android多功能视频播放器的设计与实现
程颖;姚晔;张家珲
【期刊名称】《信息通信》
【年(卷),期】2016(0)6
【摘要】近年来,因为智能终端的方便性与易携带性,更多的人热衷于通过手机等移动终端来随时随地的观看视频。
Android应用市场上的视频播放软件功能各异,但绝大多数是用于播放本地视频。
文章依赖于Vitamio框架设计与实现一个集本地视频播放、网络视频播放、网络视频直播为一体的Android多功能视频播放器。
【总页数】2页(P104-105)
【作者】程颖;姚晔;张家珲
【作者单位】杭州电子科技大学计算机学院,浙江杭州310018;杭州电子科技大学计算机学院,浙江杭州310018;杭州电子科技大学计算机学院,浙江杭州310018
【正文语种】中文
【中图分类】TP311.52
【相关文献】
1.基于Android的AVS2视频播放器的设计与实现 [J], 闫闵;胡鑫;李元琪;冉睿;何糠;李恒
2.基于Android的多功能日程表的设计与实现 [J], 徐亦丹
3.基于Android的高清视频播放器的设计与实现 [J], 白冰;陈绍茹
4.基于Android的多功能日程表设计与实现 [J], 庄云晓;张锦邦;朱浩文;荀浩坚;庄龙威;赖嘉杰;张家豪
5.基于Android的多功能电子书阅读器的设计与实现 [J], 余丽娜
因版权原因,仅展示原文概要,查看原文内容请购买。
基于Android平台的视频播放器设计文献综述随着移动互联网时代的到来,智能手机越来越普及,视频业务也开始日益火热。
而Android系统成为了全球最受欢迎的智能手机操作系统。
因此,基于Android平台的视频播放器设计非常重要。
本文从软件设计、播放器功能、用户体验等方面,对一部分基于Android平台的视频播放器设计进行了综述。
1. 软件设计1.1 MX播放器MX播放器是一款在Android平台上广受欢迎的视频播放器。
它的特点在于对各种视频格式的支持非常好,而且在视频解码方面表现也十分出色。
该播放器的UI设计简单,主要彩色以及黑色基调,播放器面板以及操作按钮的设计很直观。
在控制面板上,MX播放器提供了功能齐全的播放控制按钮,使用方便。
1.2 暴风影音暴风影音同样是一款广受欢迎的视频播放器,其主要特点在于清晰度方面的表现。
该播放器在视频播放方面表现非常出色,同时提供了多种功能,包括本地播放、在线播放以及直播等。
该软件的UI设计也是非常简洁明了,播放器面板和操作按钮都设计得十分直观。
2. 播放器功能2.1 视频格式支持视频格式在影响播放器能否成功播放视频的同时,也影响了视频的质量。
大家希望的是一个能够流畅清晰播放各类视频格式的播放器。
因此,在选择播放器时,应该考虑到不同格式的兼容性。
2.2 解码能力视频解码对于视频播放器来说尤为重要。
如果解码能力不够,就会出现卡顿、花屏等影响观看体验的情况。
因此,能够提供优秀解码能力的播放器,更容易受到用户的喜欢。
2.3 文件管理文件管理功能在视频播放器中也是非常重要的。
许多高清视频的文件比较大,需要对其进行管理,以免占据过多的手机内存空间。
因此,具备文件分类、命名、删除等基本功能的播放器会受到用户的欢迎。
3. 用户体验3.1 操作容易性用户对播放器的操作要求很高,因此,播放器的操作按钮应该简洁易懂,而且响应迅速。
在手机屏幕尺寸非常小的情况下,每个空间的设计都不能浪费,需要精心设计才能达到最大的使用效果。
安卓TV开发(四)实现主流智能TV视频播放器UI在FocusView中需要添加一个FocusItemModle 用于填充父布局,这个FocusItemModle 类似grideView中itemview一样,我们可以这么理解,现在我们就定义一个FocusItemModle 类,代码如下:[java] view plain copy print?在CODE上查看代码片派生到我的代码片public class FocusItemModle {private View mFocusView = null;/*** 起点行数*/private int mRow = 0;/*** view占据行数*/private int mRowSpan = 1;/*** 起点列数*/private int mCol = 0;/*** View占据列数*/private int mColSpan = 1;/*** @param v* @param row* @param col*/public FocusItemModle(View v, int row, int col) {this(v, row, 1, col, 1);}/*** @param v* @param row* @param rowspan* @param col* @param colspan*/public FocusItemModle(View v, int row, int rowspan, int col, int colspan) {mFocusView = v;setPosition(row, col);if (rowspan < 1)throw new IllegalArgumentException("rowspan < 1");mRowSpan = rowspan;if (colspan < 1)throw new IllegalArgumentException("colspan < 1");mColSpan = colspan;}public View getMetroView() {return mFocusView;}public int getRow() {return mRow;}public int getRowSpan() {return mRowSpan;}public int getCol() {return mCol;}public int getColSpan() {return mColSpan;}public void setPosition(int row, int col) {if (row < 0)throw new IllegalArgumentException("row < 0");mRow = row;if (col < 0)throw new IllegalArgumentException("col < 0");mCol = col;}此item主要控制focusView显示在第几排第几列,用于返回一个itemView显示在focusView中。
再写好这些主要view之前,便于以后项目的扩展我们就专门写一个javaBean---,TvModle,也为了迎合mvc设计模式,用来将服务器数据映射到view上。
[java] view plain copy print?在CODE上查看代码片派生到我的代码片public class TvModle {/*** 图片资源*/private int image;/*** 标题*/private String name;/*** url*/private String url;/*** 简介或信息*/private String info;/*** 日期*/private String date;/*** 包括子节目*/private List childs;public TvModle() {super();}public TvModle(int image, String name) {super();this.image = image; = name;}public int getImage() {return image;}public void setImage(int image) { this.image = image;}public String getName() {return name;}public void setName(String name) { = name;}public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}public String getInfo() {return info;}public void setInfo(String info) { = info;}public String getDate() {return date;}public void setDate(String date) { this.date = date;}public List getChilds() {return childs;}public void setChilds(List childs) {this.childs = childs;}}等写好了view和中间层,接下来我们就开始写要显示该UI的activty,这里我们主要是New 一个focusView,通过不断往里面加入一个个不同的itemView。
activty:[java] view plain copy print?在CODE上查看代码片派生到我的代码片@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.mian_tv_ui);FocusView view = (FocusView) findViewById(R.id.focus_ui);view.setBackgroundColor(Color.WHITE);view.setGap(5);view.setVisibleItems(6, 5);view.setOrientation(OrientationType.Horizontal);view.setAnimation(R.anim.scale_small, R.anim.scale_big);/*view.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(FocusView metroView, View view, int col, int row,ng id) {Toast.makeText(getApplicationContext(),col+"", 1).show();}});*/getData();// 添加自定义VIEWview.addFocusItem(getTvView(mTvLists.get(0).getName(),mTvLists.get(0).getImage(),0, 3, 0, 2));view.addFocusItem(getTvView(mTvLists.get(1).getName(),mTvLists.get(1).getImage(),3, 3, 0, 2));view.addFocusItem(getTvView(mTvLists.get(2).getName(),mTvLists.get(2).getImage(),0, 2, 2, 1));view.addFocusItem(getTvView(mTvLists.get(3).getName(),mTvLists.get(3).getImage(),0, 2, 3, 1));view.addFocusItem(getTvView(mTvLists.get(4).getName(),mTvLists.get(4).getImage(),0, 2, 4 ,1));view.addFocusItem(getTvView(mTvLists.get(5).getName(),mTvLists.get(5).getImage(),2, 2, 2, 1));view.addFocusItem(getTvView(mTvLists.get(6).getName(),mTvLists.get(6).getImage(),2, 2, 3, 1));view.addFocusItem(getTvView(mTvLists.get(7).getName(),mTvLists.get(7).getImage(),2, 2, 4 ,1));view.addFocusItem(getTvView(mTvLists.get(8).getName(),mTvLists.get(8).getImage(),4, 2, 2, 1));view.addFocusItem(getTvView(mTvLists.get(9).getName(),mTvLists.get(9).getImage(),4, 2, 3, 1));view.addFocusItem(getTvView(mTvLists.get(10).getName(),mTvLists.get(10).getImage(),4, 2, 4 ,1));//添加默认logoview.addFocusItem(getDefView(0, 2, 5, 1));view.addFocusItem(getDefView(0, 2, 6, 1));view.addFocusItem(getDefView(0, 2, 7 ,1));view.addFocusItem(getDefView(0, 2, 8 ,1));view.addFocusItem(getDefView(0, 2, 9 ,1));view.addFocusItem(getDefView(2, 2, 5, 1));view.addFocusItem(getDefView(2, 2, 6, 1));view.addFocusItem(getDefView(2, 2, 7 ,1));view.addFocusItem(getDefView(2, 2, 8 ,1));view.addFocusItem(getDefView(2, 2, 9 ,1));}这里的代码比较好理解,只是将我们所要的控件找到,加入多个子item,getdata()是用来模拟获取服务数据的,本次demo暂时写到activity中,企业开发中建议单独写个manager用来控制网络层获取数据,下面是getDate(); 本文出处:/sk719887916 [java] view plain copy print?在CODE上查看代码片派生到我的代码片// 模拟网络获取数据mTvLists.add(new TvModle(R.drawable.atm, "阿童木重磅来袭"));mTvLists.add(new TvModle(R.drawable.sdyjq, "速度与激情大片在线看"));mTvLists.add(new TvModle(R.drawable.yyt, "音悦台"));mTvLists.add(new TvModle(tv, "中国网络电视台"));mTvLists.add(new TvModle(R.drawable.shtv, "东方卫视"));mTvLists.add(new TvModle(R.drawable.hutv, "芒果卫视"));mTvLists.add(new TvModle(R.drawable.gstv, "甘肃卫视"));mTvLists.add(new TvModle(tv, "江苏卫视"));mTvLists.add(new TvModle(R.drawable.shtv, "东方卫视"));mTvLists.add(new TvModle(R.drawable.pptv, "pptv"));mTvLists.add(new TvModle(R.drawable.aqy, "爱奇艺"));mTvLists.add(new TvModle(tv, "中国网络电视台"));mTvLists.add(new TvModle(R.drawable.atm, "阿童木重磅来袭"));mTvLists.add(new TvModle(R.drawable.sdyjq, "速度与激情大片在线看"));mTvLists.add(new TvModle(R.drawable.bjaqgs, "北京爱情故事"));mTvLists.add(new TvModle(R.drawable.hutv, "芒果卫视"));mTvLists.add(new TvModle(R.drawable.gstv, "甘肃卫视"));mTvLists.add(new TvModle(tv, "江苏卫视"));mTvLists.add(new TvModle(R.drawable.shtv, "东方卫视"));在上面的初始化方法中,我们会用到添加子控件的view的方法,通过getTview()和getDefView(),前面方法用于指定显示我们所要的itemView,后面方法是显示默认的view[java] view plain copy print?在CODE上查看代码片派生到我的代码片/*** getTvView* @param title* @param rouseid* @param row* @param rowspan* @param col* @param colspan* @return FocusItemVew*/private FocusItemModle getTvView(String title, int rouseid, int row, int rowspan,int col, int colspan) {LinearLayout layout = getLinearLayout();layout.setGravity(Gravity.CENTER);FrameLayout frameLayout = new FrameLayout(this);frameLayout.setPadding(PADDING, PADDING, PADDING, PADDING);TextView mTextView = new TextView(this);mTextView .setText(title);mTextView .setGravity(Gravity.CENTER);mTextView .setTextColor(Color.BLACK);mTextView .setTextSize(15);ImageView mLogoView = new ImageView(this);mLogoView.setLayoutParams(FILL_FILL);mLogoView.setImageResource(rouseid);frameLayout.addView(mLogoView, FILL_FILL);frameLayout.addView(mTextView , WRP_WRP);layout.addView(eLayout);return new FocusItemModle(layout, row, rowspan, col, colspan);}private FocusItemModle getDefView(int row, int rowspan, int col, int colspan) { LinearLayout layout = getLinearLayout();TextView tv2 = new TextView(this);tv2.setText("频道"+(i ++));tv2.setGravity(Gravity.CENTER);tv2.setTextColor(Color.WHITE);tv2.setTextSize(15);layout.addView(tv2, FILL_FILL);return new FocusItemModle(layout, row, rowspan, col, colspan);}再次我们还需要用到填充activty的Layout的xmL,比较简单[html] view plain copy print?在CODE上查看代码片派生到我的代码片<?xml version="1.0" ding="utf-8"?>android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><_ui_View.FocusViewandroid:id="@+id/focus_ui"android:layout_width="fill_parent"android:layout_height="wrap_content" /></LinearLayout>通过上篇文章结合本次文章,我们初步实现了一个在安卓TV上显示,并且可以用遥控器控制上下左右移动的效果UI,但由于只是demo,并非实际项目,所以效果比较粗糙,但是并不影响代码质量,以上的代码在tv上没有任何bug,但是运行在手机上是存有缺陷的,如果需要兼容手机,TV和手机公用一个版本的话,代码需要优化,但我本人不建议手机和电视版本公用一个版本,这样对UI的适配和焦点控制会带来众多麻烦,手机也无需这么大的使徒,但是不仿喜欢的朋友自己去完善和扩展,况且电视的操作体验是比较简单的,并且无法触屏的(但也有触屏的电视,价格不菲)后面我会继续完善本次demo,结合第三方开源视频框架,完成一个简易的tv上的视频播放器。