视频娱乐应用源码
介绍:
一个视频类娱乐类应用,4.4下有些bug。 本项目中使用到 Recyclerview 、Toolbar、
TabLayout、SwipeRefreshLayout、NavigationView、CoordinatorLayout、CardView等技术知识
,一个挺不错的开源项目,欢迎朋友下载学习。
项目来自:http://www.itlanbao.com/code/20151209/10000/100684.html
本项目主要依赖vitamio播放视频,vitamio也是一个不错的开源库,支持多种格式的视频播放。
如果学习视频建议使用vitamio。功能挺强大的。
效果截图:
主要播放视频部分代码如下:
package org.sunger.net.ui.activity; import android.content.Context; import android.content.Intent; import android.graphics.Color; import android.os.Bundle; import android.support.design.widget.CollapsingToolbarLayout; import android.support.design.widget.CoordinatorLayout; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.WindowManager; import org.sunger.net.entity.CommentEntity; import org.sunger.net.entity.MediaEntity; import org.sunger.net.presenter.PlayVideoPresenter; import org.sunger.net.presenter.impl.PlayVideoPresenterImpl; import org.sunger.net.support.recyclerview.OnRecycleViewScrollListener; import org.sunger.net.support.recyclerview.TopScrollListener; import org.sunger.net.ui.adapter.CommentsAdapter; import org.sunger.net.utils.DensityUtil; import org.sunger.net.utils.DeviceUtils; import org.sunger.net.view.PlayVideoView; import java.util.List; import io.vov.vitamio.LibsChecker; import sunger.org.demo.R; public class VideoPlayActivity extends BaseCompatActivity implements PlayVideoView, SwipeRefreshLayout.OnRefreshListener, CommentsAdapter.OnCommentItemClickListener { public final static String MEDIAS_ID_KEY = "media_id"; private RecyclerView mRecyclerView; private CommentsAdapter mAdapter; private PlayVideoPresenter mPresenter; private VideoPlayHeader mVideoPlayHeader; private int medias_id; private int current_comment_page = 1; public static Intent createIntent(Context context, int id) { Intent intent = new Intent(context, VideoPlayActivity.class); intent.putExtra(MEDIAS_ID_KEY, id); return intent; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (!LibsChecker.checkVitamioLibs(this)) return; getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); setContentView(R.layout.activity_video_play); View view = findView(R.id.appbar); int width = DeviceUtils.getScreenWidth(this) + DensityUtil.dip2px(this, 110) + getActionBarSize(); CoordinatorLayout.LayoutParams params = new CoordinatorLayout.LayoutParams(CoordinatorLayout.LayoutParams.MATCH_PARENT, width); view.setLayoutParams(params); medias_id = getIntent().getIntExtra(MEDIAS_ID_KEY, -1); mPresenter = new PlayVideoPresenterImpl(this); mPresenter.getMedia(medias_id); initView(); mPresenter.refresh(medias_id); } private void initView() { setUpCommonBackTooblBar(R.id.tool_bar, " "); CollapsingToolbarLayout collapsing_toolbar = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar); collapsing_toolbar.setTitle(" "); collapsing_toolbar.setExpandedTitleColor(Color.TRANSPARENT); mVideoPlayHeader = new VideoPlayHeader(this, findViewById(R.id.video_header)); initRecyclerView(); } private void initRecyclerView() { mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view); mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); mAdapter = new CommentsAdapter(this); mAdapter.setHasMoreData(true); mRecyclerView.addOnScrollListener(new OnRecycleViewScrollListener() { @Override public void onLoadMore() { mAdapter.setHasFooter(true); mPresenter.loadMore(medias_id, current_comment_page); mRecyclerView.scrollToPosition(mAdapter.getItemCount() - 1); } }); mRecyclerView.setAdapter(mAdapter); mAdapter.setOnCommentItemClickListener(this); mRecyclerView.addOnScrollListener(new TopScrollListener() { protected void start() { mVideoPlayHeader.getVideoControllerView().start(); } protected void pause() { mVideoPlayHeader.getVideoControllerView().pause(); } }); } private void setHeaderView(MediaEntity mediaEntity) { mVideoPlayHeader.bindData(mediaEntity); } @Override public void refreshComment(List<CommentEntity> dataList) { current_comment_page = 2; mAdapter.clear(); mAdapter.appendToList(dataList); if (dataList.isEmpty()) { mAdapter.setHasMoreData(false); } mAdapter.notifyDataSetChanged(); } @Override public void showMoreComments(List<CommentEntity> dataList) { if (dataList.isEmpty()) { mAdapter.setHasMoreData(false); showMsgInBottom(R.string.msg_no_more_data); } else { current_comment_page++; mAdapter.appendToList(dataList); mAdapter.notifyDataSetChanged(); mAdapter.setHasMoreData(true); } } @Override protected void onDestroy() { super.onDestroy(); if (mVideoPlayHeader != null) mVideoPlayHeader.getVideoControllerView().release(); } @Override public void showMediaData(MediaEntity mediaEntity) { setHeaderView(mediaEntity); } @Override public void showLoadMediaError() { } @Override public void onRefresh() { mPresenter.refresh(medias_id); } @Override public void onItemClick(CommentEntity commentEntity) { // Dialog dialog = UiHelper.createListDialog(this, data, new CommentOnClickListener(position)); // dialog.show(); } @Override public void onClickAvatar(int uid) { } @Override public void onClickAtFriend(String screen_name) { } @Override public void thumbUp(int id) { mPresenter.createLikeComment(id); } @Override public void thumbDown(int id) { mPresenter.destoryLikeComment(id); } // /** // * 点击回复弹出 // */ // private class CommentOnClickListener implements DialogInterface.OnClickListener { // private int position; // // public CommentOnClickListener(int position) { // this.position = position - 1; // } // // @Override // public void onClick(DialogInterface dialog, int which) { // switch (which) { // case 0: // break; // case 1: // ClipboardUtils.copy(VideoPlayActivity.this, commentsAdapter.getItem(position).getContent()); // dialog.dismiss(); // showMsgInBottom("已复制到剪切板"); // break; // case 2: // startActivity(WebViewActivity.createIntent(VideoPlayActivity.this, "http://www.baidu.com")); // break; // case 3: // dialog.dismiss(); // break; // } // } // // } }
相关推荐
一个视频娱乐应用源码.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
清爽娱乐网系统可应用于图片、文字、视频、音频类型的网站建设,承载数据量大,承载访问量大,安全性高,功能和模板可通过插件形式扩展。 1、自动化程度高: 自动设置文章第一张图片为缩略图 自动检测首次安装环境 ...
清爽娱乐网系统可应用于图片、文字、视频、音频类型的网站建设,承载数据量大,承载访问量大,安全性高,功能和模板可通过插件形式扩展。 程序特点: 1、自动化程度高: 自动设置文章第一张图片为缩略图 自动...
清爽娱乐网系统可应用于图片、文字、视频、音频类型的网站建设,承载数据量大,承载访问量大,安全性高,功能和模板可通过插件形式扩展。程序特点:1、自动化程度高:自动设置文章第一张图片为缩略图自动检测首次...
该源码提供了一个简洁而直观的用户界面,用户可以上传照片、选择目标面部并应用换脸效果。 适用人群: AI换脸小程序源码适用于广大用户,无论是个人用户还是企业用户。对于那些喜欢尝试有趣特效的个人用户来说,该...
该资源包内含完整的源码、详尽的说明文档以及实际运行截图,旨在帮助学习者轻松掌握找电影视频应用的开发技巧,为他们的学习和实践提供有力支持。 在源码方面,该程序充分利用了微信小程序的便捷性和高效性,实现了...
内容索引:JAVA源码,游戏娱乐,JAVA游戏源码 JAVA编写的吃豆子游戏,类似疯狂坦克一样,至少界面有点像。大家可以看截图。 Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java...
Android 简单视频类娱乐类应用本项目中使用到 Recyclerview 、Toolbar、 TabLayout、SwipeRefreshLayout、NavigationView、CoordinatorLayout、CardView等技术知识 ,主要依赖vitamio播放视频,vitamio也是一个不错...
内容索引:JAVA源码,游戏娱乐,JAVA游戏源码 JAVA编写的吃豆子游戏,类似疯狂坦克一样,至少界面有点像。大家可以看截图。 Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java...
清爽娱乐网系统可应用于图片、文字、视频、音频类型的网站建设,承载数据量大,承载访问量大,安全性高,功能和模板可通过插件形式扩展。
内容索引:JAVA源码,游戏娱乐,JAVA游戏源码 JAVA编写的吃豆子游戏,类似疯狂坦克一样,至少界面有点像。大家可以看截图。 Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 ...
为您提供清爽娱乐网源码下载,清爽娱乐网系统可应用于图片、文字、视频、音频类型的网站建设,承载数据量大,承载访问量大,安全性高,功能和模板可通过插件形式扩展。清爽娱乐网源码程序特点:1、自动化程度高:...
这个小程序是一款仿抖音的短视频应用。用户可以通过滑动页面观看各种短视频,包括小短剧、影视等精彩内容,并可以点赞、评论和分享视频。同时,该小程序还支持支付收益功能,有利于吸引更多的优质视频创作者加入平台...
Python基于协同过滤算法的电影推荐视频网站设计 开发软件:Pycharm 开发环境: Python3.6 数据库:mysql5.6 本系统包含电影前端展示界面、电影评分板块、推荐算法的实现以及后端数据库的设 计.其中实现推荐算法是...
内容索引:JAVA源码,游戏娱乐,JAVA游戏源码 JAVA编写的吃豆子游戏,类似疯狂坦克一样,至少界面有点像。大家可以看截图。 Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 ...
内容索引:JAVA源码,游戏娱乐,JAVA游戏源码 JAVA编写的吃豆子游戏,类似疯狂坦克一样,至少界面有点像。大家可以看截图。 Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 ...
内容索引:JAVA源码,游戏娱乐,JAVA游戏源码 JAVA编写的吃豆子游戏,类似疯狂坦克一样,至少界面有点像。大家可以看截图。 Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java...
DiscuzX3.2酷播视频插件简介 DiscuzX3.2酷播视频插件 / DiscuzX1.5视频插件支持多终端跨平台观看。 1. 添加极酷阳光V3.5免费版跨平台播放器到dz论坛程序中的视频应用插件 ...同类推荐:站长常用源码
现已广泛应用于教育、娱乐、客服等各个行业,随着国内带宽的提升和各类新技术的加入,视频直播技术已经逐渐成为下一代互联网的主流,多媒体在线直播体验势必将会涵盖各类终端,成为全民参与的新一代互联网主旋律。...