package com.example.gaowen38.view.activity;
import android.app.ActivityOptions;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.transition.Transition;
import android.transition.TransitionInflater;
import android.view.View;
import android.view.Window;
import android.widget.TextView;
import android.widget.Toast;
import com.example.gaowen38.Base.MyBaseActivity;
import com.example.gaowen38.R;
import com.example.gaowen38.data.bean.DetailOfTheActivityBean;
import com.example.gaowen38.data.bean.OpeningTheAdvertisingBean;
import com.example.gaowen38.data.remote.retrofit.DataService;
import com.example.gaowen38.exception.ExceptionManager;
import com.example.gaowen38.utils.CommunUtils;
import com.example.gaowen38.utils.SPUtils;
import com.example.gaowen38.utils.SharePreferenceUtils;
import com.example.gaowen38.view.MainActivity;
import com.example.gaowen38.view.MyView.CustomVideoView;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import butterknife.Unbinder;
import io.reactivex.Observable;
import io.reactivex.ObservableSource;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Function;
import io.reactivex.schedulers.Schedulers;
/**
* @作者 红鼻子小黑
* @姓名 赵鑫乐
* @创建日期 2019/5/14 14:33
* 启动页
*/
public class SplashActivity extends MyBaseActivity {
int time = 6;
@BindView(R.id.splash_daojishi)
TextView splashDaojishi;
@BindView(R.id.shipin_ceshis)
CustomVideoView shipinCeshi;
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 0:
if (time <= 1) {
Boolean formGobalSp = SharePreferenceUtils.getFormGobalSp(SplashActivity.this, String.valueOf(R.string.qidongye), true);
if (formGobalSp) {
SharePreferenceUtils.saveToGlobalSp(SplashActivity.this,
String.valueOf(R.string.qidongye), false);
startActivity(new Intent(SplashActivity.this, WelcomeGuideActivity.class));
finish();
} else {
startActivity(new Intent(SplashActivity.this, LoginActivity.class));
finish();
}
} else {
time--;
splashDaojishi.setText("跳过 " + time);
Message message = new Message();
message.what = 0;
handler.sendMessageDelayed(message, 1000);
}
}
}
};
private Unbinder bind;
private int currentPosition;
private CustomVideoView shipinCeshi1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
if (Build.VERSION.SDK_INT >= 21) {
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
getWindow().setStatusBarColor(Color.TRANSPARENT);
}
bind = ButterKnife.bind(this);
handler.sendEmptyMessage(0);
shipinCeshi1 = findViewById(R.id.shipin_ceshis);
//播放请求,进行播放
openingtheadvertising();
}
//视屏广告请求
//详情
public void openingtheadvertising() {
//解析
Observable<OpeningTheAdvertisingBean> getopeningtheadvertising = DataService.getService(this, false).getopeningtheadvertising("");
getopeningtheadvertising.flatMap(new Function<OpeningTheAdvertisingBean, ObservableSource<OpeningTheAdvertisingBean>>() {
@Override
public ObservableSource<OpeningTheAdvertisingBean> apply(OpeningTheAdvertisingBean openingTheAdvertisingBean) throws Exception {
//判断网络请求是否成功
//判断网络请求成功后是否有数据
if (openingTheAdvertisingBean.getState() == 0) {
if (openingTheAdvertisingBean.getData() != null) {
//返回数据
return Observable.just(openingTheAdvertisingBean);
}
}
//网络请求错误处理,改成message
return Observable.error(ExceptionManager.buildServerErrorMessage(openingTheAdvertisingBean.getState(), openingTheAdvertisingBean.getMessage()));
}
}).subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<OpeningTheAdvertisingBean>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(OpeningTheAdvertisingBean openingTheAdvertisingBean) {
setopeningtheadvertising(openingTheAdvertisingBean);
}
@Override
public void onError(Throwable e) {
Toast.makeText(SplashActivity.this, "" + e.getMessage(), Toast.LENGTH_SHORT).show();
}
@Override
public void onComplete() {
}
});
}
//强求成功
private void setopeningtheadvertising(OpeningTheAdvertisingBean openingTheAdvertisingBean) {
//"android.resource://" + getPackageName() + "/" + R.raw.duanshipin
//设置播放加载路径
if(openingTheAdvertisingBean.getData().getAdUrl()!=null){
Uri parse = Uri.parse( openingTheAdvertisingBean.getData().getAdUrl());
shipinCeshi.setVideoURI(parse);
//播放
shipinCeshi.start();
//循环播放
shipinCeshi.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
// imageView.setVisibility(View.GONE);
mediaPlayer.setLooping(true);
mediaPlayer.setOnInfoListener(new MediaPlayer.OnInfoListener() {
@Override
public boolean onInfo(MediaPlayer mediaPlayer, int what, int i1) {
//开始播放时,就把显示第一帧的ImageView gone 掉
if (what == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START) {
// video started; hide the placeholder.
// shipinSuoluetu.setVisibility(View.GONE);
//videoView.seekTo(0);
return true;
}
return false;
}
});
}
});
}
}
//倒计时跳过
@OnClick(R.id.splash_daojishi)
public void onViewClicked() {
time = 1;
}
@Override
protected void onPause() {
super.onPause();
//记录播放的progress,避免黑屏
shipinCeshi.pause();
currentPosition = shipinCeshi.getCurrentPosition();
}
@Override
protected void onResume() {
super.onResume();
if(currentPosition != 0) {
shipinCeshi.seekTo(currentPosition);
shipinCeshi.start();
}
// playProgress = videoView.getCurrentPosition();
}
@Override
protected void onDestroy() {
super.onDestroy();
bind.unbind();
}
}
CustomVideoView 播放视频用这个组件 上面有方法
package com.example.gaowen38.view.MyView;
import android.content.Context;
import android.media.MediaPlayer;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.widget.VideoView;
public class CustomVideoView extends VideoView{
public CustomVideoView(Context context) {
super(context);
}
public CustomVideoView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomVideoView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
//我们重新计算高度
int width = getDefaultSize(0, widthMeasureSpec);
int height = getDefaultSize(0, heightMeasureSpec);
setMeasuredDimension(width, height);
}
@Override
public void setOnPreparedListener(MediaPlayer.OnPreparedListener l) {
super.setOnPreparedListener(l);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
return super.onKeyDown(keyCode, event);
}
}