这里的视频播放使用的是VideoView来进行播放,主要功能就是播放、暂停、前一个视频、后一个视频等功能。
(1) Xml布局实现
<LinearLayout
android:id="@+id/viewQushi"
android:clickable="true"
android:layout_width="match_parent"
android:layout_height="220dp"
android:layout_marginTop="20dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:gravity="center_horizontal"
android:orientation="vertical">
<VideoView
android:id="@+id/video"
android:layout_width="match_parent"
android:layout_height="150dp"
/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="30dp"
android:layout_marginTop="2dip"
android:visibility="gone"
android:layout_marginBottom="2dip">
<TextView
android:id="@+id/has_played"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="00:00:00"
/>
<SeekBar
android:id="@+id/seekbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="15dip"
android:paddingRight="5dip"
android:layout_marginLeft="10dip"
android:layout_marginRight="10dip"
android:layout_weight="1"
/>
<TextView
android:id="@+id/duration"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="00:00:00"
/>
</LinearLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_marginTop="5dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:background="#D7EFF2">
<com.sn.controlers.SNImageView
android:id="@+id/proVideo"
android:layout_width="18dp"
android:layout_height="18dp"
android:scaleType="fitXY"
android:layout_marginLeft="40dp"
android:layout_alignParentLeft="true"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:adjustViewBounds="true"
app:image="@drawable/pro"
/>
<com.sn.controlers.SNImageView
android:id="@+id/playVideo"
android:layout_width="18dp"
android:layout_height="18dp"
android:scaleType="fitXY"
android:layout_centerInParent="true"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:adjustViewBounds="true"
/>
<com.sn.controlers.SNImageView
android:id="@+id/nextVideo"
android:layout_width="18dp"
android:layout_height="18dp"
android:scaleType="fitXY"
android:layout_marginRight="40dp"
android:layout_alignParentRight="true"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:adjustViewBounds="true"
app:image="@drawable/next"
/>
</RelativeLayout>
</LinearLayout>
(2) Java代码实现
public class
VideoDetailsActivity extends
SmartActivity{
public static final String
STRING_VIDEO_DETAILS="STRING_VIDEO_DETAILS";
SNManager $;
VideoView video;
ImageView proVideo,playVideo,nextVideo;
int flag=0;
int proTag=0;
int currentPosition=0;
lianyungang lianyungang;
String uri =
"";
ImageView tv_head_left,tv_head_img,right_image;
@Override
public void
onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video_details);
$=SNManager.instence(this);
initTitle();
video = (VideoView) findViewById(R.id.video);
lianyungang=getLianyungangVideoName();
uri =
"android.resource://" +
this.getPackageName() +
"/" ;
proVideo=(ImageView)this.findViewById(R.id.proVideo);
playVideo=(ImageView)this.findViewById(R.id.playVideo);
playVideo.setBackgroundResource(R.drawable.pause);
nextVideo=(ImageView)this.findViewById(R.id.nextVideo);
playVideoViewVideo(setVideoName());
playVideo.setOnClickListener(new
View.OnClickListener() {
@Override
public void
onClick(View v) {
initPlayClickData();
}
});
proTag=Integer.parseInt(lianyungang.getVideoTag());
proVideo.setOnClickListener(new
View.OnClickListener() {
@Override
public void
onClick(View v) {
if(proTag==0){
proTag=7;
}
ProPlay(proTag--);
currentPosition=proTag;
}
});
nextVideo.setOnClickListener(new
View.OnClickListener() {
@Override
public void
onClick(View v) {
if(proTag==7){
proTag=0;
}
NextPlay(proTag++);
currentPosition=proTag;
}
});
}
public void initTitle(){
tv_head_left=(ImageView)this.findViewById(R.id.tv_head_left);
tv_head_img=(ImageView)this.findViewById(R.id.tv_head_img);
right_image=(ImageView)this.findViewById(R.id.right_image);
tv_head_left.setOnClickListener(new
View.OnClickListener() {
@Override
public void
onClick(View v) {
$.startActivity(VideoActivity.class,8);
//gotoActivity(VideoActivity.class,true);
}
});
tv_head_img.setBackgroundResource(R.drawable.video_shaddow);
right_image.setOnClickListener(new
View.OnClickListener() {
@Override
public void
onClick(View v) {
initMenu();
}
});
}
private static final int HAIYANG_YINGXIANG
= 0;
private static final int HAIYANG_YINXIANG
= 1;
private static final int HAIYANG_SHENGWU
= 2;
private static final int HAIYANG_ZIYUANKU
= 3;
private static final int HAIYANG_LENGZHISHI
= 4;
private static final int HAIYANG_HAIYU
= 5;
private MyPopWindow
mMenu;
private void initMenu() {
mMenu =
new MyPopWindow(getBaseContext());
//mMenu.addItem(str, HAIYANG_YINGXIANG);
mMenu.addItem("海洋印象",
HAIYANG_YINXIANG);
mMenu.addItem("海洋生物",
HAIYANG_SHENGWU);
mMenu.addItem("本地资源库",
HAIYANG_ZIYUANKU);
mMenu.addItem("海洋冷知识",
HAIYANG_LENGZHISHI);
mMenu.addItem("连云港海域",
HAIYANG_HAIYU);
mMenu.setOnItemSelectedListener(new
PopMenu.OnItemSelectedListener() {
@Override
public void
selected(View view, PopMenu.Item item, int
position) {
switch (item.id) {
case HAIYANG_YINXIANG:
gotoActivity(PictureActivity.class,true);
break;
case HAIYANG_SHENGWU:
gotoActivity(ClassActivity.class,true);
break;
case HAIYANG_ZIYUANKU:
gotoActivity(LocalActivity.class,true);
break;
case HAIYANG_LENGZHISHI:
gotoActivity(KnlowledgeActivity.class,true);
break;
case HAIYANG_HAIYU:
gotoActivity(SeaActivity.class,true);
break;
}
}
});
mMenu.showAsDropDown(right_image);
}
public void initPlayClickData(){
if(flag==1){
playVideo.setBackgroundResource(R.drawable.pause);
// playVideoViewVideo(setVideoName());
startVideo();
flag=0;
}else if(flag==0){
playVideo.setBackgroundResource(R.drawable.play);
stopVideo();
flag=1;
}
}
public String setVideoName(){
String []videoProPath={uri+R.raw.fish_mp4,uri+ R.raw.jiake_mp4,uri+
R.raw.ruanti_mp4,uri+R.raw.fish_mp4,uri+
R.raw.jiake_mp4,uri+ R.raw.ruanti_mp4,uri+R.raw.fish_mp4,uri+
R.raw.jiake_mp4};
if(currentPosition==0){
currentPosition=Integer.parseInt(lianyungang.getVideoTag());
}
String videoPath=videoProPath[currentPosition];
return videoPath;
}
public void NextPlay(int
position){
String []videoProPath={uri+R.raw.fish_mp4,uri+ R.raw.jiake_mp4,uri+
R.raw.ruanti_mp4,uri+R.raw.fish_mp4,uri+
R.raw.jiake_mp4,uri+ R.raw.ruanti_mp4,uri+R.raw.fish_mp4,uri+
R.raw.jiake_mp4};
Animation alphaAnimation= AnimationUtils.loadAnimation(VideoDetailsActivity.this, R.anim.alpha_anim_true);
playVideo.setBackgroundResource(R.drawable.pause);
playVideo.startAnimation(alphaAnimation);
flag=0;
playVideoViewVideo(videoProPath[++position]);
}
public void ProPlay(int
position){
String []videoProPath={uri+R.raw.fish_mp4,uri+ R.raw.jiake_mp4,uri+
R.raw.ruanti_mp4,uri+R.raw.fish_mp4,uri+
R.raw.jiake_mp4,uri+ R.raw.ruanti_mp4,uri+R.raw.fish_mp4,uri+
R.raw.jiake_mp4};
Animation alphaAnimation= AnimationUtils.loadAnimation(VideoDetailsActivity.this, R.anim.alpha_anim_true);
playVideo.setBackgroundResource(R.drawable.pause);
playVideo.startAnimation(alphaAnimation);
flag=0;
playVideoViewVideo(videoProPath[--position]);
}
public void playVideoViewVideo(String videoUri) {
video.setVideoURI(Uri.parse(videoUri));
video.start();
video.setOnCompletionListener(new
MediaPlayer.OnCompletionListener() {
@Override
public void
onCompletion(MediaPlayer mp) {
$.toast("视频播放完毕",
0);
}
});
}
public void stopVideo(){
video.pause();
}
public void startVideo(){
video.start();
}
public lianyungang getLianyungangVideoName(){
return (lianyungang)
$.getActivity().getIntent().getSerializableExtra(VideoDetailsActivity.STRING_VIDEO_DETAILS);
}
}