一步一步实现视频播放器客户端(二)

实现主体界面:

222.png (64.46 KB, 下载次数: 0)

下载附件  保存到相册

前天 21:02 上传

比较常见的一种布局,下面几个按钮,点击后,切换到相应的界面,可以使用tabhost+RadioGroup来实现,或者其他的比如fragmentTabhost+fragment等,实现方式有好几种。本app是很久之前做的,采用老方法tabhost+RadioGroup来实现的。界面底部是RadioGroup,里面放了4个radiobutton,4个按钮切换时候,分别切换显示4个不同的activity,按钮上面显示部分是另外一个activity。

MainActivity的主代码如下:

private static final String HOME = "home";

private static final String HOT = "hot";

private static final String TJ = "tj";

private static final String LOCAL = "local";

private RadioGroup rGroup;   //这里用RadioGroup来取代TabWidget,更加方便我们设计控件的样式,用于底部4个按钮

private TabHost tabHost;      //像一个容器,把我们需要展示的activity放进去,根据我们需要进行显示

private TabSpec tabSpec;     //各个选项卡

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initView();

setLister();

}

private void setLister() {        //绑定事件

rGroup.setOnCheckedChangeListener(this);

}

private void initView()    //初始化view

{

rGroup = (RadioGroup) findViewById(R.id.RadioGroup);

tabHost = this.getTabHost();   //从TabActivity中获取一个tabHost对象,因为我们继承了TabActivity,它已经获取了tabHost,我们不用再用findViewById

/**

* 获取各个选项卡,并且把相应的activity装进去,可以加一个或者多个,更具自己需要添加,activity需要我们自己创建,记住在配置文件里面进行配置

*/

tabSpec = tabHost.newTabSpec(HOT).setIndicator(HOT)

.setContent(new Intent(this, HotActivity.class));   //HotActivity,显示热门电影界面,刚进入时候,显示得第一个界面

tabHost.addTab(tabSpec);

tabSpec = tabHost.newTabSpec(TJ).setIndicator(TJ)

.setContent(new Intent(this, RecommendActivity.class));   //推荐界面

tabHost.addTab(tabSpec);

tabSpec = tabHost.newTabSpec(HOME).setIndicator(HOME)

.setContent(new Intent(this, AllVideoActivity.class));
//全部电影界面

tabHost.addTab(tabSpec);

tabSpec = tabHost.newTabSpec(LOCAL).setIndicator(LOCAL)

.setContent(new Intent(this, LocalVideoActivity.class));
//本地视频

tabHost.addTab(tabSpec);

}

//点击下面5个Radiobutton,点击时候触发这里的事件,分别切换到相应的界面

public void onCheckedChanged(RadioGroup group, int checkedId) {

switch (checkedId) {

case R.id.hot_id:

tabHost.setCurrentTab(0);      //跳转到热门界面

break;

case R.id.tuijian_id:

tabHost.setCurrentTab(1);    //跳转推荐界面

break;

case R.id.home_id:

tabHost.setCurrentTab(2);  //跳转全部电影界面

break;

case R.id.local_id:

tabHost.setCurrentTab(3);    //跳转本地视频

break;

}

}

MainActivit的布局文件如下:

<?xml version="1.0" encoding="utf-8"?>

<TabHost xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@android:id/tabhost"  //该id名字必须这样写,不能变,TabActivity会根据此id获取tabhost对象

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="horizontal" >

<TabWidget         //该控件虽然是影藏的,但是必须要写出来,id也必须入下,不能改变,不然代码里面用tabhost获取tabTabSpec会出错。他显示时候,显示在界面的顶端,不是我们需要的,我们把它影藏,用下面的RadioGroup来代替

android:id="@android:id/tabs"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:visibility="gone" >

</TabWidget>

<RelativeLayout  //使用相对布局,方便radiogroup可以显示到底部,还有可以使类容不被下面的4个按钮挡住

android:layout_width="fill_parent"

android:layout_height="fill_parent" >

<FrameLayout     //这个是用来放置其他activity的,id也必须这样,不能随意变。就是切换时候的那4个activity

android:id="@android:id/tabcontent"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:layout_above="@id/RadioGroup" >   //这里设置位置在Radiogroup上面,放置部分内容被4个按钮挡住

</FrameLayout>

<RadioGroup       //放置底部4个radiobutton

android:id="@id/RadioGroup"

android:layout_width="fill_parent"

android:layout_height="50dp"

android:layout_alignParentBottom="true"  //放置在父控件的最下面

android:gravity="bottom"

android:orientation="horizontal" >

<RadioButton

android:paddingTop="5dp"

android:id="@id/hot_id"   //这里名字随便取的,大家请按照规范命名。这里id是放在ids里面的,也可以直接用+号形式直接写

style="@style/main_radio_botton"    //4个按钮属性相同的部分,我们提出去,放到style文件里面,达到公用

android:layout_width="wrap_content"

android:layout_height="fill_parent"

android:layout_weight="1"   //设置权重,保重4个按钮的宽度一致

