这里的视频播放使用的是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);
}
}