Skip to content

Commit 9a800f2

Browse files
committed
增加列表播放
1 parent 86bf63a commit 9a800f2

35 files changed

+815
-404
lines changed

acode_player_lib/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,5 @@ dependencies {
3636
compile 'com.google.android.exoplayer:exoplayer:2.7.3'
3737
//tablayout
3838
compile 'com.github.hackware1993:MagicIndicator:1.5.0'
39+
compile 'com.android.support:recyclerview-v7:26.1.0'
3940
}

acode_player_lib/src/main/AndroidManifest.xml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,5 @@
1414
android:name="android.support.FILE_PROVIDER_PATHS"
1515
android:resource="@xml/file_paths" />
1616
</provider>
17-
<activity android:name=".lib.tablayout.TestActivity" />
18-
<activity android:name=".lib.tablayout.FuckActivity" />
1917
</application>
2018
</manifest>

acode_player_lib/src/main/java/com/acode/player/lib/AcodePlayer.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ public void readyPlayer(PlayerBean playerBean) {
181181
* @param playerBean 播放数据源
182182
* 设置播放线路
183183
*/
184-
public void readyPlayer(PlayerBean playerBean, int lins) {
184+
public void readyPlayer(PlayerBean playerBean, String lins) {
185185
this.playerBean = playerBean;
186186
if (timerUtils != null) {
187187
timerUtils.stop();
@@ -190,9 +190,9 @@ public void readyPlayer(PlayerBean playerBean, int lins) {
190190
//创建定时间监听播放状态
191191
timerUtils = new TimerUtils(this, player, playerBean);
192192
Uri uri = null;
193-
for (int i = 0; i < playerBean.getUris().size(); i++) {
194-
if (lins == playerBean.getLineNames().get(i)) {
195-
uri = playerBean.getUris().get(i);
193+
for (int i = 0; i < playerBean.getPlayerUrls().size(); i++) {
194+
if (lins.equals(playerBean.getLineNames().get(i))) {
195+
uri = Uri.parse(playerBean.getPlayerUrls().get(i));
196196
}
197197
}
198198
//初始化数据源

acode_player_lib/src/main/java/com/acode/player/lib/AcodePlayerView.java

Lines changed: 33 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,10 @@
3030
import com.acode.player.lib.anim.AnimUtils;
3131
import com.acode.player.lib.bean.PlayerBean;
3232
import com.acode.player.lib.data.Config;
33+
import com.acode.player.lib.listener.AcodePlayerBackListener;
3334
import com.acode.player.lib.listener.AcodePlayerListener;
35+
import com.acode.player.lib.listener.AcodePlayerOrientationListener;
36+
import com.acode.player.lib.listener.AcodePlayerStateListener;
3437
import com.acode.player.lib.utils.DimenUtils;
3538
import com.acode.player.lib.utils.GestureEnum;
3639
import com.acode.player.lib.utils.NetUtils;
@@ -103,18 +106,29 @@ public class AcodePlayerView extends FrameLayout implements View.OnClickListener
103106
private TextView tv_hight_clear;
104107
//标清
105108
private TextView tv_standard_clear;
109+
//播放进度更新
110+
private AcodePlayerStateListener acodePlayerStateListener;
106111

112+
public PlayerBean getPlayerBean() {
113+
return playerBean;
114+
}
115+
116+
public AcodePlayerView setPlayerBean(PlayerBean playerBean) {
117+
this.playerBean = playerBean;
118+
return this;
119+
}
120+
121+
public AcodePlayerView setAcodePlayerStateListener(AcodePlayerStateListener acodePlayerStateListener) {
122+
this.acodePlayerStateListener = acodePlayerStateListener;
123+
return this;
124+
}
107125

108126
public AcodePlayerView(@NonNull Context context) {
109-
super(context);
110-
this.context = context;
111-
initView();
127+
this(context, null);
112128
}
113129

114130
public AcodePlayerView(@NonNull Context context, @Nullable AttributeSet attrs) {
115-
super(context, attrs);
116-
this.context = context;
117-
initView();
131+
this(context, attrs, 0);
118132
}
119133

120134
public AcodePlayerView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
@@ -125,13 +139,12 @@ public AcodePlayerView(@NonNull Context context, @Nullable AttributeSet attrs, i
125139

126140
@SuppressLint("WrongViewCast")
127141
private void initView() {
128-
view = LayoutInflater.from(context).inflate(R.layout.acode_player_view, null);
142+
view = LayoutInflater.from(context).inflate(R.layout.acode_player_view, this);
129143
initNet();
130144
initPlayerView();
131145
initSystemSetView();
132146
initPlayerProgressView();
133147
initNetworkView();
134-
this.addView(view);
135148
initListener();
136149
initData();
137150
}
@@ -243,6 +256,9 @@ public void onReady() {
243256
@Override
244257
public void onPlayering(PlayerBean pb) {
245258
Log.d("post", "播放中");
259+
if (acodePlayerStateListener!=null){
260+
acodePlayerStateListener.playerRuning(pb);
261+
}
246262
playerBean = pb;
247263
handler.sendEmptyMessage(Config.UPDATE_CURRNET_UI);
248264
}
@@ -331,14 +347,15 @@ public void readyPlayer(PlayerBean playerBean) {
331347
//设置标题
332348
tv_title.setText(playerBean.getInfo());
333349
}
350+
334351
/**
335352
* 准备播放
336353
*
337354
* @param playerBean 播放的实体
338355
* 设置播放路线
339356
*/
340-
public void readyPlayer(PlayerBean playerBean,int line) {
341-
player.readyPlayer(playerBean,line);
357+
public void readyPlayer(PlayerBean playerBean, String line) {
358+
player.readyPlayer(playerBean, line);
342359
this.playerBean = playerBean;
343360
//设置标题
344361
tv_title.setText(playerBean.getInfo());
@@ -506,6 +523,7 @@ public void onClick(View view) {
506523
((Activity) context).setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
507524
return;
508525
}
526+
((Activity) context).finish();
509527

510528
} else if (i == R.id.rl_controller_view) {
511529
//整个播放器的控制层view
@@ -522,13 +540,13 @@ public void onClick(View view) {
522540
rl_controller_view.setVisibility(VISIBLE);
523541
} else if (i == R.id.tv_super_clear) {
524542
pausePlayer();
525-
readyPlayer(playerBean,Config.SUPER_CLEAR);
543+
readyPlayer(playerBean, Config.SUPER_CLEAR);
526544
} else if (i == R.id.tv_hight_clear) {
527545
pausePlayer();
528-
readyPlayer(playerBean,Config.HIGHT_CLEAR);
546+
readyPlayer(playerBean, Config.HIGHT_CLEAR);
529547
} else if (i == R.id.tv_standard_clear) {
530548
pausePlayer();
531-
readyPlayer(playerBean,Config.STARTMD_CLEAR);
549+
readyPlayer(playerBean, Config.STARTMD_CLEAR);
532550
}
533551
}
534552

@@ -551,7 +569,7 @@ private void screenFull() {
551569
//竖屏播放
552570
private void screenVertical() {
553571
((Activity) context).getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); //显示状态栏
554-
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
572+
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
555573
params.height = DimenUtils.dip2px(context, 300);
556574
rl_player_view.setLayoutParams(params);
557575
}
@@ -564,6 +582,7 @@ public boolean onKeyDown(int keyCode, KeyEvent event) {
564582
((Activity) context).setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
565583
return true;
566584
}
585+
((Activity) context).finish();
567586
}
568587
return false;
569588
}

acode_player_lib/src/main/java/com/acode/player/lib/bean/PlayerBean.java

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,21 @@
11
package com.acode.player.lib.bean;
22

3-
import android.net.Uri;
4-
53
import java.io.Serializable;
64
import java.util.ArrayList;
5+
import java.util.Observable;
76

87
/**
98
* user:yangtao
109
* date:2018/4/271150
1110
1211
* introduce:视频实体
1312
*/
14-
public class PlayerBean implements Serializable {
13+
public class PlayerBean extends Observable implements Serializable {
1514
//视频的uri集合
16-
private ArrayList<Uri> uris;
15+
private ArrayList<String> playerUrls;
1716

1817
//线路集合
19-
private ArrayList<Integer> lineNames;
18+
private ArrayList<String> lineNames;
2019

2120
//视频名称
2221
private String title;
@@ -46,11 +45,14 @@ public class PlayerBean implements Serializable {
4645
//当前视频的缓冲进度
4746
private int bufferedPercentage;
4847

48+
public PlayerBean() {
49+
}
50+
4951
@Override
5052
public String toString() {
5153
return "PlayerBean{" +
5254
", title='" + title + '\'' +
53-
", uris='" + uris.toString() + '\'' +
55+
", playerUrls='" + playerUrls.toString() + '\'' +
5456
", lineNames='" + lineNames.toString() + '\'' +
5557
", info='" + info + '\'' +
5658
", imgUrl='" + imgUrl + '\'' +
@@ -64,22 +66,21 @@ public String toString() {
6466
'}';
6567
}
6668

67-
68-
public ArrayList<Integer> getLineNames() {
69+
public ArrayList<String> getLineNames() {
6970
return lineNames;
7071
}
7172

72-
public PlayerBean setLineNames(ArrayList<Integer> lineNames) {
73+
public PlayerBean setLineNames(ArrayList<String> lineNames) {
7374
this.lineNames = lineNames;
7475
return this;
7576
}
7677

77-
public ArrayList<Uri> getUris() {
78-
return uris;
78+
public ArrayList<String> getPlayerUrls() {
79+
return playerUrls;
7980
}
8081

81-
public PlayerBean setUris(ArrayList<Uri> uris) {
82-
this.uris = uris;
82+
public PlayerBean setPlayerUrls(ArrayList<String> playerUrls) {
83+
this.playerUrls = playerUrls;
8384
return this;
8485
}
8586

acode_player_lib/src/main/java/com/acode/player/lib/data/Config.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ public class Config {
1414
//更新当前时间和进度条
1515
public static final int UPDATE_CURRNET_UI = 1000;
1616
//超清
17-
public static final int SUPER_CLEAR = 1080;
17+
public static final String SUPER_CLEAR = "超清";
1818
//高清
19-
public static final int HIGHT_CLEAR = 720;
19+
public static final String HIGHT_CLEAR = "高清";
2020
//标清
21-
public static final int STARTMD_CLEAR = 560;
21+
public static final String STARTMD_CLEAR = "标清";
2222

2323
}

acode_player_lib/src/main/java/com/acode/player/lib/data/Data.java

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -25,57 +25,57 @@ public static ArrayList<PlayerBean> getPlayerBeans() {
2525
if (i == 0) {
2626
playerBean.setTitle("小神龙");
2727
playerBean.setInfo("小神龙谈父亲");
28-
ArrayList<Uri> uris = new ArrayList<>();
29-
uris.add(Uri.parse("http://oif1jvh5f.bkt.clouddn.com/tmp.mp4"));
30-
uris.add(Uri.parse("http://oif1jvh5f.bkt.clouddn.com/tmp.mp4"));
31-
uris.add(Uri.parse("http://oif1jvh5f.bkt.clouddn.com/tmp.mp4"));
32-
playerBean.setUris(uris);
33-
ArrayList<Integer> linsNames = new ArrayList<>();
34-
linsNames.add(1080);
35-
linsNames.add(720);
36-
linsNames.add(560);
28+
ArrayList<String> uris = new ArrayList<>();
29+
uris.add("http://oif1jvh5f.bkt.clouddn.com/tmp.mp4");
30+
uris.add("http://oif1jvh5f.bkt.clouddn.com/tmp.mp4");
31+
uris.add("http://oif1jvh5f.bkt.clouddn.com/tmp.mp4");
32+
playerBean.setPlayerUrls(uris);
33+
ArrayList<String> linsNames = new ArrayList<>();
34+
linsNames.add("超清");
35+
linsNames.add("高清");
36+
linsNames.add("标清");
3737
playerBean.setLineNames(linsNames);
3838
}
3939
if (i == 1) {
4040
playerBean.setTitle("烟火里的尘埃");
4141
playerBean.setInfo("不是华晨宇唱的烟火里的尘埃");
42-
ArrayList<Uri> uris = new ArrayList<>();
43-
uris.add(Uri.parse("http://oif1jvh5f.bkt.clouddn.com/CFNetworkDownload_t3QJVZ.mp4"));
44-
uris.add(Uri.parse("http://oif1jvh5f.bkt.clouddn.com/CFNetworkDownload_t3QJVZ.mp4"));
45-
uris.add(Uri.parse("http://oif1jvh5f.bkt.clouddn.com/CFNetworkDownload_t3QJVZ.mp4"));
46-
playerBean.setUris(uris);
47-
ArrayList<Integer> linsNames = new ArrayList<>();
48-
linsNames.add(1080);
49-
linsNames.add(720);
50-
linsNames.add(560);
42+
ArrayList<String> uris = new ArrayList<>();
43+
uris.add("http://oif1jvh5f.bkt.clouddn.com/CFNetworkDownload_t3QJVZ.mp4");
44+
uris.add("http://oif1jvh5f.bkt.clouddn.com/CFNetworkDownload_t3QJVZ.mp4");
45+
uris.add("http://oif1jvh5f.bkt.clouddn.com/CFNetworkDownload_t3QJVZ.mp4");
46+
playerBean.setPlayerUrls(uris);
47+
ArrayList<String> linsNames = new ArrayList<>();
48+
linsNames.add("超清");
49+
linsNames.add("高清");
50+
linsNames.add("标清");
5151
playerBean.setLineNames(linsNames);
5252
}
5353
if (i == 2) {
5454
playerBean.setTitle("螳螂拳");
5555
playerBean.setInfo("热血像那红日光");
56-
ArrayList<Uri> uris = new ArrayList<>();
57-
uris.add(Uri.parse("http://oif1jvh5f.bkt.clouddn.com/CFNetworkDownload_5Vkbz0.mp4"));
58-
uris.add(Uri.parse("http://oif1jvh5f.bkt.clouddn.com/CFNetworkDownload_5Vkbz0.mp4"));
59-
uris.add(Uri.parse("http://oif1jvh5f.bkt.clouddn.com/CFNetworkDownload_5Vkbz0.mp4"));
60-
playerBean.setUris(uris);
61-
ArrayList<Integer> linsNames = new ArrayList<>();
62-
linsNames.add(1080);
63-
linsNames.add(720);
64-
linsNames.add(560);
56+
ArrayList<String> uris = new ArrayList<>();
57+
uris.add("http://oif1jvh5f.bkt.clouddn.com/CFNetworkDownload_5Vkbz0.mp4");
58+
uris.add("http://oif1jvh5f.bkt.clouddn.com/CFNetworkDownload_5Vkbz0.mp4");
59+
uris.add("http://oif1jvh5f.bkt.clouddn.com/CFNetworkDownload_5Vkbz0.mp4");
60+
playerBean.setPlayerUrls(uris);
61+
ArrayList<String> linsNames = new ArrayList<>();
62+
linsNames.add("超清");
63+
linsNames.add("高清");
64+
linsNames.add("标清");
6565
playerBean.setLineNames(linsNames);
6666
}
6767
if (i == 3) {
6868
playerBean.setTitle("六一儿童节快乐");
6969
playerBean.setInfo("六一儿童节快乐");
70-
ArrayList<Uri> uris = new ArrayList<>();
71-
uris.add(Uri.parse("http://mp4.vjshi.com/2015-05-11/1431320221859_786.mp4"));
72-
uris.add(Uri.parse("http://mp4.vjshi.com/2016-10-21/84bafe60ef0af95a5292f66b9f692504.mp4"));
73-
uris.add(Uri.parse("http://mp4.vjshi.com/2017-04-14/933db6540f53dd38974b4446388fb928.mp4"));
74-
playerBean.setUris(uris);
75-
ArrayList<Integer> linsNames = new ArrayList<>();
76-
linsNames.add(1080);
77-
linsNames.add(720);
78-
linsNames.add(560);
70+
ArrayList<String> uris = new ArrayList<>();
71+
uris.add("http://mp4.vjshi.com/2015-05-11/1431320221859_786.mp4");
72+
uris.add("http://mp4.vjshi.com/2016-10-21/84bafe60ef0af95a5292f66b9f692504.mp4");
73+
uris.add("http://mp4.vjshi.com/2017-04-14/933db6540f53dd38974b4446388fb928.mp4");
74+
playerBean.setPlayerUrls(uris);
75+
ArrayList<String> linsNames = new ArrayList<>();
76+
linsNames.add("超清");
77+
linsNames.add("高清");
78+
linsNames.add("标清");
7979
playerBean.setLineNames(linsNames);
8080
}
8181
playerBeans.add(playerBean);
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.acode.player.lib.listener;
2+
3+
/**
4+
* user:yangtao
5+
* date:2018/6/71138
6+
7+
* introduce:返回
8+
*/
9+
public interface AcodePlayerBackListener {
10+
void onBack();
11+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.acode.player.lib.listener;
2+
3+
/**
4+
* user:yangtao
5+
* date:2018/6/71138
6+
7+
* introduce:切换屏幕横竖屏
8+
*/
9+
public interface AcodePlayerOrientationListener {
10+
void onScrreenOrientation(int orientation);
11+
}

acode_player_lib/src/main/java/com/acode/player/lib/tablayout/DBaseFragment.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import android.widget.FrameLayout;
1010

1111
import com.acode.player.R;
12+
import com.acode.player.lib.utils.Dlog;
1213

1314
/**
1415
* user:yangtao
@@ -26,6 +27,7 @@ public abstract class DBaseFragment extends Fragment {
2627
//初始化data
2728
public abstract void initData();
2829

30+
2931
public View centerView;
3032

3133
private FrameLayout base_fl_fram_title;
@@ -39,6 +41,7 @@ public abstract class DBaseFragment extends Fragment {
3941
@Nullable
4042
@Override
4143
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
44+
Dlog.i(DBaseFragment.class,"onCreateView---------");
4245
centerView = LayoutInflater.from(getContext()).inflate(R.layout.base_fragment_res, null);
4346
base_fl_fram_title = (FrameLayout) centerView.findViewById(R.id.base_fl_fram_title);
4447
base_fl_fram_center = (FrameLayout) centerView.findViewById(R.id.base_fl_fram_center);

0 commit comments

Comments
 (0)