android:background="@drawable/bar_selector"
//这个比较常用,设置一个selector的xml文件,点击时候,切换背景。

android:checked="true"   //表示改radiobutton是选中状态,上面设置了selector,它就可以更具这个状态,显示相应的背景了

android:drawableTop="@drawable/main_bt_ico_hot"
//看意思能看出来,在控件顶部放一个图片,当然一次还可以放其他位置

android:gravity="center"

android:text="@string/main_bt_hot"

android:textSize="12sp" />

</RadioGroup>

</RelativeLayout>

</TabHost>

除了MainActivity界面,我们还需要4个activity,上面有写,来先看看第一个界面HotActivity的布局文件

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="#000000"

android:orientation="vertical" >

<FrameLayout    //最顶部标题栏部分,因为很多时候,它左边和右边都有相应的按钮,比如返回键什么的,所以用FrameLayout    来做,通过控件的属性

android:layout_gravity="xxxx",可以方便的把控件显示在中间,左边,右边,各种居中等

android:layout_width="fill_parent"

android:layout_height="40dp"

android:background="@drawable/test_title_bg" >

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center"   //控件显示在中间,显示我们的app名字

android:text="@string/app_name"

android:textColor="#ffffff"

android:textSize="18sp" />

</FrameLayout>

<HorizontalScrollView  //标题栏下面是一排按钮,应为比较多,可以 滑动,所以使用该控件,实现,左右滑动

android:id="@+id/hscroll"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:scrollbars="none" >

<RadioGroup  //这里还是使用它来实现点击切换效果,主要是为了使用它的checked属性,很方便的变换,点击按钮后,切换背景

android:id="@+id/bar_rg"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:gravity="center"

android:orientation="horizontal" >

<RadioButton

android:id="@+id/bar_rd1"

style="@style/main_radio_botton"

android:layout_width="60dp"

android:layout_height="35dp"

android:layout_marginBottom="3dp"

android:layout_marginLeft="5dp"

android:layout_marginTop="3dp"

android:background="@drawable/sc_bar_selector"

android:checked="true"

android:gravity="center"

android:paddingBottom="3dp"

android:text="@string/hot_text_rd" />

</RadioGroup>

</HorizontalScrollView>

<FrameLayout

android:layout_width="fill_parent"

android:layout_height="fill_parent" >

<LinearLayout  //我们的数据是用listview来显示的,这里每个按钮对应一个listview,在界面里面,我们动态添加到该linearlayout上面

具体写代码时候,大家会清楚的,用多个listview来显示不同类型的数据,通过显示影藏,来显示不同的数据,而不会重新刷新数据

android:id="@+id/list_lin"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="#ffffff"

android:orientation="vertical" >

</LinearLayout>

<include    //自定义的一个progress,一个转圈圈的view,提示用户当前在加载数据。这个view提出来,写在一个xml里面,便于其他界面使用,公用view,大家都可以单独提出来,在用include    加入

android:id="@+id/pb"

layout="@layout/progress_bar" />

</FrameLayout>

</LinearLayout>

为了使我们的额代码看起来比较统一,我们创建一个包com.hck.videoplayer.interfaces,在里面我们新建一个借口类:

public interface BaseMethod {

public void initView();  //初始化数据

public void getData(); //从服务器获取数据

public void updateUi(); //更新界面

public void setDataToServer();   //发送数据到服务器

public void initData();  //初始化数据

}

源码地址:http://pan.baidu.com/s/1eQirxuU

我的贴吧:http://tieba.baidu.com/f?kw=android%E5%BC%80%E5%8F%91%E5%AD%A6%E4%B9%A0&ie=utf-8

有问题可以这里来提问,大家相互交流,尽量回答大家问题。

有写属性数据各个界面可能公用,我们在ui包下创建一个名字叫BaseActivity的activity,继承activity,后面,公用的数据,我们就放在里面了。

然后在使用的时候,我们其他的activity都继承该BaseActivity,然后都实现 BaseMethod接口

好了,本片差不多这样了,时间有限,能力有限,很多地方没写到位,可能有错误的地方,请大家见谅,文章,紧供参考。需要的,大家可以参考下,不喜忽喷,谢谢

时间: 2024-10-26 18:22:51

一步一步实现视频播放器客户端(二)的相关文章

C语言基于GTK+Libvlc实现的简易视频播放器(二)

简易视频播放器-全屏播放 一.课程说明上一次我们使用gtk+libvlc实现了一个最简单的视频播放器,可以实现点击按钮暂定和停止播放视频,以及同步显 示视频播放进度,但即使作为一个视频播放器,只有这些功能也还是不够的,至少我们还应该有全屏播放的功能吧,所以这一次我们就来为上一次的视频播放器添加 上全屏播放功能.这个功能实现起来思路很简单,只是具体实现过程中有很多坑罢了,需要我们注意很多细节问题,还要解决一些bug等等.这次我们的代码出了 增加功能之外,也还会对上一次的基础代码做一些修改. 二.功

一步一实现视频播放器客户端(三)显示热门电影列表

