乘客评论添加文字评论

This commit is contained in:
yangyakun
2022-06-21 20:29:06 +08:00
committed by liujing
parent c6f9175b50
commit cad389448e
18 changed files with 436 additions and 46 deletions

View File

@@ -47,8 +47,9 @@ dependencies {
implementation rootProject.ext.dependencies.kotlinstdlibjdk7
implementation rootProject.ext.dependencies.androidxappcompat
implementation rootProject.ext.dependencies.arouter
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation rootProject.ext.dependencies.androidxrecyclerview
implementation 'com.google.android.material:material:1.2.1'
implementation rootProject.ext.dependencies.flexbox
annotationProcessor rootProject.ext.dependencies.aroutercompiler
implementation rootProject.ext.dependencies.rxandroid
implementation rootProject.ext.dependencies.androidxconstraintlayout

View File

@@ -0,0 +1,26 @@
package com.mogo.och.taxi.passenger.bean;
import com.mogo.eagle.core.data.BaseData;
import java.util.List;
/**
* Created by pangfan on 2021/8/19
*
* 查询订单返回数据结构
*/
public class TaxiPassengerAllStarWorld extends BaseData {
public List<TaxiPassengerStarWorld> data;
public static class TaxiPassengerStarWorld {
public TaxiPassengerStarWorld(String labelInfo) {
this.labelInfo = labelInfo;
}
public String labelNo;
public String labelInfo;
public String star;
public String sort;
public Boolean isSelect = false;
}
}

View File

@@ -1,5 +1,7 @@
package com.mogo.och.taxi.passenger.bean;
import java.util.List;
/**
* Created by pangfan on 2021/8/19
*
@@ -9,9 +11,17 @@ public class TaxiPassengerScoreUpdateOrderReqBean {
public String orderNo;
public int star;
public List<TaxiPassengerAllStarWorld.TaxiPassengerStarWorld> evalLabeBasicList;
public TaxiPassengerScoreUpdateOrderReqBean(String orderNo, int star) {
public TaxiPassengerScoreUpdateOrderReqBean(String orderNo, int star,List<TaxiPassengerAllStarWorld.TaxiPassengerStarWorld> data) {
this.orderNo = orderNo;
this.star = star;
for (TaxiPassengerAllStarWorld.TaxiPassengerStarWorld datum : data) {
datum.isSelect=null;
datum.sort = null;
datum.star = null;
}
this.evalLabeBasicList = data;
}
}

View File

@@ -1,5 +1,7 @@
package com.mogo.och.taxi.passenger.callback;
import com.mogo.och.taxi.passenger.bean.TaxiPassengerScoreUpdateOrderReqBean;
public interface ITaxiPassengerScoreCallback {
void onScoreCallback(int fraction,String orderNo);
void onScoreCallback(TaxiPassengerScoreUpdateOrderReqBean taxiPassengerScoreUpdateOrderReqBean);
}

View File

@@ -36,6 +36,7 @@ import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRemainingResp;
import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean;
import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBean;
import com.mogo.och.taxi.passenger.bean.TaxiPassengerQueryOrderRouteResp;
import com.mogo.och.taxi.passenger.bean.TaxiPassengerScoreUpdateOrderReqBean;
import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerADASStatusCallback;
import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerAutopilotPlanningCallback;
import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerControllerStatusCallback;
@@ -682,7 +683,6 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback
public void checkPhoneAndUpdateStatus(String phoneTail,ITaxiPassengerCommonCallback commonCallback) {
if (mCurrentOCHOrder == null) return;
CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "--route--- checkPhoneAndUpdateStatus");
TaxiPassengerServiceManager.getInstance().checkPhoneAndUpdateOrderStatus(mContext, mCurrentOCHOrder.orderNo,
phoneTail, new TaxiPassengerServiceCallback<TaxiPassengerBaseRespBean>() {
@Override
@@ -700,14 +700,14 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback
@Override
public void onFail(int code, String msg) {
ToastUtils.showLong("当前网络异常,请重新验证;若始终异常,请您在手机端取消行程,给您带来不便,十分抱歉!");
CallerLogger.INSTANCE.e(TAG,"提交用户输入的手机后4位、并进行状态扭转 后台结果错误"+code+msg);
CallerLogger.INSTANCE.e(M_TAXI_P + TAG,"提交用户输入的手机后4位、并进行状态扭转 后台结果错误"+code+msg);
}
});
}
public void arrivedAndScore(int score,String orderNo ,ITaxiPassengerCommonValueCallback<Boolean> commonCallback) {
if (orderNo == null) return;
TaxiPassengerServiceManager.getInstance().arrivedAndScore(mContext,orderNo,score,
public void arrivedAndScore(TaxiPassengerScoreUpdateOrderReqBean taxiPassengerScoreUpdateOrderReqBean , ITaxiPassengerCommonValueCallback<Boolean> commonCallback) {
if (taxiPassengerScoreUpdateOrderReqBean.orderNo == null) return;
TaxiPassengerServiceManager.getInstance().arrivedAndScore(mContext,taxiPassengerScoreUpdateOrderReqBean,
new TaxiPassengerServiceCallback<TaxiPassengerBaseRespBean>() {
@Override
public void onSuccess(TaxiPassengerBaseRespBean data) {
@@ -719,7 +719,7 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback
@Override
public void onError() {
ToastUtils.showLong("网络错误请稍后再试");
CallerLogger.INSTANCE.e(TAG,"对订单进行打分 1-5分 网络错误");
CallerLogger.INSTANCE.e(M_TAXI_P + TAG,"对订单进行打分 1-5分 网络错误");
if(commonCallback!=null) {
commonCallback.onCommonCallback(false);
}
@@ -727,7 +727,7 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback
@Override
public void onFail(int code, String msg) {
CallerLogger.INSTANCE.e(TAG,"对订单进行打分 1-5分 后台结果错误"+code+msg);
CallerLogger.INSTANCE.e(M_TAXI_P + TAG,"对订单进行打分 1-5分 后台结果错误"+code+msg);
if(commonCallback!=null) {
commonCallback.onCommonCallback(false);
}

View File

@@ -1,4 +1,5 @@
package com.mogo.och.taxi.passenger.network;
import com.mogo.och.taxi.passenger.bean.TaxiPassengerAllStarWorld;
import com.mogo.och.taxi.passenger.bean.TaxiPassengerBaseRespBean;
import com.mogo.och.taxi.passenger.bean.TaxiPassengerCheckPhoneUpdateOrderReqBean;
import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRemainingResp;
@@ -73,16 +74,31 @@ interface TaxiPassengerServiceApi {
* @return
*/
@Headers( {"Content-type:application/json;charset=UTF-8"} )
@POST( "/autopilot-car-hailing/order/v2/vehicle/taxi/passenger/verification/phone" )
@POST( "/autopilot-car-hailing/cab/flow/v1/driver/taxi/passenger/verification/phone" )
Observable<TaxiPassengerBaseRespBean> checkPhoneAndUpdateOrderStatus(@Header ("appId") String appId, @Header("ticket") String ticket, @Body TaxiPassengerCheckPhoneUpdateOrderReqBean data);
/**
* 对订单进行打分 1-5分
* 对订单进行打分 1-5分 加上文案评论
* @param data
* @return
*/
@Headers( {"Content-type:application/json;charset=UTF-8"} )
@POST( "/autopilot-car-hailing/evaluation/vehicle/taxi/passenger/add" )
@POST( "/autopilot-car-hailing/evaluation/info/driver/taxi/submit" )
Observable<TaxiPassengerBaseRespBean> arrivedAndScore(@Header ("appId") String appId, @Header("ticket") String ticket, @Body TaxiPassengerScoreUpdateOrderReqBean data);
/**
* 获取星星对应的文案(所有文案)
* @return
*/
@Headers( {"Content-type:application/json;charset=UTF-8"} )
@GET( "/autopilot-car-hailing/evaluation/label/driver/taxi/list" )
Observable<TaxiPassengerAllStarWorld> getWorldAllStar(@Header ("appId") String appId, @Header("ticket") String ticket);
/**
* 获取星星对应的文案(和星星一一对应)
* @return
*/
@Headers( {"Content-type:application/json;charset=UTF-8"} )
@GET( "/autopilot-car-hailing/evaluation/label/driver/taxi/listByStar" )
Observable<TaxiPassengerAllStarWorld> getWorldByStar(@Header ("appId") String appId, @Header("ticket") String ticket,@Query("star") String star);
}

