[feature]StyledPlayerView视频播放UI设置

This commit is contained in:
黎旭 2023-11-26 22:26:32 +08:00
parent 6f91408b27
commit 058406b928
7 changed files with 61 additions and 9 deletions

View File

@ -150,6 +150,10 @@ dependencies {
//
implementation 'io.github.youth5201314:banner:2.2.2'
//
implementation 'com.google.android.exoplayer:exoplayer:2.14.1'
}

View File

@ -1,5 +1,6 @@
package com.eningqu.aipen.ui.adapter;
import android.net.Uri;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@ -11,6 +12,17 @@ import androidx.recyclerview.widget.RecyclerView;
import com.eningqu.aipen.demo.R;
import com.eningqu.aipen.demo.databinding.ItemVideoBinding;
import com.eningqu.aipen.ui.vedio.VideoDetailActivity;
import com.google.android.exoplayer2.MediaItem;
import com.google.android.exoplayer2.SimpleExoPlayer;
import com.google.android.exoplayer2.source.MediaSource;
import com.google.android.exoplayer2.source.ProgressiveMediaSource;
import com.google.android.exoplayer2.ui.PlayerView;
import com.google.android.exoplayer2.ui.StyledPlayerView;
import com.google.android.exoplayer2.upstream.DataSource;
import com.google.android.exoplayer2.upstream.DataSpec;
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory;
import com.google.android.exoplayer2.upstream.RawResourceDataSource;
import com.google.android.exoplayer2.util.Util;
/**
* Package:com.eningqu.aipen.ui.adapter
@ -33,12 +45,22 @@ public class VideoAdapter extends RecyclerView.Adapter<VideoAdapter.VideoViewHol
public void onBindViewHolder(@NonNull VideoViewHolder videoViewHolder, int i) {
ItemVideoBinding binding=DataBindingUtil.getBinding(videoViewHolder.itemView);
StyledPlayerView playerView=binding.videoView;
SimpleExoPlayer player=new SimpleExoPlayer.Builder(playerView.getContext()).build();
binding.videoView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
VideoDetailActivity.startAction(binding.getRoot().getContext());
player.stop();
}
});
playerView.setPlayer(player);
Uri uri=RawResourceDataSource.buildRawResourceUri(R.raw.preview);
MediaItem item=MediaItem.fromUri(uri);
player.setMediaItem(item);
player.prepare();
}
@Override

View File

@ -2,11 +2,16 @@ package com.eningqu.aipen.ui.vedio;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.view.View;
import com.eningqu.aipen.demo.R;
import com.eningqu.aipen.demo.databinding.ActivityVideoDetailBinding;
import com.eningqu.aipen.ui.base.BaseActivity;
import com.google.android.exoplayer2.MediaItem;
import com.google.android.exoplayer2.SimpleExoPlayer;
import com.google.android.exoplayer2.ui.StyledPlayerView;
import com.google.android.exoplayer2.upstream.RawResourceDataSource;
/**
* Package:com.eningqu.aipen.ui.vedio
@ -17,8 +22,10 @@ import com.eningqu.aipen.ui.base.BaseActivity;
public class VideoDetailActivity extends BaseActivity<ActivityVideoDetailBinding> {
public static void startAction(Context context){
Intent intent=new Intent(context,VideoDetailActivity.class);
SimpleExoPlayer player;
public static void startAction(Context context) {
Intent intent = new Intent(context, VideoDetailActivity.class);
context.startActivity(intent);
}
@ -30,16 +37,33 @@ public class VideoDetailActivity extends BaseActivity<ActivityVideoDetailBinding
@Override
protected void initView() {
StyledPlayerView playerView = mBinding.playView;
player = new SimpleExoPlayer.Builder(playerView.getContext()).build();
playerView.setPlayer(player);
Uri uri = RawResourceDataSource.buildRawResourceUri(R.raw.preview);
MediaItem item = MediaItem.fromUri(uri);
player.setMediaItem(item);
player.prepare();
}
@Override
protected void initData() {
}
public class VideoClick{
public void back(View view){
public class VideoClick {
public void back(View view) {
finish();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
player.stop();
player.release();
}
}

View File

@ -35,6 +35,8 @@ public class VideoFragment extends BaseFragment<FragmentVideoBinding> {
adapter=new VideoAdapter();
recyclerView.setAdapter(adapter);
}
@Override

View File

@ -15,9 +15,9 @@
android:background="@color/gray_ed"
android:layout_height="match_parent">
<VideoView
android:id="@+id/videoView2"
android:layout_width="wrap_content"
<com.google.android.exoplayer2.ui.StyledPlayerView
android:id="@+id/playView"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_200"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@ -51,7 +51,7 @@
android:textSize="@dimen/sp_20"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/videoView2" />
app:layout_constraintTop_toBottomOf="@+id/playView" />
<ImageView
android:id="@+id/iv_author"

View File

@ -25,7 +25,7 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<VideoView
<com.google.android.exoplayer2.ui.StyledPlayerView
android:id="@+id/videoView"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_200"

Binary file not shown.