(三) 今天实现热门电影这块功能,主要是从服务器获取数据,然后显示在界面上.这块虽然说是从服务器获取电影信息数据,但是,没有用到http相关的知识,我们直接使用sdk包(56网提供的api),就能获取服务器返回的json格式的数据了.以后,我还会写一篇笑话客户端的完整例子,会讲http这块,现在就不多说了. 效果图:                      第2将,我们把主界面做好了,但是没有数据,今天,我们获取数据,绑定界面上. 在说下界面,顶部一个标题,显示app名字,一次下面是一排的按钮

手把手教你做视频播放器(二)

第2节 获取视频信息 要知道设备上有哪些可以被播放的视频文件,一般来讲有两个方法, 遍历设备磁盘上所有的目录,根据文件的后缀名,把这些目录中所有的视频文件都找出来: 向安卓系统提供的Media Provider提出查询请求,从而获取我们希望的视频文件信息: 从"减小开发难度,利用安卓系统自身功能,选择最简单的方案"的角度出发,我们采用Media Provider. 2.1 ContentProvider ContentProvider是安卓系统的四大组件之一,为别的组件(Activit

Ace教你一步一步做Android新闻客户端(一)

复制粘贴了那么多博文很不好意思没点自己原创的也说不出去,现在写一篇一步一步教你做安卓新闻客户端,借此机会也是让自己把相关的技术再复习一遍,大神莫笑,专门做给新手看. 手里存了两篇,一个包括软件视图 和新手引导 软件侧滑菜单 滑动主页的GUI篇 一个内容解析篇. 代码里有很详细的注释 所以直接放代码了 有不会的站内信或者评论我会及时回复. MainActivity XML :只有一个ListView布局 <?xml version="1.0" encoding="utf-

android一步一步实现视频客户端app(一)

我开发完成了一个完整的视频客户端app,现在,分享出来,供初学者学习参考(大神就不用看了,比较简单,仅供入门),大家相互交流相互学习.项目有些功能,我时间也不是很多,只能时不时更新下.只能大概讲解怎么一步一步实现,相关的知识点,大家自己查阅相关资料了,本人很多地方也是会使用,要我说出个具体的原理什么的,确实说不清,还有本人表达能力有限,大家只能将就看看,不喜忽喷,哈哈. 还有为大家说下,怎么加入广告平台的广告,发布市场,获取收入(老实说本人app,加广告,基本没收入),这里只是抛砖引玉罢了,给刚

一步一步实战HTML音乐播放器

在这里我用HTML5从头开始一步一步来制作一个简约的音乐播放器,大家可以参考一下,接下来正式开始. 音乐播放器效果 播放器分析 这里将播放器分两块来做: 视图层(html + css) 逻辑层 ( js ) 视图层分析 视图中包含: 播放器容器 播放器名称 音乐专辑图 音乐信息 歌曲名 歌手 专辑名 控制区 上一曲 播放 下一曲 播放进度条 播放时间 当前时间 歌曲总时间 音频控件 页面背景 逻辑层分析 逻辑层处理包括: 加载歌单 渲染歌曲信息 专辑图 歌曲名 歌手 专辑名 歌曲时长 歌曲音频地

Flash视频播放器开发经验总结

HTTP协议更优 目前几乎所有的视频点播网站全部采用HTTP协议传输数据.因为相对于诸如RTMP等协议来说,HTTP协议是无状态的,数据传输完毕就断开连接,这样服务器就可以腾出资源来服务更多的用户.而RTMP则会在用户播放期间一直维护一个连接,这样服务器的负载就非常有限.而且HTTP服务器,CDN等都已经是非常成熟的技术,成本低性能好.另外HTTP的请求可以直接使用浏览器Cookie,容易和网站业务打通.最后,HTTP还能使用浏览器缓存,这算优点也算缺点,优点是请求同样的资源可以直接从缓存中取,

免费视频播放器videojs中文教程

Video.js是一款web视频播放器,支持html5和flash两种播放方式.更多关于video.js的介绍,可以访问官方网站介绍,我之前也写过一篇关于video.js的使用心得,有兴趣的可以点这里 , 阅读的人数还蛮多的,有些热心的读者甚至还给过我小额打赏,钱虽不多,但是很感动.最几天又收到几位网友的私信,问一些关于videojs使用方面的问题.我自己都不记得videojs长什么模样了,出于别人对我的信任,又回头看了一遍上一篇文章,还是2014年的时候写的,如今videojs的版本已经更新到

OpenCV:基于MFC的视频播放器和图片读取器

实例工程包下载[OpenCV:基于MFC的视频播放器和图片读取器] 一.实现的功能 1.打开本地视频进行读取.播放.暂停.停止控制 2.图片打开功能分为两种:可使用"打开图片"按钮打开本地图片,或者点击comobox里面设定的图片列表选择并显示图片 二.编译环境 OS:Win8.1 x64 IDE:  Visual Studio 2013 OpenCV: 2.4.8 三.主要思路 1.视频的滑动条控制: ①主窗体的OnHScroll()响应函数负责响应slider滑动条的变化,这样就轻