View File

@@ -11,7 +11,7 @@ import com.mogo.eagle.core.network.MoGoRetrofitFactory;
import com.mogo.eagle.core.network.RequestOptions;
import com.mogo.eagle.core.network.SubscribeImpl;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.och.taxi.passenger.bean.TaxiPassengerAllStarWorld;
import com.mogo.och.taxi.passenger.bean.TaxiPassengerBaseRespBean;
import com.mogo.och.taxi.passenger.bean.TaxiPassengerCheckPhoneUpdateOrderReqBean;
import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRemainingResp;
@@ -54,7 +54,7 @@ public class TaxiPassengerServiceManager {
*/
private String getDriverAppSn(){
if(DebugConfig.isDebug()){
return "X20202205051RD29W4";
return "X20202206092431156";
}else {
return CallerTelematicManager.INSTANCE.getServerToken();
}
@@ -160,13 +160,31 @@ public class TaxiPassengerServiceManager {
.observeOn(AndroidSchedulers.mainThread())
.subscribe(getSubscribeImpl(context, callback, "checkPhoneAndUpdateOrderStatus"));
}
public void arrivedAndScore(Context context, String orderNo,int star,TaxiPassengerServiceCallback<TaxiPassengerBaseRespBean> callback){
public void arrivedAndScore(Context context,TaxiPassengerScoreUpdateOrderReqBean taxiPassengerScoreUpdateOrderReqBean, TaxiPassengerServiceCallback<TaxiPassengerBaseRespBean> callback){
mOCHTaxiServiceApi.arrivedAndScore(
MoGoAiCloudClientConfig.getInstance().getServiceAppId()
,MoGoAiCloudClientConfig.getInstance().getToken()
,new TaxiPassengerScoreUpdateOrderReqBean(orderNo,star))
,taxiPassengerScoreUpdateOrderReqBean)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(getSubscribeImpl(context, callback, "checkPhoneAndUpdateOrderStatus"));
}
public void getAllScoreWorld(Context context,TaxiPassengerServiceCallback<TaxiPassengerAllStarWorld> callback){
mOCHTaxiServiceApi.getWorldAllStar(
MoGoAiCloudClientConfig.getInstance().getServiceAppId()
,MoGoAiCloudClientConfig.getInstance().getToken())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(getSubscribeImpl(context, callback, "checkPhoneAndUpdateOrderStatus"));
}
public void getWorldByStar(Context context,String start,TaxiPassengerServiceCallback<TaxiPassengerAllStarWorld> callback){
mOCHTaxiServiceApi.getWorldByStar(
MoGoAiCloudClientConfig.getInstance().getServiceAppId()
,MoGoAiCloudClientConfig.getInstance().getToken(),start)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(getSubscribeImpl(context, callback, "checkPhoneAndUpdateOrderStatus"));
}
}

View File

@@ -14,6 +14,7 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean;
import com.mogo.och.taxi.passenger.bean.TaxiPassengerScoreUpdateOrderReqBean;
import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerADASStatusCallback;
import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerControllerStatusCallback;
import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerOrderStatusCallback;
@@ -214,11 +215,10 @@ public class BaseTaxiPassengerPresenter extends Presenter<TaxiPassengerBaseFragm
}
/**
*
* @param score 分数
* 封装请求
*/
public void arrivedAndScore(int score,String orderNo){
TaxiPassengerModel.getInstance().arrivedAndScore(score,orderNo, aBoolean -> mView.showArrivedEndLayout2Thank(aBoolean));
public void arrivedAndScore(TaxiPassengerScoreUpdateOrderReqBean taxiPassengerScoreUpdateOrderReqBean){
TaxiPassengerModel.getInstance().arrivedAndScore(taxiPassengerScoreUpdateOrderReqBean,aBoolean -> mView.showArrivedEndLayout2Thank(aBoolean));
}
}

