diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MogoSnapshotSetData.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MogoSnapshotSetData.java index 225b38d90c..e0c65c2ff9 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MogoSnapshotSetData.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MogoSnapshotSetData.java @@ -30,6 +30,9 @@ class MogoSnapshotSetData implements Parcelable { //红绿灯 private CloudRoadData trafficLight; + //路边摄像头 + private CloudRoadData camera; + // 自车速度 本地添加 public double curSpeed = 0.0; diff --git a/modules/mogo-module-media/src/main/java/com/mogo/module/media/widget/PercentageRingView.java b/modules/mogo-module-media/src/main/java/com/mogo/module/media/widget/PercentageRingView.java new file mode 100755 index 0000000000..8cb65969ab --- /dev/null +++ b/modules/mogo-module-media/src/main/java/com/mogo/module/media/widget/PercentageRingView.java @@ -0,0 +1,165 @@ +package com.mogo.module.media.widget; + +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.Paint.Align; +import android.graphics.RectF; +import android.util.AttributeSet; +import android.view.View; + +import com.mogo.module.media.R; + +/** + * 环形进度条 + */ +public class PercentageRingView extends View { + private Paint mCirclePaint; + private Paint mTextPaint; + private Paint mArcPaint; + private int mCircleX; + private int mCircleY; + private float mCurrentAngle; + private RectF mArcRectF; + private float mStartSweepValue; + private float mTargetPercent; + private float mCurrentPercent; + + private int mRadius; + private int mCircleBackground; + private int mRingColor; + private int mTextSize; + private int mTextColor; + + + public PercentageRingView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + init(context); + } + + public PercentageRingView(Context context, AttributeSet attrs) { + super(context, attrs); + //自定义属性 values/attr + TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.PercentageRing); + //中间圆的背景颜色 默认为浅紫色 + mCircleBackground = typedArray.getColor(R.styleable.PercentageRing_circleBackground, 0xffafb4db); + //外圆环的颜色 默认为深紫色 + mRingColor = typedArray.getColor(R.styleable.PercentageRing_ringColor, 0xff6950a1); + //中间圆的半径 默认为60 + mRadius = typedArray.getInt(R.styleable.PercentageRing_radius, 60); + //字体颜色 默认为白色 + mTextColor = typedArray.getColor(R.styleable.PercentageRing_textColor, 0xffffffff); + //最后一定要调用这个 释放掉TypedArray + typedArray.recycle(); + //初始化数据 + init(context); + } + + public PercentageRingView(Context context) { + super(context); + init(context); + } + + private void init(Context context) { + //圆环开始角度 -90° 正北方向 + mStartSweepValue = -90; + //当前角度 + mCurrentAngle = 0; + //当前百分比 + mCurrentPercent = 0; + //设置中心园的画笔 + mCirclePaint = new Paint(); + mCirclePaint.setAntiAlias(true); + mCirclePaint.setColor(mCircleBackground); + mCirclePaint.setStyle(Paint.Style.FILL); + //设置文字的画笔 + mTextPaint = new Paint(); + mTextPaint.setColor(mTextColor); + mTextPaint.setAntiAlias(true); + mTextPaint.setStyle(Paint.Style.FILL); + mTextPaint.setStrokeWidth((float) (0.025 * mRadius)); + mTextPaint.setTextSize(mRadius / 2); + mTextPaint.setTextAlign(Align.CENTER); + //设置外圆环的画笔 + mArcPaint = new Paint(); + mArcPaint.setAntiAlias(true); + mArcPaint.setColor(mRingColor); + mArcPaint.setStyle(Paint.Style.STROKE); +// mArcPaint.setStrokeWidth((float) (0.075 * mRadius)); + mArcPaint.setStrokeWidth((float) (0.17 * mRadius)); + //获得文字的字号 因为要设置文字在圆的中心位置 + mTextSize = (int) mTextPaint.getTextSize(); + } + + //主要是测量wrap_content时候的宽和高,因为宽高一样,只需要测量一次宽即可,高等于宽 + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + setMeasuredDimension(measure(widthMeasureSpec), measure(widthMeasureSpec)); + //设置圆心坐标 + mCircleX = getMeasuredWidth() / 2; + mCircleY = getMeasuredHeight() / 2; + //如果半径大于圆心横坐标,需要手动缩小半径的值,否则就画到外面去了 + if (mRadius > mCircleX) { + //设置半径大小为圆心横坐标到原点的距离 + mRadius = mCircleX; + mRadius = (int) (mCircleX - 0.075 * mRadius); + //因为半径改变了,所以要重新设置一下字体宽度 + mTextPaint.setStrokeWidth((float) (0.025 * mRadius)); + //重新设置字号 + mTextPaint.setTextSize(mRadius / 2); + //重新设置外圆环宽度 +// mArcPaint.setStrokeWidth((float) (0.075 * mRadius)); + mArcPaint.setStrokeWidth((float) (0.17 * mRadius)); + //重新获得字号大小 + mTextSize = (int) mTextPaint.getTextSize(); + } + //画中心园的外接矩形,用来画圆环用 + mArcRectF = new RectF(mCircleX - mRadius, mCircleY - mRadius, mCircleX + mRadius, mCircleY + mRadius); + } + + //当wrap_content的时候,view的大小根据半径大小改变,但最大不会超过屏幕 + private int measure(int measureSpec) { + int result = 0; + int specMode = MeasureSpec.getMode(measureSpec); + int specSize = MeasureSpec.getSize(measureSpec); + if (specMode == MeasureSpec.EXACTLY) { + result = specSize; + } else { + result = (int) (1.075 * mRadius * 2); + if (specMode == MeasureSpec.AT_MOST) { + result = Math.min(result, specSize); + } + } + return result; + + } + + //开始画中间圆、文字和外圆环 + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + //画中间圆 + canvas.drawCircle(mCircleX, mCircleY, mRadius, mCirclePaint); + //画圆环 + canvas.drawArc(mArcRectF, mStartSweepValue, mCurrentAngle, false, mArcPaint); + //画文字 + canvas.drawText(String.valueOf(mCurrentPercent) + "%", mCircleX, mCircleY + mTextSize / 4, mTextPaint); + //判断当前百分比是否小于设置目标的百分比 + if (mCurrentPercent < mTargetPercent) { + //当前百分比+1 + mCurrentPercent += 1; + //当前角度+360 + mCurrentAngle += 3.6; + //每10ms重画一次 + postInvalidateDelayed(10); + } + + } + + //设置目标的百分比 + public void setTargetPercent(int percent) { + this.mTargetPercent = percent; + } + +} diff --git a/modules/mogo-module-media/src/main/java/com/mogo/module/media/window/MediaWindow2.java b/modules/mogo-module-media/src/main/java/com/mogo/module/media/window/MediaWindow2.java index 4bdaa9eec7..5a9f514f9a 100644 --- a/modules/mogo-module-media/src/main/java/com/mogo/module/media/window/MediaWindow2.java +++ b/modules/mogo-module-media/src/main/java/com/mogo/module/media/window/MediaWindow2.java @@ -26,6 +26,7 @@ import com.mogo.module.media.presenter.PresenterFactory; import com.mogo.module.media.utils.Utils; import com.mogo.module.media.view.IMusicView; import com.mogo.module.media.widget.AnimCircleImageView; +import com.mogo.module.media.widget.PercentageRingView; import com.mogo.service.statusmanager.IMogoStatusChangedListener; import com.mogo.service.statusmanager.StatusDescriptor; import com.mogo.utils.WindowUtils; @@ -65,6 +66,10 @@ public class MediaWindow2 implements IMusicView , IMogoStatusChangedListener { private boolean mIsCallChatWindowVisible; private ICallProviderResponse mCallProviderResponse; + private PercentageRingView mPercentageRingView; + private ImageView mPauseImage; + private AnimCircleImageView mAnimCircleImageView; + public void initMedia(Context context) { mContext = context; @@ -122,71 +127,129 @@ public class MediaWindow2 implements IMusicView , IMogoStatusChangedListener { return; } - if (!mHasAddWindow) { + if (!mHasAddWindow) { //TODO mHasAddWindow = true; - mWindowView = - LayoutInflater.from(mContext).inflate(R.layout.module_media_music_window_alert_layout, null); - mCircleImg = mWindowView.findViewById(R.id.window_circle_img); - mScrollText = mWindowView.findViewById(R.id.window_scroll_txt); - mWindowPlayPause = mWindowView.findViewById(R.id.window_play_pause); - mWindowPlayNext = mWindowView.findViewById(R.id.window_music_next); - mWindowCurrTime = mWindowView.findViewById(R.id.window_current_time); - mWindowMaxTime = mWindowView.findViewById(R.id.window_max_time); - mWindowProgress = mWindowView.findViewById(R.id.window_progress_bar); - if (mWindowPlayPause != null) { - mWindowPlayPause.setImageResource(R.drawable.module_media_window_pop_pause); - } - int yPos = - getContext().getResources().getDimensionPixelOffset(R.dimen.module_media_music_state_location); - int xPos = - getContext().getResources().getDimensionPixelOffset(R.dimen.module_media_music_state_location_x); - int statusBarHeight = WindowUtils.getStatusBarHeight(mContext); - Logger.d(TAG, - "yPos: " + yPos + " xPos: " + xPos + " statusBarHeight: " + statusBarHeight); - Log.d(TAG, "addMediaWindoView"); - FrameLayout.LayoutParams params = - new FrameLayout.LayoutParams((int) mContext.getResources().getDimension(R.dimen.module_media_pop_window_width), (int) mContext.getResources().getDimension(R.dimen.module_media_pop_window_height)); - params.leftMargin = xPos; - params.topMargin = yPos; - ServiceMediaHandler.getMogoWindowManager().addView(mWindowView, params, false); - updateWindowUI(true); - mWindowView.setOnClickListener(new NoDoubleClickListener() { - @Override - public void onClicks(View view) { - mPresenter.openApp(); - } - }); + if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { + mWindowView = + LayoutInflater.from(mContext).inflate(R.layout.module_media_music_window_alert_layout_new, null); + mPercentageRingView = mWindowView.findViewById(R.id.window_circle_bg); + mAnimCircleImageView = mWindowView.findViewById(R.id.window_circle_img_new); + mPauseImage = mWindowView.findViewById(R.id.window_play_pause_new); - mWindowPlayPause.setOnClickListener(new NoDoubleClickListener() { - @Override - public void onClicks(View view) { - if (mMediaInfoData != null) { - if (mMediaInfoData.getPlayState() == MusicConstant.PLAY_STATE_PAUSE_OR_STOP) { - mPresenter.play(mMediaInfoData); - } else { - // 没有做详细判断,不是暂停就是播放 - mPresenter.pause(mMediaInfoData); - } - } else { + if (mPauseImage != null) { + mPauseImage.setImageResource(R.drawable.module_media_window_pop_pause); + } + + int yPos = + getContext().getResources().getDimensionPixelOffset(R.dimen.module_media_music_state_location_new); + int xPos = + getContext().getResources().getDimensionPixelOffset(R.dimen.module_media_music_state_location_x_new); + int statusBarHeight = WindowUtils.getStatusBarHeight(mContext); + Logger.d(TAG, + "yPos: " + yPos + " xPos: " + xPos + " statusBarHeight: " + statusBarHeight); + Log.d(TAG, "addMediaWindoView"); + FrameLayout.LayoutParams params = + new FrameLayout.LayoutParams((int) mContext.getResources().getDimension(R.dimen.module_media_pop_window_width_new), (int) mContext.getResources().getDimension(R.dimen.module_media_pop_window_height_new)); + params.leftMargin = xPos; + params.topMargin = yPos; + ServiceMediaHandler.getMogoWindowManager().addView(mWindowView, params, false); + updateWindowUI(true); + + mWindowView.setOnClickListener(new NoDoubleClickListener() { + @Override + public void onClicks(View view) { mPresenter.openApp(); } - } - }); + }); - mWindowPlayNext.setOnClickListener(new NoDoubleClickListener() { - @Override - public void onClicks(View view) { - if (mPresenter != null) { - mPresenter.next(); + mPauseImage.setOnClickListener(new NoDoubleClickListener() { + @Override + public void onClicks(View view) { + if (mMediaInfoData != null) { + if (mMediaInfoData.getPlayState() == MusicConstant.PLAY_STATE_PAUSE_OR_STOP) { + mPresenter.play(mMediaInfoData); + } else { + // 没有做详细判断,不是暂停就是播放 + mPresenter.pause(mMediaInfoData); + } + } else { + mPresenter.openApp(); + } } - } - }); + }); + + if ( mIsCallChatWindowVisible ) { + Logger.d( TAG, "vr mWindowView.setVisibility: status = " + mIsCallChatWindowVisible ); + mWindowView.setVisibility(View.GONE); + } else { + mWindowView.setVisibility(View.VISIBLE); + } - if ( mIsCallChatWindowVisible ) { - Logger.d( TAG, "mWindowView.setVisibility: status = " + mIsCallChatWindowVisible ); - mWindowView.setVisibility(View.GONE); } else { - mWindowView.setVisibility(View.VISIBLE); + mWindowView = + LayoutInflater.from(mContext).inflate(R.layout.module_media_music_window_alert_layout, null); + mCircleImg = mWindowView.findViewById(R.id.window_circle_img); + mScrollText = mWindowView.findViewById(R.id.window_scroll_txt); + mWindowPlayPause = mWindowView.findViewById(R.id.window_play_pause); + mWindowPlayNext = mWindowView.findViewById(R.id.window_music_next); + mWindowCurrTime = mWindowView.findViewById(R.id.window_current_time); + mWindowMaxTime = mWindowView.findViewById(R.id.window_max_time); + mWindowProgress = mWindowView.findViewById(R.id.window_progress_bar); + if (mWindowPlayPause != null) { + mWindowPlayPause.setImageResource(R.drawable.module_media_window_pop_pause); + } + int yPos = + getContext().getResources().getDimensionPixelOffset(R.dimen.module_media_music_state_location); + int xPos = + getContext().getResources().getDimensionPixelOffset(R.dimen.module_media_music_state_location_x); + int statusBarHeight = WindowUtils.getStatusBarHeight(mContext); + Logger.d(TAG, + "yPos: " + yPos + " xPos: " + xPos + " statusBarHeight: " + statusBarHeight); + Log.d(TAG, "addMediaWindoView"); + FrameLayout.LayoutParams params = + new FrameLayout.LayoutParams((int) mContext.getResources().getDimension(R.dimen.module_media_pop_window_width), (int) mContext.getResources().getDimension(R.dimen.module_media_pop_window_height)); + params.leftMargin = xPos; + params.topMargin = yPos; + ServiceMediaHandler.getMogoWindowManager().addView(mWindowView, params, false); + updateWindowUI(true); + mWindowView.setOnClickListener(new NoDoubleClickListener() { + @Override + public void onClicks(View view) { + mPresenter.openApp(); + } + }); + + mWindowPlayPause.setOnClickListener(new NoDoubleClickListener() { + @Override + public void onClicks(View view) { + if (mMediaInfoData != null) { + if (mMediaInfoData.getPlayState() == MusicConstant.PLAY_STATE_PAUSE_OR_STOP) { + mPresenter.play(mMediaInfoData); + } else { + // 没有做详细判断,不是暂停就是播放 + mPresenter.pause(mMediaInfoData); + } + } else { + mPresenter.openApp(); + } + } + }); + + mWindowPlayNext.setOnClickListener(new NoDoubleClickListener() { + @Override + public void onClicks(View view) { + if (mPresenter != null) { + mPresenter.next(); + } + } + }); + + if ( mIsCallChatWindowVisible ) { + Logger.d( TAG, "mWindowView.setVisibility: status = " + mIsCallChatWindowVisible ); + mWindowView.setVisibility(View.GONE); + } else { + mWindowView.setVisibility(View.VISIBLE); + } } } } @@ -214,41 +277,71 @@ public class MediaWindow2 implements IMusicView , IMogoStatusChangedListener { return; } - if (mScrollText != null) { - mScrollText.setText(mMediaInfoData.getMediaName()); - } - - if (first || mMediaInfoData.getPlayState() == MusicConstant.PLAY_STATE_PLAYING || mMediaInfoData.getPlayState() == MusicConstant.PLAY_STATE_BUFF) { - if (mWindowMaxTime != null) { - mWindowMaxTime.setText(Utils.calculateTime((int) mMediaInfoData.getMaxTime())); - } - if (mWindowCurrTime != null) { - mWindowCurrTime.setText(Utils.calculateTime((int) mMediaInfoData.getCurTime())); - } - - if( mMediaInfoData.getPlayState() == MusicConstant.PLAY_STATE_PLAYING) { - // kw音乐做的容错 - if (mWindowPlayPause != null) { - mWindowPlayPause.setImageResource(R.drawable.module_media_window_pop_play); - } - if (mCircleImg != null) { - mCircleImg.startAnim(); + if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { + if (first || mMediaInfoData.getPlayState() == MusicConstant.PLAY_STATE_PLAYING || mMediaInfoData.getPlayState() == MusicConstant.PLAY_STATE_BUFF) { + if( mMediaInfoData.getPlayState() == MusicConstant.PLAY_STATE_PLAYING) { + // kw音乐做的容错 + if (mPauseImage != null) { + mPauseImage.setImageResource(R.drawable.module_media_window_pop_play); + } + if (mAnimCircleImageView != null) { + mAnimCircleImageView.startAnim(); + } } } - } - if (mCircleImg != null) { - if(mMediaInfoData!=null&&mMediaInfoData.getMediaImg()!=null&&!mMediaInfoData.getMediaImg().isEmpty()) { - int size = - mContext.getResources().getDimensionPixelSize(R.dimen.module_media_pop_window_anim_img_size); - Logger.d(TAG, "overload: " + size); - com.bumptech.glide.request.RequestOptions options = - new com.bumptech.glide.request.RequestOptions() - .placeholder(R.drawable.module_media_default_music_img).error(R.drawable.module_media_default_music_img).override(size, size); - GlideApp.with(mContext).asBitmap().apply(options).load(mMediaInfoData.getMediaImg()).into(new SkinAbleBitmapTarget(mCircleImg, options)); + if (mAnimCircleImageView != null) { + if(mMediaInfoData!=null&&mMediaInfoData.getMediaImg()!=null&&!mMediaInfoData.getMediaImg().isEmpty()) { + int size = + mContext.getResources().getDimensionPixelSize(R.dimen.module_media_pop_window_anim_img_size_new); + Logger.d(TAG, "overload: " + size); + com.bumptech.glide.request.RequestOptions options = + new com.bumptech.glide.request.RequestOptions() + .placeholder(R.drawable.module_media_default_music_img).error(R.drawable.module_media_default_music_img).override(size, size); + GlideApp.with(mContext).asBitmap().apply(options).load(mMediaInfoData.getMediaImg()).into(new SkinAbleBitmapTarget(mAnimCircleImageView, options)); // GlideApp.with(mContext).applyDefaultRequestOptions(options).load(mMediaInfoData.getMediaImg()).into(new SkinAbleBitmapTarget(mCircleImg, options)); - }else{ - mCircleImg.setImageResource(R.drawable.module_media_default_music_img); + }else{ + mAnimCircleImageView.setImageResource(R.drawable.module_media_default_music_img); + } + } + + } else { + if (mScrollText != null) { + mScrollText.setText(mMediaInfoData.getMediaName()); + } + + if (first || mMediaInfoData.getPlayState() == MusicConstant.PLAY_STATE_PLAYING || mMediaInfoData.getPlayState() == MusicConstant.PLAY_STATE_BUFF) { + if (mWindowMaxTime != null) { + mWindowMaxTime.setText(Utils.calculateTime((int) mMediaInfoData.getMaxTime())); + } + if (mWindowCurrTime != null) { + mWindowCurrTime.setText(Utils.calculateTime((int) mMediaInfoData.getCurTime())); + } + + if( mMediaInfoData.getPlayState() == MusicConstant.PLAY_STATE_PLAYING) { + // kw音乐做的容错 + if (mWindowPlayPause != null) { + mWindowPlayPause.setImageResource(R.drawable.module_media_window_pop_play); + } + if (mCircleImg != null) { + mCircleImg.startAnim(); + } + } + } + + if (mCircleImg != null) { + if(mMediaInfoData!=null&&mMediaInfoData.getMediaImg()!=null&&!mMediaInfoData.getMediaImg().isEmpty()) { + int size = + mContext.getResources().getDimensionPixelSize(R.dimen.module_media_pop_window_anim_img_size); + Logger.d(TAG, "overload: " + size); + com.bumptech.glide.request.RequestOptions options = + new com.bumptech.glide.request.RequestOptions() + .placeholder(R.drawable.module_media_default_music_img).error(R.drawable.module_media_default_music_img).override(size, size); + GlideApp.with(mContext).asBitmap().apply(options).load(mMediaInfoData.getMediaImg()).into(new SkinAbleBitmapTarget(mCircleImg, options)); +// GlideApp.with(mContext).applyDefaultRequestOptions(options).load(mMediaInfoData.getMediaImg()).into(new SkinAbleBitmapTarget(mCircleImg, options)); + }else{ + mCircleImg.setImageResource(R.drawable.module_media_default_music_img); + } } } @@ -265,12 +358,22 @@ public class MediaWindow2 implements IMusicView , IMogoStatusChangedListener { Log.d(TAG, "onMusicPlaying===" + mMediaInfoData); isFirstPlay = false; updateWindowUI(false); - if (mWindowPlayPause != null) { - mWindowPlayPause.setImageResource(R.drawable.module_media_window_pop_play); - } + if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { + if (mPauseImage != null) { + mPauseImage.setImageResource(R.drawable.module_media_window_pop_play); + } - if (mCircleImg != null) { - mCircleImg.startAnim(); + if (mAnimCircleImageView != null) { + mAnimCircleImageView.startAnim(); + } + } else { + if (mWindowPlayPause != null) { + mWindowPlayPause.setImageResource(R.drawable.module_media_window_pop_play); + } + + if (mCircleImg != null) { + mCircleImg.startAnim(); + } } MogoApisHandler.getInstance().getApis().getStatusManagerApi().setMediaPlayStatus(TAG, true); @@ -280,12 +383,22 @@ public class MediaWindow2 implements IMusicView , IMogoStatusChangedListener { public void onMusicPause() { Logger.d(TAG, "onMusicPause: ===" + mMediaInfoData); Log.d(TAG, "onMusicPause: ===" + mMediaInfoData); - if (mWindowPlayPause != null) { - mWindowPlayPause.setImageResource(R.drawable.module_media_window_pop_pause); - } + if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { + if (mPauseImage != null) { + mPauseImage.setImageResource(R.drawable.module_media_window_pop_pause); + } - if (mCircleImg != null) { - mCircleImg.stopAnim(); + if (mAnimCircleImageView != null) { + mAnimCircleImageView.stopAnim(); + } + } else { + if (mWindowPlayPause != null) { + mWindowPlayPause.setImageResource(R.drawable.module_media_window_pop_pause); + } + + if (mAnimCircleImageView != null) { + mAnimCircleImageView.stopAnim(); + } } MogoApisHandler.getInstance().getApis().getStatusManagerApi().setMediaPlayStatus(TAG,false); @@ -295,12 +408,22 @@ public class MediaWindow2 implements IMusicView , IMogoStatusChangedListener { public void onMusicStopped() { Logger.d(TAG, "onMusicStopped===" + mMediaInfoData); Log.d(TAG, "onMusicStopped===" + mMediaInfoData); - if (mWindowPlayPause != null) { - mWindowPlayPause.setImageResource(R.drawable.module_media_window_pop_pause); - } + if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { + if (mPauseImage != null) { + mPauseImage.setImageResource(R.drawable.module_media_window_pop_pause); + } - if (mCircleImg != null) { - mCircleImg.stopAnim(); + if (mAnimCircleImageView != null) { + mAnimCircleImageView.stopAnim(); + } + } else { + if (mWindowPlayPause != null) { + mWindowPlayPause.setImageResource(R.drawable.module_media_window_pop_pause); + } + + if (mCircleImg != null) { + mCircleImg.stopAnim(); + } } MogoApisHandler.getInstance().getApis().getStatusManagerApi().setMediaPlayStatus(TAG,false); @@ -318,22 +441,37 @@ public class MediaWindow2 implements IMusicView , IMogoStatusChangedListener { @Override public void onMusicProgress(long current, long total) { // Logger.d(TAG, "onMusicProgress==current: " + current + " total: " + total); - if (mMediaInfoData != null) { - mMediaInfoData.setCurTime((int) current); - mMediaInfoData.setMaxTime((int) total); - } - if (mWindowCurrTime != null) { - mWindowCurrTime.setText(Utils.calculateTime((int) current)); - mWindowMaxTime.setText(Utils.calculateTime((int) total)); - } - try { - int progress = - (int) ((current * 1.0f * 100) / (total * 1.0f)); - if (mWindowProgress != null) { - mWindowProgress.setProgress(progress); + if (MogoApisHandler.getInstance().getApis().getStatusManagerApi().isVrMode()) { + try { + int progress = + (int) ((current * 1.0f * 100) / (total * 1.0f)); + if (mPercentageRingView != null) { + mPercentageRingView.setVisibility(View.VISIBLE); + Log.d(TAG, "progress vr = " + progress); + mPercentageRingView.setTargetPercent(progress); + } + } catch (Exception e) { + e.printStackTrace(); + } + } else { + if (mMediaInfoData != null) { + mMediaInfoData.setCurTime((int) current); + mMediaInfoData.setMaxTime((int) total); + } + if (mWindowCurrTime != null) { + mWindowCurrTime.setText(Utils.calculateTime((int) current)); + mWindowMaxTime.setText(Utils.calculateTime((int) total)); + } + try { + int progress = + (int) ((current * 1.0f * 100) / (total * 1.0f)); + if (mWindowProgress != null) { + Log.d(TAG, "progress = " + progress); + mWindowProgress.setProgress(progress); + } + } catch (Exception e) { + e.printStackTrace(); } - } catch (Exception e) { - e.printStackTrace(); } } diff --git a/modules/mogo-module-media/src/main/res/layout/module_media_music_window_alert_layout_new.xml b/modules/mogo-module-media/src/main/res/layout/module_media_music_window_alert_layout_new.xml new file mode 100644 index 0000000000..8d2d4cebc0 --- /dev/null +++ b/modules/mogo-module-media/src/main/res/layout/module_media_music_window_alert_layout_new.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + diff --git a/modules/mogo-module-media/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-media/src/main/res/values-xhdpi/dimens.xml index f31888dd72..d783c1911d 100644 --- a/modules/mogo-module-media/src/main/res/values-xhdpi/dimens.xml +++ b/modules/mogo-module-media/src/main/res/values-xhdpi/dimens.xml @@ -2,7 +2,8 @@ 872px 1067px - + 40px + 1760px 660px 660px @@ -63,9 +64,14 @@ 600px 140px + 116px + 116px 112px 30px 80px + 90px + 60px + 116px 230px 14px 35px diff --git a/modules/mogo-module-media/src/main/res/values/attrs.xml b/modules/mogo-module-media/src/main/res/values/attrs.xml index 80f3c0bd3d..d8f98cf7bf 100644 --- a/modules/mogo-module-media/src/main/res/values/attrs.xml +++ b/modules/mogo-module-media/src/main/res/values/attrs.xml @@ -35,4 +35,12 @@ + + + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-media/src/main/res/values/colors.xml b/modules/mogo-module-media/src/main/res/values/colors.xml index b156f1f106..b0944c76eb 100644 --- a/modules/mogo-module-media/src/main/res/values/colors.xml +++ b/modules/mogo-module-media/src/main/res/values/colors.xml @@ -2,4 +2,6 @@ #fff #7affffff + #444E6E + #B63737 diff --git a/modules/mogo-module-media/src/main/res/values/dimens.xml b/modules/mogo-module-media/src/main/res/values/dimens.xml index de1d893a59..48da6e24fd 100644 --- a/modules/mogo-module-media/src/main/res/values/dimens.xml +++ b/modules/mogo-module-media/src/main/res/values/dimens.xml @@ -2,6 +2,8 @@ 467px 573px + 80px + 930px 352px @@ -63,9 +65,13 @@ 338px 82px + 116px + 116px 60px 18px 44px + 55px + 60px 123px 10px 18px