android动态切换图片,android 视频和图片切换并进行自动轮播

刚入android没多久,遇到的比较郁闷的问题就是子线程主线程的问题,更改UI界面,本想做一个图片的轮播但是比较简单,然后就试试实现视频跟图片切换播放进行不停的循环播放。也用过不少控件,但是知其然不知其所以然,后来自己写了一段来实现图片视频互相切换轮播。在这写下一篇博客也当自己学习的过程.希望大家多多指教希望

下面代码:

xml

xml version="1.0"encoding="utf-8"?>xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/RelativeLayout1"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"tools:context="com.lishu.handler.MainActivity">android:id="@+id/imgchange"android:layout_width="500px"android:layout_height="500px"/>android:id="@+id/videoView"android:layout_width="match_parent"android:layout_height="wrap_content"android:visibility="gone"/>

在android5.1版本中会出现一定的错误。

07-27 03:08:58.413 3450-3475/? A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0xe0 in tid 3475 (Binder_2)

07-27 03:08:59.537 3528-3546/? A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0xe0 in tid 3546 (Binder_2)

[ 07-27 03:08:59.540  1166: 1166 E/         ]

invalid crash request of size 0 (from pid=3528 uid=0)

而在android高级一点的版本就没有这个问题 。也不知道是什么情况。。。 此贴算是抛砖引玉贴。

MainActivity.java

packagecom.lishu.handler;importandroid.app.Activity;importandroid.media.MediaPlayer;importandroid.net.Uri;importandroid.os.Bundle;importandroid.os.Handler;importandroid.os.Message;importandroid.util.Log;importandroid.view.View;importandroid.widget.ImageView;importandroid.widget.VideoView;importjava.util.Timer;importjava.util.TimerTask;import staticandroid.content.ContentValues.TAG;public classMainActivity extendsActivity {

privateImageView imgchange;privateTimer timer= newTimer();privateTimerTask task;privateVideoView videoView;private intflag= 0;//定义切换的图片的数组idintimgids[] = new int[]{R.drawable.one,R.drawable.two,R.drawable.three,R.drawable.four,R.drawable.five,};intimgstart= 0;privateHandler myHandler= newHandler() {

@Override//重写handleMessage方法,根据msg中what的值判断是否执行后续操作public voidhandleMessage(Message msg) {

if(msg.what== 0) {

Log.d("数据",String.valueOf(imgstart));imgchange.setImageResource(imgids[imgstart++]);}else if(msg.what== 1){

flag= 2;//首先要将这个标签换掉 不然会出现因为定时器的原因导致视频播放不全的问题。Log.d("测试",String.valueOf(flag));imgchange.setVisibility(View.GONE);videoView.setVisibility(View.VISIBLE);initData();//播放视频的方法}else{

Log.d("测试","啥我也不干 空定时器");}

}

};@Overrideprotected voidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);imgchange= (ImageView) findViewById(R.id.imgchange);videoView= findViewById(R.id.videoView);start();}

/**选择播放图片还是播放视频*/public voidstart() {

task= newTimerTask() {

@Overridepublic voidrun() {

if(imgstart< imgids.length) {

Log.d(TAG,"length"+imgids.length);Message msg = Message.obtain();msg.what= 0;myHandler.sendEmptyMessage(flag);Log.d(TAG,"flag"+flag);} else{

if(flag== 2){

myHandler.sendEmptyMessage(flag);//啥也不干}else{

flag= 1;Log.d("测试",String.valueOf(flag));myHandler.sendEmptyMessage(flag);//播放视频}

}

}

};//定时器开始执行timer.schedule(task,0,5000);}

//播放视频private voidinitData() {

String uri = "android.resource://"+ getPackageName() + "/"+ R.raw.b;videoView.setVideoURI(Uri.parse(uri));//开始播放videoView.start();//播放完成回调videoView.setOnCompletionListener(newMyPlayerOnCompletionListener());//防止出现视频播放错误的问题videoView.setOnErrorListener(videoErrorListener);}

//防出现无法播放此视频窗口publicMediaPlayer.OnErrorListener videoErrorListener= newMediaPlayer.OnErrorListener() {

@Overridepublic booleanonError(MediaPlayer mp, intwhat, intextra) {

return true;}

};//回调方法private classMyPlayerOnCompletionListener implementsMediaPlayer.OnCompletionListener {

@Overridepublic voidonCompletion(MediaPlayer mp) {

/**再次启动图片的轮播,设置了imgstart为初始值*/

/**多个视频可以在这进行切换,进行一次判断加入还有视频就播放,没有就走下面这一段*/imgstart= 0;flag= 0;imgchange.setVisibility(View.VISIBLE);videoView.setVisibility(View.GONE);}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值