本項目是用eclipse軟件編寫,經過我的親自實踐,其真實有效,希望能給您有所幫助😘😘
項目版本:android5.1.1 AVD建議:android4.4.2及以上 若有不足之處或不對的地方,歡迎大佬們指點 |
文章目錄
視頻播放界面主要是將視頻詳情界面或者播放記錄界面的視頻進行全屏播放,獲取
視頻所在的本地路徑並進行加載即可完成視頻播放
效果圖:
1、創建課程詳情界面佈局文件activity_video_play.xml
res/layout
文件夾中新建activity_video_play.xml
文件,代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<VideoView
android:id="@+id/videoView"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</RelativeLayout>
2、創建raw文件夾
在res
目錄下創建raw
文件夾。
raw
文件夾與assets
類似,該文件夾中的文件在程序 打包時會原封不動的保存到APK中,不會被編譯成二進制。不同的是,res/raw
中的文件會被映射到R 文件中,訪問時直接使用資源ID
即可,而assets
文件夾下的文件不會被映射到R文件中,訪問時需要AssetManager
類。
然後在res/raw
文件夾中放入要播放的視頻videoll.mp4,用於測試視頻播放功能
3、視頻播放界面邏輯代碼
在.activity
包中新建VideoPlayActivity.java
文件,具體代碼如下:
package china.ynyx.heyunhui.activity;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.WindowManager;
import android.widget.MediaController;
import android.widget.Toast;
import android.widget.VideoView;
import china.ynyx.heyunhui.R;
public class VideoPlayActivity extends AppCompatActivity {
private VideoView videoView;
private MediaController controller;
private String videoPath;//本地視頻地址
private int position;//傳遞視頻詳情界面點擊的視頻位置
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//設置界面全屏顯示
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_video_play);
//設置此界面爲橫屏
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
//獲取從播放記錄界面傳遞過來的視頻地址
videoPath = getIntent().getStringExtra("videoPath");
position=getIntent().getIntExtra("position",0);
init();
}
/**
* 初始化UI控件
*/
private void init() {
videoView = (VideoView) findViewById(R.id.videoView);
controller = new MediaController(this);
videoView.setMediaController(controller);
play();
}
/**
* 播放視頻
*/
private void play() {
if (TextUtils.isEmpty(videoPath)) {
Toast.makeText(this, "本地沒有此視頻,暫無法播放", Toast.LENGTH_SHORT).show();
return;
}
String uri = "android.resource://" + getPackageName() + "/" + R.raw.video11;
videoView.setVideoPath(uri);
videoView.start();
}
/**
* 點擊後退鍵
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
//把視頻詳情界面傳遞過來的被點擊視頻的位置傳遞回去
Intent data=new Intent();
data.putExtra("position", position);
setResult(RESULT_OK, data);
return super.onKeyDown(keyCode, event);
}
}
4、修改課程詳情界面
(1)由於視頻播放界面是通過播放記錄界面(目前未創建)和課程詳情界面跳轉的,因此需要在播放記錄界面和課程詳情界面添加相應的跳轉邏輯。由於播放記錄界面暫未創建,因此首先在課程詳情界面添加相應代碼,找到VideoListActivity.java
文件中的init()
方法,在註釋“//跳轉到視頻播放界面
”下方添加如下代碼:
Intent intent=new Intent(VideoListActivity.this,VideoPlayActivity.class);
intent.putExtra("videoPath", videoPath);
intent.putExtra("position", position);
startActivityForResult(intent, 1);
(2)在視頻播放界面點擊後退按鈕時,需要通過回傳數據信息來設置課程詳情界面的圖 標,因此需要在VideoListActivity
類中重寫onActivityResult()
方法來接收當前視頻在視頻列表中的位置position
,同時設置課程詳情界面的圖標狀態,具體代碼如下:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(data!=null){
// 接收播放界面回傳過來的被選中的視頻的位置
int position=data.getIntExtra("position", 0);
adapter.setSelectedPosition(position);// 設置被選中的位置
// 目錄選項卡被選中時所有圖標的顏色值
lv_video_list.setVisibility(View.VISIBLE);
sv_chapter_intro.setVisibility(View.GONE);
tv_intro.setBackgroundColor(Color.parseColor("#FFFFFF"));
tv_video.setBackgroundColor(Color.parseColor("#30B4FF"));
tv_intro.setTextColor(Color.parseColor("#000000"));
tv_video.setTextColor(Color.parseColor("#FFFFFF"));
}
}
5、修改AndroidManifest.xml
文件
在AndroidManifest.xml
文件中添加如下代碼:
<activity android:name="china.ynyx.heyunhui.activity.VideoPlayActivity"></activity>
參考資料:《android項目實戰——博學谷》(黑馬程序員著)