View File

@@ -5,7 +5,6 @@ import android.os.Looper;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.fragment.app.FragmentTransaction;
@@ -17,19 +16,16 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListener
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager;
import com.mogo.eagle.core.function.call.map.CallerSmpManager;
import com.mogo.eagle.core.utilcode.util.OverlayViewUtils;
import com.mogo.eagle.core.utilcode.util.ToastUtils;
import com.mogo.map.MogoMapUIController;
import com.mogo.map.MogoMarkerManager;
import com.mogo.map.listener.IMogoMapListener;
import com.mogo.map.uicontroller.VisualAngleMode;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.module.common.constants.DataTypes;
import com.mogo.och.common.module.wigets.OCHBorderShadowLayout;
import com.mogo.och.taxi.passenger.R;
import com.mogo.och.taxi.passenger.callback.ITPClickStartAutopilotCallback;
import com.mogo.och.taxi.passenger.presenter.BaseTaxiPassengerPresenter;
import com.mogo.och.taxi.passenger.ui.leftmenu.OverlayLeftViewUtils;
import com.mogo.och.taxi.passenger.ui.video.TaxiPassengerMogoConsultView;
import com.mogo.och.taxi.passenger.ui.comment.TaxiPassengerArrivedView;
import java.lang.ref.WeakReference;
@@ -121,13 +117,13 @@ public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFrag
MogoMapUIController.getInstance().changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
mMapswitchBtn.setImageResource(R.drawable.taxi_p_switch_map_long);
}
OverlayLeftViewUtils.INSTANCE.dismissOverlayView();
//OverlayLeftViewUtils.INSTANCE.dismissOverlayView();
}
});
findViewById(R.id.iv_temp).setOnClickListener(view -> {
OverlayLeftViewUtils.INSTANCE.showOverlayView(getActivity());
//showOrHideArrivedEndLayout(true, "北京北京北京", "1527481606997577728");
//OverlayLeftViewUtils.INSTANCE.showOverlayView(getActivity());
showOrHideArrivedEndLayout(true, "北京北京北京", "1527481606997577728");
//showOrHidePressengerCheckPager(true, "开始站点开", "开始站点开始站点开始", "2", "京A888888", "18811539480");
//OCHFloatWindowManager.getInstance().ShowFloatWindow(getContext());
//OverlayViewUtils.showOverlayView(getActivity(),new TaxiPassengerMogoConsultView(getContext()));
@@ -136,7 +132,7 @@ public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFrag
private void initArrivedView(){
mArrivedEndView = new WeakReference<>(new TaxiPassengerArrivedView(getContext()));
mArrivedEndView.get().setITaxiPassengerScoreCallback((fraction, orderNo) -> getPresenter().arrivedAndScore(fraction,orderNo));
mArrivedEndView.get().setITaxiPassengerScoreCallback((taxiPassengerScoreUpdateOrderReqBean) -> getPresenter().arrivedAndScore(taxiPassengerScoreUpdateOrderReqBean));
}
private void initCheckView() {

View File

@@ -1,4 +1,4 @@
package com.mogo.och.taxi.passenger.ui
package com.mogo.och.taxi.passenger.ui.comment
import android.animation.*
import android.content.Context
@@ -11,16 +11,29 @@ import android.view.animation.AnimationUtils
import android.widget.ImageView
import android.widget.RelativeLayout
import android.widget.TextView
import androidx.appcompat.widget.AppCompatButton
import androidx.appcompat.widget.AppCompatImageView
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.recyclerview.widget.RecyclerView
import com.amap.api.navi.view.PoiInputSearchWidget
import com.google.android.flexbox.FlexWrap
import com.google.android.flexbox.FlexboxLayoutManager
import com.google.android.flexbox.JustifyContent
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.OverlayViewUtils
import com.mogo.eagle.core.widget.media.video.SimpleVideoPlayer
import com.mogo.och.common.module.wigets.OCHBorderShadowLayout
import com.mogo.och.taxi.passenger.R
import com.mogo.och.taxi.passenger.bean.TaxiPassengerAllStarWorld
import com.mogo.och.taxi.passenger.bean.TaxiPassengerScoreUpdateOrderReqBean
import com.mogo.och.taxi.passenger.callback.ITaxiPassengerCommonCallback
import com.mogo.och.taxi.passenger.callback.ITaxiPassengerScoreCallback
import com.mogo.och.taxi.passenger.network.TaxiPassengerServiceCallback
import com.mogo.och.taxi.passenger.network.TaxiPassengerServiceManager
import com.mogo.och.taxi.passenger.ui.comment.adapter.CommentAdapter
import com.mogo.och.taxi.passenger.widget.ResizeAnimation
import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
import com.shuyu.gsyvideoplayer.utils.GSYVideoType
@@ -55,10 +68,14 @@ class TaxiPassengerArrivedView :RelativeLayout, View.OnClickListener {
private lateinit var ivStarFourth: ImageView
private lateinit var ivStarFifth: ImageView
private lateinit var ivAnimalList: ImageView
private lateinit var btnSubmit: AppCompatButton
private lateinit var rvCommentList: RecyclerView
private lateinit var acivClose: AppCompatImageView
private lateinit var svpFrame: SimpleVideoPlayer
private lateinit var clCommentContain: ConstraintLayout
private var subscribe: Disposable?=null
private var orderNo = ""
private var currentFraction = 1
private val gsyVideoOptionBuilder = GSYVideoOptionBuilder()
@@ -79,6 +96,7 @@ class TaxiPassengerArrivedView :RelativeLayout, View.OnClickListener {
private var allStartOrdered = mutableListOf<ImageView>()
var showThanks:Boolean = false
var allStarWithWorld: TaxiPassengerAllStarWorld?=null
private fun initView(context: Context) {
d(SceneConstant.M_TAXI_P + TAG, "initView")
@@ -90,6 +108,9 @@ class TaxiPassengerArrivedView :RelativeLayout, View.OnClickListener {
ivAnimalList = findViewById(R.id.iv_animal_list)
acivClose = findViewById(R.id.aciv_close)
svpFrame = findViewById(R.id.svp_frame)
rvCommentList = findViewById(R.id.rv_comment_list)
clCommentContain = findViewById(R.id.cl_comment_contain)
btnSubmit = findViewById(R.id.btn_submit)
svpFrame.setBackgroundResource(R.drawable.tail_ani_0000)
svpFrame.setIsTouchWiget(false)
svpFrame.setIsTouchWigetFull(false)
@@ -97,15 +118,11 @@ class TaxiPassengerArrivedView :RelativeLayout, View.OnClickListener {
svpFrame.enableDoubleClick = false
allStartOrdered = mutableListOf()
initCommentList()
initScore()
findViewById<View>(R.id.tv_please_score).setOnClickListener(this)
// debug 弹出
mArrivedEndStation.setOnLongClickListener {
scoreSuccess()
false
}
acivClose.setOnClickListener {
ochShadowLayout.visibility = View.GONE
@@ -125,6 +142,16 @@ class TaxiPassengerArrivedView :RelativeLayout, View.OnClickListener {
GSYVideoType.setShowType(GSYVideoType.SCREEN_TYPE_FULL)
}
private fun initCommentList() {
val recyclerVideoAdapter = CommentAdapter(context, mutableListOf())
rvCommentList.adapter = recyclerVideoAdapter
val manager = FlexboxLayoutManager(context)
manager.justifyContent = JustifyContent.CENTER
manager.flexWrap = FlexWrap.WRAP
rvCommentList.layoutManager = manager
btnSubmit.setOnClickListener(this)
}
private fun initScore() {
ivStarFirst = findViewById(R.id.iv_star_first)
ivStarSecond = findViewById(R.id.iv_star_second)
@@ -142,11 +169,20 @@ class TaxiPassengerArrivedView :RelativeLayout, View.OnClickListener {
allStartOrdered.add(ivStarThird)
allStartOrdered.add(ivStarFourth)
allStartOrdered.add(ivStarFifth)
// 请求文案
requestStarWord()
}
override fun onDetachedFromWindow() {
svpFrame.setBackgroundResource(R.drawable.tail_ani_0000)
tvFeel.text = ""
rvCommentList.visibility = View.INVISIBLE
btnSubmit.visibility = View.INVISIBLE
clCommentContain.getLayoutParams().height = 657
clCommentContain.requestLayout()
super.onDetachedFromWindow()
subscribe?.let {
if (!it.isDisposed) {
@@ -158,23 +194,45 @@ class TaxiPassengerArrivedView :RelativeLayout, View.OnClickListener {
override fun onClick(v: View?) {
when (v?.id) {
R.id.tv_please_score -> {
iTaxiPassengerScoreCallback?.onScoreCallback(2,orderNo)
//iTaxiPassengerScoreCallback?.onScoreCallback(2,orderNo)
}
R.id.iv_star_first -> {commitAndStartAnimation(1,"不满意")}
R.id.iv_star_second -> {commitAndStartAnimation(2,"不满意")}
R.id.iv_star_third -> {commitAndStartAnimation(3,"一般")}
R.id.iv_star_fourth -> {commitAndStartAnimation(4,"舒适")}
R.id.iv_star_fifth -> {commitAndStartAnimation(5,"舒适")}
R.id.btn_submit -> {submitScore()}
else -> {}
}
}
/**
* 提交到后台
*/
private fun submitScore() {
val commentAdapter = rvCommentList.adapter as CommentAdapter
val selectComment = commentAdapter.getSelectComment()
iTaxiPassengerScoreCallback?.onScoreCallback(TaxiPassengerScoreUpdateOrderReqBean(orderNo,currentFraction,selectComment))
}
private fun commitAndStartAnimation(fraction: Int,title:String) {
resetStar()
currentFraction = fraction
tvFeel.text = title
startStartAnimation(fraction)
allStartOrdered.forEach {
it.isEnabled = false
if(allStarWithWorld!=null&&allStarWithWorld!!.data!=null&&allStarWithWorld!!.data!!.size>0){
// 已经请求到总量了
val filter = allStarWithWorld!!.data.filter { it.star == fraction.toString() }
val commentAdapter = rvCommentList.adapter as CommentAdapter
commentAdapter.addAll(filter.toMutableList())
startStartAnimation(fraction)
}else{
// 总量请求失败 单独去取
requestStarWordByStar(fraction)
}
// allStartOrdered.forEach {
// it.isEnabled = false
// }
}
private var currentAnimarion = 0
private var maxIndex = 0
@@ -235,13 +293,36 @@ class TaxiPassengerArrivedView :RelativeLayout, View.OnClickListener {
set.addListener(object : AnimatorListenerAdapter() {
override fun onAnimationEnd(animation: Animator?) {
super.onAnimationEnd(animation)
iTaxiPassengerScoreCallback?.onScoreCallback(fraction,orderNo)
// 启动变高动画
startChangeHeightAnimarion()
}
})
}
set.start()
}
private fun startChangeHeightAnimarion() {
// 815 除了 点评的高度
val resizeAnimation = ResizeAnimation(clCommentContain,815+rvCommentList.height, clCommentContain.height)
resizeAnimation.duration = 300
resizeAnimation.setAnimationListener(object :Animation.AnimationListener{
override fun onAnimationStart(animation: Animation?) {
rvCommentList.visibility = View.VISIBLE
btnSubmit.visibility = View.VISIBLE
}
override fun onAnimationEnd(animation: Animation?) {
}
override fun onAnimationRepeat(animation: Animation?) {
}
})
clCommentContain.startAnimation(resizeAnimation)
}
/**
* 设置目的地重置星星状态
*/
@@ -316,6 +397,59 @@ class TaxiPassengerArrivedView :RelativeLayout, View.OnClickListener {
}
}
private fun requestStarWord() {
TaxiPassengerServiceManager.getInstance().getAllScoreWorld(context,
object : TaxiPassengerServiceCallback<TaxiPassengerAllStarWorld?> {
override fun onError() {
CallerLogger.e(
SceneConstant.M_TAXI_P + TAG,
"/autopilot-car-hailing/evaluation/label/driver/taxi/list 接口 onError"
)
}
override fun onFail(code: Int, msg: String) {
CallerLogger.e(
SceneConstant.M_TAXI_P + TAG,
"/autopilot-car-hailing/evaluation/label/driver/taxi/list 接口:${code}---${msg}"
)
}
override fun onSuccess(data: TaxiPassengerAllStarWorld?) {
allStarWithWorld = data
}
})
}
private fun requestStarWordByStar(start:Int) {
TaxiPassengerServiceManager.getInstance().getWorldByStar(context,start.toString(),
object : TaxiPassengerServiceCallback<TaxiPassengerAllStarWorld?> {
override fun onError() {
CallerLogger.e(
SceneConstant.M_TAXI_P + TAG,
"/autopilot-car-hailing/evaluation/label/driver/taxi/listByStar 接口 onError"
)
}
override fun onFail(code: Int, msg: String) {
CallerLogger.e(
SceneConstant.M_TAXI_P + TAG,
"/autopilot-car-hailing/evaluation/label/driver/taxi/listByStar 接口:${code}---${msg}"
)
}
override fun onSuccess(data: TaxiPassengerAllStarWorld?) {
if(data?.data != null &&data.data!!.size>0){
val commentAdapter = rvCommentList.adapter as CommentAdapter
commentAdapter.addAll(data.data.toMutableList())
startStartAnimation(start)
}
}
})
}
companion object {
const val TAG = "TaxiPassengerArrivedView"
}

View File

@@ -0,0 +1,56 @@
package com.mogo.och.taxi.passenger.ui.comment.adapter
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.mogo.och.taxi.passenger.R
import com.mogo.och.taxi.passenger.bean.TaxiPassengerAllStarWorld.TaxiPassengerStarWorld
class CommentAdapter(private val context: Context?,private val itemDataList: MutableList<TaxiPassengerStarWorld>) :
RecyclerView.Adapter<ItemCommentHolder>() {
fun add(taxiPassengerStarWorld: TaxiPassengerStarWorld) {
itemDataList.add(taxiPassengerStarWorld)
notifyItemInserted(itemDataList.size)
}
fun addAll(itemDataList: MutableList<TaxiPassengerStarWorld>){
this.itemDataList.clear()
this.itemDataList.addAll(itemDataList)
this.notifyDataSetChanged()
}
fun getSelectComment(): List<TaxiPassengerStarWorld> {
return itemDataList.filter { it.isSelect }
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemCommentHolder {
val v = LayoutInflater.from(context).inflate(R.layout.list_comment_item, parent, false)
return ItemCommentHolder(context, v)
}
override fun onBindViewHolder(holder: ItemCommentHolder, position: Int) {
val taxiPassengerStarWorld = itemDataList[position]
holder.commentItem.text = taxiPassengerStarWorld.labelInfo
if (taxiPassengerStarWorld.isSelect!=null&&taxiPassengerStarWorld.isSelect) {
taxiPassengerStarWorld.isSelect = true
holder.commentItem.setBackgroundResource(R.drawable.taxi_p_comment_selected)
} else {
taxiPassengerStarWorld.isSelect = false
holder.commentItem.setBackgroundResource(R.drawable.taxi_p_comment_select)
}
holder.commentItem.setOnClickListener { v: View? ->
taxiPassengerStarWorld.isSelect = !taxiPassengerStarWorld.isSelect
notifyItemChanged(holder.bindingAdapterPosition)
}
}
override fun getItemCount(): Int {
return itemDataList.size
}
companion object {
private const val TAG = "RecyclerBaseAdapter"
}
}

View File

@@ -0,0 +1,25 @@
package com.mogo.och.taxi.passenger.ui.comment.adapter;
import android.content.Context;
import android.view.View;
import android.widget.CheckBox;
import androidx.recyclerview.widget.RecyclerView;
import com.mogo.och.taxi.passenger.R;
public class ItemCommentHolder extends RecyclerView.ViewHolder {
public final static String TAG = "ItemCommentHolder";
protected Context context;
public CheckBox commentItem;
public ItemCommentHolder(Context context, View v) {
super(v);
this.context = context;
commentItem = v.findViewById(R.id.tv_comment);
}
}

View File

@@ -0,0 +1,39 @@
package com.mogo.och.taxi.passenger.widget;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.Transformation;
public class ResizeAnimation extends Animation {
final int targetHeight;
View view;
int startHeight;
public ResizeAnimation(View view, int targetHeight, int startHeight) {
this.view = view;
this.targetHeight = targetHeight;
this.startHeight = startHeight;
}
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
int newHeight = (int) (startHeight + (targetHeight-startHeight) * interpolatedTime);
view.getLayoutParams().height = newHeight;
view.requestLayout();
}
@Override
public void initialize(int width, int height, int parentWidth, int parentHeight) {
super.initialize(width, height, parentWidth, parentHeight);
}
@Override
public boolean willChangeBounds() {
return true;
}
}

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#314F85"/>
<corners android:radius="@dimen/dp_46"/>
</shape>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#3397FC"/>
<corners android:radius="@dimen/dp_46"/>
</shape>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="#22e5aa" android:endColor="#038f7e"/>
<corners android:radius="@dimen/dp_46"/>
</shape>

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<CheckBox xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/tv_comment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20px"
android:layout_marginBottom="20px"
android:layout_marginStart="10px"
android:layout_marginEnd="10px"
android:background="@drawable/taxi_p_comment_select"
android:button="@null"
android:paddingStart="40px"
android:paddingTop="8px"
android:paddingEnd="40px"
android:paddingBottom="8px"
android:textColor="@color/taxi_order_status_textColor"
android:textSize="40px"
tools:text="非常好" />

View File

@@ -37,22 +37,25 @@
app:shadowColor="#80000000"
app:shadowRadius="60px"
android:visibility="gone"
tools:visibility="visible"
app:shadow_position="outer"
app:xOffset="0px"
app:yOffset="0px">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_comment_contain"
android:layout_width="@dimen/dp_867"
android:layout_height="@dimen/dp_657"
app:layout_constraintBottom_toBottomOf="parent"
android:background="@drawable/bg_taxi_p_arrived_info"
app:layout_constraintStart_toStartOf="parent">
<ImageView
app:layout_constraintTop_toTopOf="parent"
android:src="@drawable/taxi_p_arrived_end_light"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
android:layout_height="wrap_content"
android:src="@drawable/taxi_p_arrived_end_light"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
app:layout_constraintBottom_toBottomOf="parent"
android:src="@drawable/taxi_p_arrived_end_light"
@@ -186,6 +189,33 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_comment_list"
app:layout_constraintTop_toBottomOf="@+id/iv_star_hide"
android:layout_marginTop="50px"
android:visibility="invisible"
android:layout_marginStart="@dimen/dp_53"
android:layout_marginEnd="@dimen/dp_53"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btn_submit"
android:text="提交"
android:gravity="center"
android:visibility="invisible"
android:textColor="@color/taxi_order_status_textColor"
app:layout_constraintTop_toBottomOf="@+id/rv_comment_list"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:background="@drawable/taxi_p_comment_submit"
android:textSize="@dimen/sp_46"
android:layout_marginTop="60px"
android:layout_width="400px"
android:layout_marginBottom="80px"
android:layout_height="wrap_content"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</com.mogo.och.common.module.wigets.OCHBorderShadowLayout>