完成了没有出行动态的时候的展示

This commit is contained in:
董宏宇
2020-08-11 14:58:04 +08:00
parent 3a7a84465a
commit 40905b916c
13 changed files with 297 additions and 50 deletions

View File

@@ -28,6 +28,7 @@ import com.mogo.service.module.IMogoActionManager;
import com.mogo.service.module.IMogoMarkerService;
import com.mogo.service.module.IMogoRegisterCenter;
import com.mogo.service.module.IMogoSearchManager;
import com.mogo.service.share.IMogoShareManager;
import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.service.strategy.IMogoRefreshStrategyController;
import com.mogo.service.windowview.IMogoTopViewManager;
@@ -64,6 +65,7 @@ public class V2XServiceManager {
private static IMogoRegisterCenter mMogoRegisterCenter;
private static IMogoRefreshStrategyController mIMogoRefreshStrategyController;
private static IMogoMarkerService mIMogoMarkerService;
private static IMogoShareManager mIMogoShareManager;
private static IMogoActionManager mMogoActionManager;
private static ICarsChattingProvider mCarsChattingProvider;
@@ -102,6 +104,7 @@ public class V2XServiceManager {
mMogoTopViewManager = mMogoServiceApis.getTopViewManager();
mIMogoSearchManager = mMogoServiceApis.getSearchManagerApi();
mIMogoMarkerService = mMogoServiceApis.getMarkerService();
mIMogoShareManager = mMogoServiceApis.getShareManager();
mMarkerManager = mMapService.getMarkerManager(context);
mNavi = mMapService.getNavi(context);
@@ -243,4 +246,8 @@ public class V2XServiceManager {
public static V2XCalculateServer getV2XCalculateServer() {
return mV2XCalculateServer;
}
public static IMogoShareManager getMogoShareManager() {
return mIMogoShareManager;
}
}

View File

@@ -79,7 +79,7 @@ class V2XEventPanelFragment : MvpFragment<V2XEventPanelFragment, EventPanelPrese
}
}
val historyMessage = V2XSQLiteUtils.getScenarioHistoryData()
val historyMessage = V2XSQLiteUtils.getScenarioHistoryUnDisposeData()
if (historyMessage != null && historyMessage.size > 0) {
tvEventCount.visibility = View.VISIBLE
tvEventCount.text = "${historyMessage.size}"

View File

@@ -2,8 +2,10 @@ package com.mogo.module.v2x.fragment;
import android.content.Context;
import android.util.Log;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@@ -16,6 +18,7 @@ import com.mogo.module.v2x.adapter.V2XScenarioHistoryAdapter;
import com.mogo.module.v2x.manager.IMoGoV2XStatusChangedListener;
import com.mogo.module.v2x.manager.V2XStatusDescriptor;
import com.mogo.module.v2x.presenter.ScenarioHistoryPresenter;
import com.mogo.module.v2x.view.V2XListEmptyView;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.utils.GsonUtil;
@@ -31,6 +34,8 @@ public class V2XScenarioHistoryFragment
extends MvpFragment<V2XScenarioHistoryFragment, ScenarioHistoryPresenter> {
private String TAG = "ScenarioHistoryFragment";
private V2XListEmptyView mEmptyView;
private CoordinatorLayout mClHistoryList;
private RecyclerView mRecyclerView;
private V2XScenarioHistoryAdapter mV2XScenarioHistoryAdapter;
private ArrayList<V2XHistoryScenarioData> mV2XHistoryScenarioData = new ArrayList<>();
@@ -43,7 +48,10 @@ public class V2XScenarioHistoryFragment
@Override
protected void initViews() {
Log.d(TAG, "initViews --------> ");
mRecyclerView = (RecyclerView) findViewById(R.id.recyclerView);
mEmptyView = findViewById(R.id.viewEmpty);
mClHistoryList = findViewById(R.id.clHistoryList);
mRecyclerView = findViewById(R.id.recyclerView);
mV2XScenarioHistoryAdapter = new V2XScenarioHistoryAdapter(mV2XHistoryScenarioData);
mRecyclerView.setAdapter(mV2XScenarioHistoryAdapter);
mRecyclerView.addItemDecoration(new SpacesItemDecoration(14));
@@ -51,12 +59,28 @@ public class V2XScenarioHistoryFragment
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false);
mRecyclerView.setLayoutManager(layoutManager);
initListener();
mEmptyView.setTripMessage("暂无交通事件");
mEmptyView.setRefreshVisibility(false);
}
/**
* 初始化页面用到得监听
*/
private void initListener() {
mEmptyView.setOnControlListener(new V2XListEmptyView.OnControlListener() {
@Override
public void onShearClick() {
V2XServiceManager.getMogoShareManager().showShareDialog();
}
@Override
public void onRefreshClick() {
}
});
V2XServiceManager.getMoGoV2XStatusManager()
.registerStatusChangedListener(
TAG,
@@ -85,7 +109,14 @@ public class V2XScenarioHistoryFragment
public void loadHistory(List<V2XHistoryScenarioData> v2XHistoryScenarioData) {
Logger.d(TAG, "查询到历史消息:" + GsonUtil.jsonFromObject(v2XHistoryScenarioData));
mV2XHistoryScenarioData.clear();
mV2XHistoryScenarioData.addAll(v2XHistoryScenarioData);
if (v2XHistoryScenarioData.size() > 0) {
mEmptyView.setVisibility(View.GONE);
mClHistoryList.setVisibility(View.VISIBLE);
mV2XHistoryScenarioData.addAll(v2XHistoryScenarioData);
} else {
mEmptyView.setVisibility(View.VISIBLE);
mClHistoryList.setVisibility(View.GONE);
}
mV2XScenarioHistoryAdapter.notifyDataSetChanged();
}

View File

@@ -73,6 +73,15 @@ public class V2XSQLiteUtils {
return getScenarioHistoryDao().query(new V2XHistoryScenarioData(), "triggerTime", true);
}
/**
* 查询当天的未评价V2X数据
*/
public static List<V2XHistoryScenarioData> getScenarioHistoryUnDisposeData() {
V2XHistoryScenarioData v2XHistoryScenarioData = new V2XHistoryScenarioData();
v2XHistoryScenarioData.isDispose = false;
return getScenarioHistoryDao().query(v2XHistoryScenarioData, "triggerTime", true);
}
/**
* 修改指定的数据
*/

View File

@@ -0,0 +1,97 @@
package com.mogo.module.v2x.view;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.Nullable;
import com.mogo.module.v2x.R;
/**
* 列表空白布局View
*
* @author donghongyu
*/
public class V2XListEmptyView extends LinearLayout {
private ImageView mIvEmptyView;
private TextView mTvTrip;
private Button mBtnShear;
private Button mBtnRefresh;
private OnControlListener mOnControlListener;
public V2XListEmptyView(Context context) {
this(context, null);
}
public V2XListEmptyView(Context context, @Nullable AttributeSet attrs) {
this(context, attrs, 0);
}
public V2XListEmptyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
LayoutInflater.from(context).inflate(R.layout.view_history_empty, this);
initView();
}
private void initView() {
mIvEmptyView = findViewById(R.id.ivEmptyView);
mTvTrip = findViewById(R.id.tvTrip);
mBtnShear = findViewById(R.id.btnShear);
mBtnRefresh = findViewById(R.id.btnRefresh);
mBtnShear.setOnClickListener(v -> {
if (mOnControlListener != null) {
mOnControlListener.onShearClick();
}
});
mBtnRefresh.setOnClickListener(v -> {
if (mOnControlListener != null) {
mOnControlListener.onRefreshClick();
}
});
}
public void setTripMessage(String tripMsg) {
if (mTvTrip != null) {
mTvTrip.setText(tripMsg);
}
}
public void setShearVisibility(boolean visibility) {
if (mBtnShear != null) {
if (visibility) {
mBtnShear.setVisibility(VISIBLE);
} else {
mBtnShear.setVisibility(GONE);
}
}
}
public void setRefreshVisibility(boolean visibility) {
if (mBtnRefresh != null) {
if (visibility) {
mBtnRefresh.setVisibility(VISIBLE);
} else {
mBtnRefresh.setVisibility(GONE);
}
}
}
public void setOnControlListener(OnControlListener onControlListener) {
this.mOnControlListener = onControlListener;
}
public interface OnControlListener {
void onShearClick();
void onRefreshClick();
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

View File

@@ -1,8 +1,10 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<corners android:radius="@dimen/dp_30" />
<gradient android:angle="90" android:endColor="#3F456D" android:startColor="#3F435F" />
<corners android:radius="@dimen/dp_40" />
<gradient android:angle="135"
android:endColor="#3F456D"
android:startColor="#3F435F" />
</shape>
</item>
</selector>

View File

@@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false">
<shape>
<corners android:radius="@dimen/dp_16" />
<solid android:color="#3F4057" />
</shape>
</item>
<item android:state_pressed="true">
<shape>
<corners android:radius="@dimen/dp_16" />
<solid android:color="#cc3F4057" />
</shape>
</item>
</selector>

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false">
<shape>
<corners android:radius="@dimen/dp_180" />
<gradient
android:angle="180"
android:endColor="#3F4057"
android:startColor="#3F4057" />
</shape>
</item>
<item android:state_pressed="true">
<shape>
<corners android:radius="@dimen/dp_180" />
<gradient
android:angle="180"
android:endColor="#3F4057"
android:startColor="#3F4057" />
</shape>
</item>
</selector>

View File

@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false">
<shape>
<corners android:radius="@dimen/dp_180" />
<gradient
android:angle="180"
android:endColor="#5CC1FF"
android:startColor="#256BFF" />
</shape>
</item>
<item android:state_pressed="true">
<shape>
<corners android:radius="@dimen/dp_180" />
<gradient
android:angle="180"
android:endColor="#5CC1FF"
android:startColor="#256BFF" />
</shape>
</item>
</selector>

View File

@@ -30,13 +30,11 @@
android:layout_marginEnd="@dimen/dp_12"
android:background="@drawable/v2x_drawable_event_message_bkg"
android:paddingStart="@dimen/dp_10"
android:paddingTop="@dimen/dp_0_5"
android:paddingEnd="@dimen/dp_10"
android:paddingBottom="@dimen/dp_0_5"
android:textColor="#FFFFFF"
android:textSize="@dimen/dp_28"
android:visibility="gone"
tools:text="99"
tools:text="9"
tools:visibility="visible" />
</RelativeLayout>

View File

@@ -1,35 +1,49 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#00000000">
<TextView
android:id="@+id/tvMessage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="@dimen/dp_60"
android:paddingBottom="@dimen/dp_27"
android:text="今日出行遇到的交通事件"
android:textColor="#FFFFFF"
android:textSize="@dimen/dp_36"
android:textStyle="bold"
app:layout_scrollFlags="scroll|enterAlways" />
</com.google.android.material.appbar.AppBarLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
<com.mogo.module.v2x.view.V2XListEmptyView
android:id="@+id/viewEmpty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:listitem="@layout/item_v2x_illegal_parking" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
android:visibility="gone"
tools:visibility="visible" />
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:id="@+id/clHistoryList"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#00000000">
<TextView
android:id="@+id/tvMessage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="@dimen/dp_60"
android:paddingBottom="@dimen/dp_27"
android:text="今日出行遇到的交通事件"
android:textColor="#FFFFFF"
android:textSize="@dimen/dp_36"
android:textStyle="bold"
app:layout_scrollFlags="scroll|enterAlways" />
</com.google.android.material.appbar.AppBarLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:listitem="@layout/item_v2x_illegal_parking" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</RelativeLayout>

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="utf-8"?>
<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="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/ivEmptyView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_120"
android:src="@drawable/icon_blank_history_event"
app:layout_constraintBottom_toTopOf="@+id/tvTrip"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tvTrip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_30"
android:gravity="center"
android:text="周边5公里暂无交通事件\n
你可以试着分享一个交通事件给其他车主"
android:textColor="#FFFFFF"
android:textSize="@dimen/dp_36"
app:layout_constraintBottom_toTopOf="@+id/btnShear"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/ivEmptyView" />
<Button
android:id="@+id/btnShear"
android:layout_width="@dimen/dp_300"
android:layout_height="@dimen/dp_96"
android:layout_marginTop="@dimen/dp_60"
android:background="@drawable/v2xt_dw_common_corner_bkg_dark"
android:gravity="center"
android:text="去分享"
android:textColor="#FFFFFF"
android:textSize="@dimen/dp_36"
app:layout_constraintEnd_toStartOf="@+id/btnRefresh"
app:layout_constraintStart_toStartOf="@+id/ivEmptyView"
app:layout_constraintTop_toBottomOf="@+id/tvTrip" />
<Button
android:id="@+id/btnRefresh"
android:layout_width="@dimen/dp_300"
android:layout_height="@dimen/dp_96"
android:layout_marginStart="@dimen/dp_60"
android:layout_marginTop="@dimen/dp_60"
android:background="@drawable/v2xt_dw_common_corner_bkg_light"
android:gravity="center"
android:text="刷新"
android:textColor="#FFFFFF"
android:textSize="@dimen/dp_36"
app:layout_constraintEnd_toEndOf="@+id/ivEmptyView"
app:layout_constraintStart_toEndOf="@+id/btnShear"
app:layout_constraintTop_toBottomOf="@+id/tvTrip" />
</androidx.constraintlayout.widget.ConstraintLayout>