[feature]StyledPlayerView视频播放UI设置
This commit is contained in:
parent
6f91408b27
commit
058406b928
|
@ -150,6 +150,10 @@ dependencies {
|
|||
//轮播图
|
||||
implementation 'io.github.youth5201314:banner:2.2.2'
|
||||
|
||||
//视频播放器
|
||||
implementation 'com.google.android.exoplayer:exoplayer:2.14.1'
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -35,6 +35,8 @@ public class VideoFragment extends BaseFragment<FragmentVideoBinding> {
|
|||
adapter=new VideoAdapter();
|
||||
recyclerView.setAdapter(adapter);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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.
Loading…
Reference in New Issue