From 6952cfac944e2964b708aae570f3cd25e65b8bbc Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Fri, 22 Jan 2021 09:58:22 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=9F=BA=E7=A1=80=E5=B8=83?= =?UTF-8?q?=E5=B1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo/och/bus/fragment/OchBusFragment.java | 61 +++++++------------ .../java/com/mogo/och/BaseOchFragment.java | 29 +++++++++ .../com/mogo/och/view/SlidePanelView.java | 35 +++++++---- .../layout/module_mogo_och_base_fragment.xml | 1 + .../mogo/httpdns/IHttpDnsLocationChanged.java | 4 +- gradle.properties | 6 +- .../statusmanager/IMogoStatusManager.java | 13 ++++ .../statusmanager/StatusDescriptor.java | 4 ++ .../impl/statusmanager/MogoStatusManager.java | 10 +++ 9 files changed, 106 insertions(+), 57 deletions(-) diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/OchBusFragment.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/OchBusFragment.java index 00ca10e6c3..42933a51dc 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/OchBusFragment.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/OchBusFragment.java @@ -37,22 +37,6 @@ public class OchBusFragment extends BaseOchFragment{ -// mPresenter.onArriveAt(new AdasOCHData(10, nextStation.getLon(), nextStation.getLat())); -// }); -// btnExecute = findViewById(R.id.btnExecute); -// btnExecute.setOnClickListener(new OnPreventFastClickListener() { -// @Override -// public void onClickImpl(View v) { -// mPresenter.autoDriveToNextStation(); -// } -// }); tvNotice = findViewById(R.id.module_mogo_och_bus_station_notice); tvNotice.setOnClickListener(view->{ @@ -101,26 +85,26 @@ public class OchBusFragment extends BaseOchFragment> e LayoutInflater.from(getContext()).inflate(getStationPanelViewId(), flStationPanelContainer); slidePanelView.setOnSlidePanelMoveToEndListener(onSlideToEndListener); + + checkCallView(MogoApisHandler.getInstance().getApis().getStatusManagerApi().isCallViewShow()); + MogoApisHandler.getInstance().getApis().getStatusManagerApi().registerStatusChangedListener("Och", StatusDescriptor.CALL_VIEW, callViewListener); + } + + private void checkCallView(boolean isShown){ + if (flStationPanelContainer == null) { + return; + } + if (isShown) { + flStationPanelContainer.setTranslationY(131f); + }else{ + flStationPanelContainer.setTranslationY(0f); + } } public void showSlidePanle(String text) { @@ -79,6 +96,18 @@ public abstract class BaseOchFragment> e return null; } + private final IMogoStatusChangedListener callViewListener = (descriptor, isTrue) -> { + if (descriptor == StatusDescriptor.CALL_VIEW) { + checkCallView(isTrue); + } + }; + + @Override + public void onDestroyView() { + super.onDestroyView(); + MogoApisHandler.getInstance().getApis().getStatusManagerApi().unregisterStatusChangedListener("Och", StatusDescriptor.CALL_VIEW, callViewListener); + } + /** * 获取站点面板view,在{@link #initViews()}时候添加到container中 * @return 站点面板view diff --git a/OCH/mogo-och/src/main/java/com/mogo/och/view/SlidePanelView.java b/OCH/mogo-och/src/main/java/com/mogo/och/view/SlidePanelView.java index d93463dd99..98101a57b5 100644 --- a/OCH/mogo-och/src/main/java/com/mogo/och/view/SlidePanelView.java +++ b/OCH/mogo-och/src/main/java/com/mogo/och/view/SlidePanelView.java @@ -14,7 +14,6 @@ import android.graphics.Rect; import android.graphics.RectF; import android.graphics.Shader; import android.util.AttributeSet; -import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.animation.DecelerateInterpolator; @@ -49,10 +48,15 @@ public class SlidePanelView extends View { private final Paint blockPaint = new Paint(Paint.ANTI_ALIAS_FLAG); private final Paint textPaint = new Paint(Paint.ANTI_ALIAS_FLAG); - private static final int BLOCK_START_X = 10; - private static final int BLOCK_START_Y = 10; - private static final int TEXT_MARGIN_LEFT = 20; - private static final int TEXT_MARGIN_RIGHT = 30; + private static final int BLOCK_START_X = 15; + private static final int BLOCK_START_Y = 15; + private static final int NORMAL_TEXT_MARGIN_LEFT = 40; + private static final int NORMAL_TEXT_MARGIN_RIGHT = 50; + private static final int SHORT_TEXT_MARGIN_LEFT = 60; + private static final int SHORT_TEXT_MARGIN_RIGHT = 70; + + private int textMarginLeft = NORMAL_TEXT_MARGIN_LEFT; + private int textMarginRight = NORMAL_TEXT_MARGIN_RIGHT; private OnSlidePanelMoveToEndListener moveToEndListener; @@ -105,7 +109,7 @@ public class SlidePanelView extends View { textPaint.setStyle(Paint.Style.FILL); textPaint.setTextSize(40); textPaint.setTextAlign(Paint.Align.LEFT); - textGradient = new LinearGradient(-GRADIENT_OFFSET, 0, 0, 0, new int[]{0x33ffffff, 0xffffffff, 0x29ffffff}, new float[]{0, 0.5f, 1f}, Shader.TileMode.CLAMP); + textGradient = new LinearGradient(-GRADIENT_OFFSET, 0, 0, 0, new int[]{0x33ffffff, 0xffffffff, 0x33ffffff}, null, Shader.TileMode.CLAMP); textGradient.setLocalMatrix(gradientMatrix); textPaint.setShader(textGradient); textPaint.getFontMetrics(blockTextMetrics); @@ -118,17 +122,22 @@ public class SlidePanelView extends View { protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int widthMode = MeasureSpec.getMode(widthMeasureSpec); int heightMode = MeasureSpec.getMode(heightMeasureSpec); - int widthSize = MeasureSpec.getSize(widthMeasureSpec); - int heightSize = MeasureSpec.getSize(heightMeasureSpec); + int widthSize; + int heightSize; - Log.d(TAG, "onMeasure:\r\n widthMode: " + widthMode + " widthSize: " + widthSize + " \r\n heightMode: " + heightMode + " heightSize: " + heightSize); + if (blockText.length() < 5) { + textMarginLeft = SHORT_TEXT_MARGIN_LEFT; + textMarginRight = SHORT_TEXT_MARGIN_RIGHT; + } else { + textMarginLeft = NORMAL_TEXT_MARGIN_LEFT; + textMarginRight = NORMAL_TEXT_MARGIN_RIGHT; + } - Log.d(TAG, "textMetrics: ascent: " + blockTextMetrics.ascent + " descent: " + blockTextMetrics.descent + " top: " + blockTextMetrics.top + " bottom: " + blockTextMetrics.bottom); if (widthMode == MeasureSpec.AT_MOST) { // 宽度根据图片大小,字符串长度,各种间隔确定 // 高度根据图片大小和上下间隔确定 textPaint.getTextBounds(blockText, 0, blockText.length(), textRect); - widthSize = BLOCK_START_X * 2 + bmBlock.getWidth() + TEXT_MARGIN_LEFT + TEXT_MARGIN_RIGHT + textRect.width(); + widthSize = BLOCK_START_X * 2 + bmBlock.getWidth() + textMarginLeft + textMarginRight + textRect.width(); heightSize = BLOCK_START_Y * 2 + bmBlock.getHeight(); widthMeasureSpec = MeasureSpec.makeMeasureSpec(widthSize, widthMode); heightMeasureSpec = MeasureSpec.makeMeasureSpec(heightSize, heightMode); @@ -148,7 +157,7 @@ public class SlidePanelView extends View { matrixAnim.cancel(); } textOffset = (getHeight() - blockTextMetrics.ascent - blockTextMetrics.descent) / 2; - matrixAnim = ObjectAnimator.ofFloat(this, "matrixTranslate", 0, w + GRADIENT_OFFSET).setDuration(1000); + matrixAnim = ObjectAnimator.ofFloat(this, "matrixTranslate", 0, w + GRADIENT_OFFSET).setDuration(2000); matrixAnim.setRepeatCount(ValueAnimator.INFINITE); matrixAnim.start(); } @@ -231,7 +240,7 @@ public class SlidePanelView extends View { gradientMatrix.setTranslate(matrixTranslate, 0); textGradient.setLocalMatrix(gradientMatrix); canvas.save(); - canvas.drawText(blockText, blockWidth + BLOCK_START_X + TEXT_MARGIN_LEFT, textOffset, textPaint); + canvas.drawText(blockText, blockWidth + BLOCK_START_X + textMarginLeft, textOffset, textPaint); canvas.restore(); // 画滑块 canvas.drawBitmap(bmBlock, BLOCK_START_X + blockOffset, BLOCK_START_Y, blockPaint); diff --git a/OCH/mogo-och/src/main/res/layout/module_mogo_och_base_fragment.xml b/OCH/mogo-och/src/main/res/layout/module_mogo_och_base_fragment.xml index 94f34cc808..06495b6018 100644 --- a/OCH/mogo-och/src/main/res/layout/module_mogo_och_base_fragment.xml +++ b/OCH/mogo-och/src/main/res/layout/module_mogo_och_base_fragment.xml @@ -37,6 +37,7 @@ android:drawableTop="@drawable/icon_heart_choose" android:drawablePadding="@dimen/module_mogo_och_autopilot_status_text_drawable_padding" android:gravity="center" + android:textAlignment="center" android:paddingTop="@dimen/module_mogo_och_autopilot_status_text_padding_top" android:text="自动驾驶" android:textColor="@color/module_mogo_och_autopilot_text_color_selector" diff --git a/foudations/httpdns-base/src/main/java/com/mogo/httpdns/IHttpDnsLocationChanged.java b/foudations/httpdns-base/src/main/java/com/mogo/httpdns/IHttpDnsLocationChanged.java index 3753ebc90e..37da4adc43 100644 --- a/foudations/httpdns-base/src/main/java/com/mogo/httpdns/IHttpDnsLocationChanged.java +++ b/foudations/httpdns-base/src/main/java/com/mogo/httpdns/IHttpDnsLocationChanged.java @@ -2,8 +2,10 @@ package com.mogo.httpdns; import android.location.Location; -import com.mogo.utils.httpdns.HttpSimpleLocation; +import androidx.annotation.Keep; +import com.mogo.utils.httpdns.HttpSimpleLocation; +@Keep public interface IHttpDnsLocationChanged { /** * 获取当前定位 diff --git a/gradle.properties b/gradle.properties index d28199cc55..fc1ecec0cd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -57,9 +57,9 @@ MOGO_UTILS_VERSION=2.0.12 MAP_AMAP_VERSION=2.0.12 MAP_AUTONAVI_VERSION=2.0.12 MOGO_MAP_VERSION=2.0.12 -MOGO_MAP_API_VERSION=2.0.12 +MOGO_MAP_API_VERSION=2.0.13 MOGO_SERVICE_VERSION=2.0.12 -MOGO_SERVICE_API_VERSION=2.0.12 +MOGO_SERVICE_API_VERSION=2.0.14 MOGO_CONNECTION_VERSION=2.0.12 MOGO_MODULE_APPS_VERSION=2.0.12 MOGO_MODULE_NAVI_VERSION=2.0.12 @@ -145,7 +145,7 @@ MOGO_OCH_TAXI_VERSION=1.0.0 ######## 外部依赖引用 # 车聊聊 -CARCHATTING_VERSION=2.2.70 +CARCHATTING_VERSION=2.2.77 # 车聊聊接口 CARCHATTINGPROVIDER_VERSION=1.1.11 # websocket diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/IMogoStatusManager.java b/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/IMogoStatusManager.java index 92a70288b1..16da7ccf7d 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/IMogoStatusManager.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/IMogoStatusManager.java @@ -129,6 +129,19 @@ public interface IMogoStatusManager extends IProvider { */ boolean isMainPageLaunched(); + /** + * 对话框是否展示 + * @return + */ + boolean isCallViewShow(); + + /** + * 设置对话框展示状态 + * @param tag + * @param status + */ + void setCallViewShow(String tag, boolean status); + /** * 设置vrMode状态 * @param tag 业务类型 diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/StatusDescriptor.java b/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/StatusDescriptor.java index 3d29ab95f0..7710a84832 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/StatusDescriptor.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/StatusDescriptor.java @@ -101,4 +101,8 @@ public enum StatusDescriptor { * 顶部弹框容器准备就绪 */ TOP_CONTAINER_READY, + /** + * 聊天框是否正在展示 + */ + CALL_VIEW } diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java b/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java index bdad2d535b..34181e7e32 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java @@ -142,6 +142,16 @@ public class MogoStatusManager implements IMogoStatusManager { return get_bool_val( StatusDescriptor.MEDIA_PLAYER_STATUS ); } + @Override + public boolean isCallViewShow() { + return get_bool_val(StatusDescriptor.CALL_VIEW); + } + + @Override + public void setCallViewShow(String tag, boolean status) { + doSetStatus(tag,StatusDescriptor.CALL_VIEW,status); + } + @Override public void setMediaPlayStatus(String tag, boolean status) { doSetStatus(tag, StatusDescriptor.MEDIA_PLAYER_STATUS, status);