Merge branch 'dev2' of gitlab.zhidaoauto.com:ecos/yycp-service/Launcher into dev2

This commit is contained in:
wangcongtao
2021-01-22 18:26:07 +08:00
20 changed files with 388 additions and 105 deletions

1
.idea/gradle.xml generated
View File

@@ -89,6 +89,7 @@
</set>
</option>
<option name="resolveModulePerSourceSet" value="false" />
<option name="useQualifiedModuleNames" value="true" />
</GradleProjectSettings>
</option>
</component>

View File

@@ -44,6 +44,8 @@ dependencies {
implementation rootProject.ext.dependencies.rxjava
implementation rootProject.ext.dependencies.rxandroid
implementation rootProject.ext.dependencies.androidxrecyclerview
if (Boolean.valueOf(RELEASE)) {
implementation rootProject.ext.dependencies.mogooch
implementation rootProject.ext.dependencies.mogoutils

View File

@@ -0,0 +1,94 @@
package com.mogo.och.bus.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.mogo.och.bus.R;
import com.mogo.och.bus.bean.OchBusStation;
import com.mogo.och.bus.constant.OchBusConst;
import java.util.ArrayList;
import java.util.List;
/**
* Station Panel 中的车站列表adapter
*
* @author tongchenfei
*/
public class OchBusStationAdapter extends RecyclerView.Adapter<OchBusStationAdapter.ViewHolder> {
private final Context context;
private final List<OchBusStation> stationList = new ArrayList<>();
private int currentStation;
public OchBusStationAdapter(Context context) {
this.context = context;
}
public void refreshStationList(List<OchBusStation> stationList) {
this.stationList.clear();
this.stationList.addAll(stationList);
for (int i = 0; i < stationList.size(); i++) {
OchBusStation station = stationList.get(i);
if (station.getIsCurrentSite() == OchBusConst.STATION_STATUS_ARRIVING || station.getIsCurrentSite() == OchBusConst.STATION_STATUS_STOPED) {
currentStation = i;
break;
}
}
notifyDataSetChanged();
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new ViewHolder(LayoutInflater.from(context).inflate(R.layout.item_och_bus_station, parent, false));
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.tvStationName.setText(stationList.get(position).getSiteName());
if (position == currentStation) {
holder.tvStationName.setTextColor(context.getResources().getColor(R.color.module_mogo_och_bus_current_station_name_text_color));
} else if (position < currentStation) {
// 驶过
holder.tvStationName.setTextColor(context.getResources().getColor(R.color.module_mogo_och_bus_arrived_station_name_text_color));
}else {
holder.tvStationName.setTextColor(context.getResources().getColor(R.color.module_mogo_och_bus_not_arrive_station_name_text_color));
}
if (position == 0) {
holder.tvStationNotice.setText("起点");
holder.tvStationNotice.setVisibility(View.VISIBLE);
} else if (position == getItemCount() - 1) {
holder.tvStationNotice.setText("终点");
holder.tvStationNotice.setVisibility(View.VISIBLE);
}else{
holder.tvStationNotice.setVisibility(View.GONE);
}
}
@Override
public int getItemCount() {
return stationList.size();
}
static class ViewHolder extends RecyclerView.ViewHolder{
ImageView ivIcon;
TextView tvStationName;
TextView tvStationNotice;
public ViewHolder(@NonNull View itemView) {
super(itemView);
ivIcon = itemView.findViewById(R.id.module_mogo_och_bus_station_icon);
tvStationName = itemView.findViewById(R.id.module_mogo_och_bus_station_name);
tvStationNotice = itemView.findViewById(R.id.module_mogo_och_bus_station_notice);
}
}
}

View File

@@ -0,0 +1,13 @@
package com.mogo.och.bus.constant;
/**
* 常量
*
* @author tongchenfei
*/
public class OchBusConst {
public static final int STATION_STATUS_IDLE = 0;
public static final int STATION_STATUS_STOPED = 1;
public static final int STATION_STATUS_LEAVING = 2;
public static final int STATION_STATUS_ARRIVING = 3;
}

View File

@@ -1,22 +1,19 @@
package com.mogo.och.bus.fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.constraintlayout.widget.Group;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.mogo.commons.mvp.MvpFragment;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.view.OnPreventFastClickListener;
import com.mogo.och.BaseOchFragment;
import com.mogo.och.bus.R;
import com.mogo.och.bus.adapter.OchBusStationAdapter;
import com.mogo.och.bus.bean.OchBusStation;
import com.mogo.och.bus.constant.OchBusConst;
import com.mogo.och.bus.presenter.OchBusPresenter;
import com.mogo.och.view.SlidePanelView;
import com.mogo.service.adas.entity.AdasOCHData;
import com.mogo.utils.logger.Logger;
import java.util.ArrayList;
@@ -30,32 +27,25 @@ import java.util.List;
*/
public class OchBusFragment extends BaseOchFragment<OchBusFragment, OchBusPresenter> implements SlidePanelView.OnSlidePanelMoveToEndListener {
private static final String TAG = "OchBusFragment";
private final List<OchBusStation> stationList = new ArrayList<>();
private TextView tvNotice;
private TextView tvStationNotice;
private TextView tvStationName;
private RecyclerView rvStationList;
private OchBusStationAdapter adapter;
@Override
protected void initViews() {
super.initViews();
// findViewById(R.id.btnEnterOchBus).setOnClickListener(new OnPreventFastClickListener() {
// @Override
// public void onClickImpl(View v) {
// showOchBus();
// }
// });
// findViewById(R.id.btnArrive).setOnClickListener(view->{
// 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);
tvStationNotice = findViewById(R.id.module_mogo_och_bus_current_station_notice);
tvStationName = findViewById(R.id.module_mogo_och_bus_current_station_name);
rvStationList = findViewById(R.id.module_mogo_och_bus_rv_station_list);
tvNotice.setOnClickListener(view->{
adapter = new OchBusStationAdapter(getContext());
rvStationList.setAdapter(adapter);
rvStationList.setLayoutManager(new LinearLayoutManager(getContext()));
tvStationNotice.setOnClickListener(view -> {
showSlidePanle("到达站点,乘客以下车");
});
}
@@ -88,39 +78,39 @@ public class OchBusFragment extends BaseOchFragment<OchBusFragment, OchBusPresen
}
}
private OchBusStation nextStation;
public void refreshBusStations(List<OchBusStation> busStationList) {
public void refreshBusStations(List<OchBusStation> stationList) {
if (getActivity() == null) {
return;
}
getActivity().runOnUiThread(() -> {
if (busStationList == null) {
if (stationList == null) {
// todo 获取小巴数据失败
} else {
// todo 渲染小巴路线数据
stationList.clear();
stationList.addAll(busStationList);
// for (int i = 0; i < stationList.size(); i++) {
// OchBusStation station = stationList.get(i);
// if (station.getIsCurrentSite() == OchBusPresenter.STATION_STATUS_LEAVING) {
// tvNotice.setText("正在从 " + i + "站驶向" + (i + 1) + "站");
// nextStation = stationList.get(i + 1);
// btnExecute.setVisibility(View.GONE);
// break;
// } else if (station.getIsCurrentSite() == OchBusPresenter.STATION_STATUS_STOPED) {
// tvNotice.setText("车辆正停在" + i + "站");
// btnExecute.setVisibility(View.VISIBLE);
// if (i == stationList.size() - 1) {
// btnExecute.setText("单程结束");
// }else if(i == 0){
// btnExecute.setText("准备出发");
// }else{
// btnExecute.setText("乘客已上车,准备出发");
// }
// break;
// }
// }
adapter.refreshStationList(stationList);
for (int i = 0; i < stationList.size(); i++) {
OchBusStation station = stationList.get(i);
if (station.getIsCurrentSite() == OchBusConst.STATION_STATUS_ARRIVING) {
tvStationName.setText(station.getSiteName());
tvStationNotice.setText("下一站");
onAutopilotStatusChanged(true);
break;
} else if (station.getIsCurrentSite() == OchBusConst.STATION_STATUS_STOPED) {
tvStationNotice.setText("当前车站");
tvStationName.setText(station.getSiteName());
onAutopilotStatusChanged(false);
if (i == stationList.size() - 1) {
tvStationNotice.setText("终点");
showSlidePanle("单程结束");
} else if (i == 0) {
showSlidePanle("准备出发");
} else {
showSlidePanle("乘客已上车,准备出发");
}
break;
}
}
}
});
}
@@ -130,7 +120,7 @@ public class OchBusFragment extends BaseOchFragment<OchBusFragment, OchBusPresen
}
private void queryStationListIfNecessary() {
if (stationList == null || stationList.isEmpty()) {
if (adapter.getItemCount() == 0) {
mPresenter.queryBusRoutes();
}
}
@@ -145,11 +135,8 @@ public class OchBusFragment extends BaseOchFragment<OchBusFragment, OchBusPresen
return this;
}
private boolean isInAutopilot;
@Override
public void moveToEnd() {
onAutopilotStatusChanged(isInAutopilot);
isInAutopilot = !isInAutopilot;
mPresenter.autoDriveToNextStation();
}
}

View File

@@ -28,6 +28,11 @@ import io.reactivex.schedulers.Schedulers;
import okhttp3.MediaType;
import okhttp3.RequestBody;
import static com.mogo.och.bus.constant.OchBusConst.STATION_STATUS_ARRIVING;
import static com.mogo.och.bus.constant.OchBusConst.STATION_STATUS_IDLE;
import static com.mogo.och.bus.constant.OchBusConst.STATION_STATUS_LEAVING;
import static com.mogo.och.bus.constant.OchBusConst.STATION_STATUS_STOPED;
/**
* 网约车小巴
*
@@ -37,11 +42,6 @@ public class OchBusPresenter extends Presenter<OchBusFragment> implements IMogoA
private static final String TAG = "OchBusPresenter";
private static final int VEHICAL_TYPE = 10;
public static final int STATION_STATUS_IDLE = 0;
public static final int STATION_STATUS_STOPED = 1;
public static final int STATION_STATUS_LEAVING = 2;
public static final int STATION_STATUS_ARRIVING = 3;
public OchBusPresenter(OchBusFragment view) {
super(view);
MogoApisHandler.getInstance().getApis().getAdasControllerApi().addAdasOCHCallback(this);

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<stroke
android:width="6px"
android:dashGap="5px"
android:dashWidth="5px"
android:color="@color/module_mogo_och_bus_current_station_notice_text_color" />
</shape>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<rotate
android:drawable="@drawable/module_mogo_och_bus_station_green_dash_line"
android:visible="true"
android:fromDegrees="90" />
</item>
</layer-list>

View File

@@ -1,19 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="@dimen/module_mogo_och_bus_station_panel_width"
android:layout_height="@dimen/module_mogo_och_bus_station_panel_height">
android:layout_height="@dimen/module_mogo_och_bus_station_panel_height"
android:background="#FF2C3862">
<TextView
android:id="@+id/module_mogo_och_bus_current_station_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/module_mogo_och_bus_station_notice"
android:text="站点信息"
android:textSize="@dimen/module_mogo_och_bus_station_notice_text_size"
android:textColor="#fff"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
android:layout_marginStart="@dimen/module_mogo_och_bus_station_panel_guide_offset_left"
android:layout_marginTop="@dimen/module_mogo_och_bus_station_panel_padding_top"
android:text="顺义政府站"
android:textColor="@color/module_mogo_och_bus_current_station_name_text_color"
android:textSize="@dimen/module_mogo_och_bus_current_station_name_text_size"
app:layout_constraintLeft_toLeftOf="@id/vGuide"
app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/vGuide"
android:layout_width="match_parent"
android:layout_height="1px"
android:layout_marginStart="@dimen/module_mogo_och_bus_station_panel_padding_left"
android:layout_marginTop="@dimen/module_mogo_och_bus_station_panel_guide_offset_top"
android:layout_marginEnd="@dimen/module_mogo_och_bus_station_panel_padding_right"
android:background="#FF51649D"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/module_mogo_och_bus_current_station_name" />
<TextView
android:id="@+id/module_mogo_och_bus_current_station_notice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/module_mogo_och_bus_station_panel_guide_offset_right"
android:text="站点信息"
android:textColor="#fff"
android:textSize="@dimen/module_mogo_och_bus_station_notice_text_size"
app:layout_constraintBottom_toBottomOf="@id/module_mogo_och_bus_current_station_name"
app:layout_constraintRight_toRightOf="@id/vGuide"
app:layout_constraintTop_toTopOf="@id/module_mogo_och_bus_current_station_name" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/module_mogo_och_bus_rv_station_list"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="@dimen/module_mogo_och_bus_station_panel_guide_offset_left"
android:layout_marginTop="@dimen/module_mogo_och_bus_station_panel_guide_offset_top"
android:layout_marginEnd="@dimen/module_mogo_och_bus_station_panel_guide_offset_right"
android:layout_marginBottom="@dimen/module_mogo_och_bus_station_panel_padding_bottom"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="@id/vGuide"
app:layout_constraintRight_toRightOf="@id/vGuide"
app:layout_constraintTop_toBottomOf="@id/vGuide" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/module_mogo_och_bus_station_icon"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="@id/module_mogo_och_bus_station_name"
app:layout_constraintBottom_toBottomOf="@id/module_mogo_och_bus_station_name"
android:src="@drawable/icon_heart_choose" />
<View
android:layout_width="10px"
android:layout_height="25px"
android:id="@+id/vLine"
android:background="@drawable/module_mogo_och_bus_station_v_green_dash"
app:layout_constraintTop_toBottomOf="@id/module_mogo_och_bus_station_icon"
app:layout_constraintLeft_toLeftOf="@id/module_mogo_och_bus_station_icon"
app:layout_constraintRight_toRightOf="@id/module_mogo_och_bus_station_icon" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/module_mogo_och_bus_station_name"
android:textSize="@dimen/module_mogo_och_bus_station_name_text_size"
android:textColor="@color/module_mogo_och_bus_arrived_station_name_text_color"
android:text="后鲁站"
android:layout_marginStart="@dimen/module_mogo_och_bus_station_name_margin_left"
app:layout_constraintLeft_toRightOf="@id/module_mogo_och_bus_station_icon"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/module_mogo_och_bus_station_notice"
android:textSize="@dimen/module_mogo_och_bus_station_notice_text_size"
android:textColor="@color/module_mogo_och_bus_station_notice_text_color"
android:text="起点"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@id/module_mogo_och_bus_station_name"
app:layout_constraintBottom_toBottomOf="@id/module_mogo_och_bus_station_name"/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="module_mogo_och_bus_current_station_name_text_color">#FF1FA7FF</color>
<color name="module_mogo_och_bus_current_station_notice_text_color">#FFFFFFFF</color>
<color name="module_mogo_och_bus_arrived_station_name_text_color">#FFFFFFFF</color>
<color name="module_mogo_och_bus_not_arrive_station_name_text_color">#FF51649D</color>
<color name="module_mogo_och_bus_station_notice_text_color">#FF8299EB</color>
</resources>

View File

@@ -1,7 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- 本套资源适配分体机xhdpi -->
<dimen name="module_mogo_och_bus_station_notice_text_size">24px</dimen>
<dimen name="module_mogo_och_bus_station_panel_width">464px</dimen>
<dimen name="module_mogo_och_bus_station_panel_height">310px</dimen>
<dimen name="module_mogo_och_bus_station_panel_height">348px</dimen>
<dimen name="module_mogo_och_bus_current_station_name_text_size">32px</dimen>
<dimen name="module_mogo_och_bus_current_station_notice_text_size">20px</dimen>
<dimen name="module_mogo_och_bus_station_name_text_size">26px</dimen>
<dimen name="module_mogo_och_bus_station_notice_text_size">20px</dimen>
<dimen name="module_mogo_och_bus_station_name_margin_left">15px</dimen>
<dimen name="module_mogo_och_bus_station_panel_padding_top">20px</dimen>
<dimen name="module_mogo_och_bus_station_panel_padding_left">36px</dimen>
<dimen name="module_mogo_och_bus_station_panel_padding_bottom">28px</dimen>
<dimen name="module_mogo_och_bus_station_panel_padding_right">36px</dimen>
<dimen name="module_mogo_och_bus_station_panel_guide_offset_left">3px</dimen>
<dimen name="module_mogo_och_bus_station_panel_guide_offset_right">3px</dimen>
<dimen name="module_mogo_och_bus_station_panel_guide_offset_top">17px</dimen>
<dimen name="module_mogo_och_bus_station_panel_guide_offset_bottom">17px</dimen>
</resources>

View File

@@ -11,7 +11,10 @@ import androidx.fragment.app.Fragment;
import com.mogo.commons.mvp.IView;
import com.mogo.commons.mvp.MvpFragment;
import com.mogo.commons.mvp.Presenter;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.och.view.SlidePanelView;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
import com.mogo.service.statusmanager.StatusDescriptor;
/**
* 网约车基础Fragment主要负责布局通用界面处理站点面板和通话面板互斥情况
@@ -47,6 +50,20 @@ public abstract class BaseOchFragment<V extends IView, P extends Presenter<V>> 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<V extends IView, P extends Presenter<V>> 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

View File

@@ -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);

View File

@@ -16,19 +16,6 @@
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<!-- <View-->
<!-- android:layout_width="@dimen/module_mogo_och_autopilot_status_bg_width"-->
<!-- android:layout_height="@dimen/module_mogo_och_autopilot_status_bg_height"-->
<!-- android:id="@+id/module_mogo_och_autopilot_status_bg"-->
<!-- android:background="@drawable/module_mogo_och_autopilot_status_bg"-->
<!-- app:layout_constraintLeft_toLeftOf="parent"-->
<!-- app:layout_constraintBottom_toBottomOf="parent"/>-->
<!-- <TextView-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:id="@+id/module_mogo_och_"-->
<CheckedTextView
android:id="@+id/module_mogo_och_autopilot_status"
android:layout_width="@dimen/module_mogo_och_autopilot_status_bg_width"
@@ -37,8 +24,9 @@
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:text="自动"
android:textColor="@color/module_mogo_och_autopilot_text_color_selector"
android:textSize="@dimen/module_mogo_och_autopilot_status_text_size"
app:layout_constraintBottom_toBottomOf="parent"

View File

@@ -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 {
/**
* 获取当前定位

View File

@@ -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

View File

@@ -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 业务类型

View File

@@ -101,4 +101,8 @@ public enum StatusDescriptor {
* 顶部弹框容器准备就绪
*/
TOP_CONTAINER_READY,
/**
* 聊天框是否正在展示
*/
CALL_VIEW
}

View File

@@ -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);