推荐:视频娱乐应用源码
视频娱乐应用源码
介绍:
一个视频类娱乐类应用,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; // } // } // // } }
相关推荐
瓜牛呱呱 2020-11-12
柳木木的IT 2020-11-04
yifouhu 2020-11-02
lei0 2020-11-02
源码zanqunet 2020-10-28
源码zanqunet 2020-10-26
一叶梧桐 2020-10-14
码代码的陈同学 2020-10-14
lukezhong 2020-10-14
lzzyok 2020-10-10
anchongnanzi 2020-09-21
clh0 2020-09-18
changcongying 2020-09-17
星辰大海的路上 2020-09-13
abfdada 2020-08-26
mzy000 2020-08-24
shenlanse 2020-08-18
zhujiangtaotaise 2020-08-18
xiemanR 2020-08-17