`
HEI_夜猫子
  • 浏览: 857 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

推荐:视频娱乐应用源码

阅读更多

视频娱乐应用源码


介绍:
一个视频类娱乐类应用,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;
//            }
//        }
//
//    }
}

 

0
0
分享到:
评论

相关推荐

    安卓直播视频播放流媒体IPCameraRTSPDLNA相关-一个视频娱乐应用源码.zip

    该压缩包文件主要涉及到的是安卓平台上视频娱乐应用的开发,特别是与直播视频播放、流媒体、IP Camera、RTSP和DLNA相关的内容。下面将详细解释这些知识点。 1. **安卓直播视频播放**:在安卓平台上,实现直播视频...

    Android高级应用源码-机顶盒应用的demo.zip

    这份"Android高级应用源码-机顶盒应用的demo.zip"提供了这样的示例,帮助开发者了解如何创建适应电视屏幕和遥控器交互的高质量应用程序。以下是对这个源码包中可能包含的知识点的详细阐述: 1. **大屏幕优化**:...

    最新软件应用类平台源码 手机应用下载源码

    1. **资源多样性**:该源码支持多种类型的应用资源,包括但不限于社交、娱乐、办公、学习等各种分类,能够满足不同用户的多样化需求。 2. **更新速度**:通过集成自动化更新机制,确保应用资源始终保持最新状态,让...

    新版PHP轻量级影视电影视频搜索播放器源码

    4. **前端界面**:源码中的前端界面设计应简洁易用,符合用户交互习惯,可能包含搜索框、分类导航、热门推荐等元素,以提升用户体验。 5. **API接口对接**:为了实现与资源网的对接,源码可能包含了API接口的调用...

    音视频编解码源码

    音视频编解码是计算机科学领域中的关键技术,尤其在多媒体通信、数字娱乐和网络流媒体应用中至关重要。本文将深入探讨音视频编解码的原理和技术细节,基于提供的"音视频编解码源码"这一主题,我们来展开讨论。 首先...

    最新全2013微应用平台源码 99个应用.zip

    《2013微应用平台源码:99个应用的探索与解析》 在互联网技术日新月异的时代,2013年的微应用平台源码无疑是一份珍贵的历史资料,它见证了社交网络与应用开发相结合的初期繁荣。这份名为“最新全2013微应用平台源码...

    短视频去水印解析HTML源码

    在当前的互联网时代,短视频平台已经成为了人们分享生活、娱乐休闲的重要途径,而这些平台为了保护版权,通常会在视频上添加水印。然而,有些用户可能有去除这些水印的需求,比如为了二次创作或者个人收藏。"短视频...

    IOS应用源码——视频播放.zip

    这个"IOS应用源码——视频播放.zip"压缩包显然包含了实现这一功能的源代码。让我们深入探讨一下iOS中视频播放的相关知识点。 1. **AVFoundation框架**: AVFoundation是Apple为iOS和macOS提供的多媒体处理框架,它...

    .net视频网站源码

    本文将围绕".NET视频网站源码"这一主题,深入探讨其核心技术和应用,旨在为开发者提供参考和学习的资源。 首先,".NET"是微软公司推出的一种统一的软件开发框架,它提供了构建各种类型的应用程序所需的所有工具和...

    ios应用源码之音频视频播放代码 20181210

    本资源“ios应用源码之音频视频播放代码 20181210”提供了一套完整的源码,帮助开发者了解并实现音频视频的播放功能。下面将详细解析相关知识点。 1. AVFoundation框架:在iOS中,AVFoundation框架是处理音频和视频...

    在线播放视频实例源码

    在线播放视频是移动应用开发中的常见功能,尤其是在娱乐、教育和资讯类应用中。这个"在线播放视频实例源码"应该是提供了一个Android平台上的视频播放器的实现代码,帮助开发者理解如何在Android应用中集成视频播放...

    机顶盒聚合视频桌面源码

    总之,机顶盒聚合视频桌面源码是构建高效、易用且内容丰富的机顶盒应用的关键,它整合了直播和点播服务,为用户提供一站式视频娱乐体验。开发这样的源码需要对多媒体技术、用户界面设计、网络编程以及机顶盒硬件特性...

    2020最新直播系统+短视频源码+教程+演示APP

    直播系统和短视频应用在当前数字化时代中占据了重要的地位,它们为用户提供实时互动、分享生活、娱乐和学习的新途径。这个“2020最新直播系统+短视频源码+教程+演示APP”压缩包包含了构建此类应用程序所需的关键元素...

    最新短视频解析算法源码.zip

    【标题】"最新短视频解析算法源码.zip" 提供的是一套用于解析短视频链接的源代码,这在当今社交媒体和互联网娱乐领域具有广泛的应用。短视频平台的流行催生了对视频内容分享的需求,而解析算法是实现这一功能的关键...

    短视频无水印解析网页源码

    【短视频无水印解析网页源码】是一种技术手段,它允许用户从短视频平台上下载无水印的视频,而无需依赖特定的电脑软件或移动应用。这种网页源码通常是基于JavaScript或者其他Web开发语言编写的,目的是提供一个用户...

    android 直播 点播视频源码

    在Android平台上,直播和点播视频服务已经成为移动应用不可或缺的一部分,尤其在娱乐、教育和社交领域。本资源提供了一个可以直接使用的Android直播和点播视频源码,名为"VST-1.1.9-0928"。下面将详细探讨相关知识点...

    最新版微信视频打赏平台源码,源码带有代理系统功能,包括总后台管理和完整数据,源码开源不授权,可以自己修改和优化。.txt

    ### 微信视频打赏平台源码解析及应用 #### 一、概述 随着移动互联网技术的迅猛发展,社交软件已成为人们日常生活中不可或缺的一部分。微信作为国内最受欢迎的社交平台之一,其用户群体庞大且活跃度高。在此背景下...

    微信小程序找电影视频小程序源码(源码+源码导入视频教程+源码导入文档教程)小程序精选源码亲测可用

    5. **生活娱乐应用**:标签提到"生活娱乐"意味着该小程序可能包含了电影推荐、视频播放等功能,这涉及到用户界面设计、用户体验优化,以及如何利用微信小程序的数据分析能力来提升用户满意度。 6. **课程资源**:...

    E4A视频APP源码电视盒子酷点电视4.5版 后端苹果cms

    E4A视频APP源码电视盒子酷点电视4.5版,是一款专为视频应用设计的强大源码,集成了丰富的功能特性与高度自定义的能力。这款源码支持多种设备,包括但不限于电视盒子、手机和平板电脑等,旨在为用户提供全面且优质的...

    【清爽娱乐网源码 v5.69】图片文字视频音频类型的网站建设+功能和模板可通过插件形式扩展

    清爽娱乐网系统可应用于图片、文字、视频、音频类型的网站建设,承载数据量大,承载访问量大,安全性高,功能和模板可通过插件形式扩展。 1、自动化程度高: 自动设置文章第一张图片为缩略图 自动检测首次安装环境 ...

Global site tag (gtag.js) - Google Analytics