diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java index d51972499c..31618df95a 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java @@ -42,6 +42,7 @@ import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerControllerStatusCal import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerNaviChangedCallback; import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerOrderStatusCallback; import com.mogo.och.taxi.passenger.callback.ITaxiPassengerCommonCallback; +import com.mogo.och.taxi.passenger.callback.ITaxiPassengerCommonValueCallback; import com.mogo.och.taxi.passenger.callback.ITaxiPassengerVeloctityCallback; import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst; import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum; @@ -701,7 +702,7 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback }); } - public void arrivedAndScore(int score,ITaxiPassengerCommonCallback commonCallback) { + public void arrivedAndScore(int score, ITaxiPassengerCommonValueCallback commonCallback) { if (mCurrentOCHOrder == null) return; CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "--route--- checkPhoneAndUpdateStatus"); TaxiPassengerServiceManager.getInstance().arrivedAndScore(mContext,mCurrentOCHOrder.orderNo, @@ -710,13 +711,24 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback public void onSuccess(TaxiPassengerBaseRespBean data) { ToastUtils.showLong("评分成功"); if(commonCallback!=null) { - commonCallback.onCommonCallback(); + commonCallback.onCommonCallback(true); + } + } + + @Override + public void onError() { + ToastUtils.showLong("网络错误请稍后再试"); + if(commonCallback!=null) { + commonCallback.onCommonCallback(false); } } @Override public void onFail(int code, String msg) { ToastUtils.showLong(msg); + if(commonCallback!=null) { + commonCallback.onCommonCallback(false); + } } }); } diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceApi.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceApi.java index 1857f7b1de..a8e84f6b69 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceApi.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceApi.java @@ -68,7 +68,7 @@ interface TaxiPassengerServiceApi { Observable queryOrderRoute(@Header ("appId") String appId, @Header("ticket") String ticket, @Query("orderNo") String orderNo); /** - * 通过orderNo查询订单信息(用于本地已经有orderNo时) + * 提交用户输入的手机后4位、并进行状态扭转 * @param data * @return */ @@ -77,7 +77,7 @@ interface TaxiPassengerServiceApi { Observable checkPhoneAndUpdateOrderStatus(@Header ("appId") String appId, @Header("ticket") String ticket, @Body TaxiPassengerCheckPhoneUpdateOrderReqBean data); /** - * 通过orderNo查询订单信息(用于本地已经有orderNo时) + * 对订单进行打分 1-5分 * @param data * @return */ diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java index 12871cd6b8..18f8c192d1 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java @@ -19,6 +19,7 @@ import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerADASStatusCallback; import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerControllerStatusCallback; import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerOrderStatusCallback; import com.mogo.och.taxi.passenger.callback.ITaxiPassengerCommonCallback; +import com.mogo.och.taxi.passenger.callback.ITaxiPassengerCommonValueCallback; import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum; import com.mogo.och.taxi.passenger.model.TaxiPassengerGeocodeSearchModel; import com.mogo.och.taxi.passenger.model.TaxiPassengerModel; @@ -145,7 +146,12 @@ public class BaseTaxiPassengerPresenter extends Presenter() { + @Override - public void onCommonCallback() { - mView.showOrHideArrivedEndLayout(false,""); + public void onCommonCallback(Boolean aBoolean) { + mView.showArrivedEndLayout2Thank(aBoolean); } }); } diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerArrivedView.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerArrivedView.kt index 601d466e15..0f40c4b5b3 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerArrivedView.kt +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerArrivedView.kt @@ -1,15 +1,18 @@ package com.mogo.och.taxi.passenger.ui +import android.animation.* import android.content.Context import android.util.AttributeSet import android.view.LayoutInflater import android.view.View +import android.view.animation.Animation import android.view.animation.AnimationUtils +import android.widget.ImageView import android.widget.RelativeLayout import android.widget.TextView +import com.amap.api.navi.view.PoiInputSearchWidget 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.och.common.module.wigets.OCHBorderShadowLayout import com.mogo.och.taxi.passenger.R import com.mogo.och.taxi.passenger.callback.ITaxiPassengerCommonValueCallback @@ -29,6 +32,181 @@ class TaxiPassengerArrivedView :RelativeLayout, View.OnClickListener { constructor(context: Context?, attributeSet: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attributeSet, defStyleAttr, defStyleRes) + private lateinit var mArrivedEndStation: TextView + private lateinit var tvFeel: TextView + private lateinit var ochShadowLayout: OCHBorderShadowLayout + private lateinit var ochThankShadowLayout: OCHBorderShadowLayout + private lateinit var ivStarFirst: ImageView + private lateinit var ivStarSecond: ImageView + private lateinit var ivStarThird: ImageView + private lateinit var ivStarFourth: ImageView + private lateinit var ivStarFifth: ImageView + + var taxiPassengerCommonValueCallback: ITaxiPassengerCommonValueCallback?=null + var trAnimation: Animation = AnimationUtils.loadAnimation( + context, R.anim.left_to_right + ) + var troutAnimation: Animation = AnimationUtils.loadAnimation( + context, R.anim.right_to_left + ) + var alphaAnimation: Animation = AnimationUtils.loadAnimation( + context, R.anim.alpha_hide_show + ) + + private var allStartOrdered = mutableListOf() + + private fun initView(context: Context) { + d(SceneConstant.M_TAXI_P + TAG, "initView") + LayoutInflater.from(context).inflate(R.layout.taxi_p_arrived_end_panel, this, true) + mArrivedEndStation = findViewById(R.id.arrived_end_station) + tvFeel = findViewById(R.id.tv_feel) + ochShadowLayout = findViewById(R.id.och_shadow_layout) + ochThankShadowLayout = findViewById(R.id.och_thank_shadow_layout) + + allStartOrdered = mutableListOf() + initScore() + + findViewById(R.id.tv_please_score).setOnClickListener(this) + + // debug 弹出 + mArrivedEndStation.setOnLongClickListener { + showThanksPageWithAnimation(true) + false + } + } + + private fun initScore() { + ivStarFirst = findViewById(R.id.iv_star_first) + ivStarSecond = findViewById(R.id.iv_star_second) + ivStarThird = findViewById(R.id.iv_star_third) + ivStarFourth = findViewById(R.id.iv_star_fourth) + ivStarFifth = findViewById(R.id.iv_star_fifth) + ivStarFirst.setOnClickListener(this) + ivStarSecond.setOnClickListener(this) + ivStarThird.setOnClickListener(this) + ivStarFourth.setOnClickListener(this) + ivStarFifth.setOnClickListener(this) + + allStartOrdered.add(ivStarFirst) + allStartOrdered.add(ivStarSecond) + allStartOrdered.add(ivStarThird) + allStartOrdered.add(ivStarFourth) + allStartOrdered.add(ivStarFifth) + } + + override fun onClick(v: View?) { + when (v?.id) { + R.id.tv_please_score -> { + taxiPassengerCommonValueCallback?.onCommonCallback(2) + } + 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,"舒适")} + else -> {} + } + } + + private fun commitAndStartAnimation(fraction: Int,title:String) { + tvFeel.text = title + startStartAnimation(fraction) + allStartOrdered.forEach { + it.isEnabled = false + } + } + private var currentAnimarion = 0 + private var maxIndex = 0 + private fun startStartAnimation(fraction: Int) { + currentAnimarion = 0 + maxIndex = fraction-1 + try { + animation(fraction) + } catch (e: Exception) { + e.printStackTrace() + } + } + + private fun animation(fraction: Int) { + + val showView = allStartOrdered[currentAnimarion] + showView.setImageResource(R.drawable.taxi_p_passenger_star_check) + val alpha = ObjectAnimator.ofFloat(showView, "alpha", 0.1f, 1f) + .setDuration(120) + alpha.addUpdateListener(object : ValueAnimator.AnimatorUpdateListener{ + var isStart = false + override fun onAnimationUpdate(animation: ValueAnimator?) { + val animatedValue = animation?.getAnimatedValue("alpha") + animatedValue as Float + if(animatedValue>0.45&&!isStart){ + isStart = true + //开始下一个 + if(currentAnimarion==maxIndex){ + return + } + currentAnimarion++ + animation(fraction) + } + } + + }) + + val keyframe1 = Keyframe.ofFloat(0f,1f) + val keyframe3 = Keyframe.ofFloat(0.9f,1.2f) + val keyframe4 = Keyframe.ofFloat(1f,1f) + val holderX = PropertyValuesHolder.ofKeyframe( + "scaleX", keyframe1, keyframe3, keyframe4 + ) + val holderY = PropertyValuesHolder.ofKeyframe( + "scaleY", keyframe1, keyframe3, keyframe4 + ) + val scaleX = ObjectAnimator.ofPropertyValuesHolder(showView, holderX).setDuration(240) + val scaleY = ObjectAnimator.ofPropertyValuesHolder(showView, holderY).setDuration(240) + + + val set = AnimatorSet() + set.play(scaleX).with(scaleY).with(alpha) + if(currentAnimarion==maxIndex) { + // 最后一个动画结束后提交积分 + set.addListener(object : AnimatorListenerAdapter() { + override fun onAnimationEnd(animation: Animator?) { + super.onAnimationEnd(animation) + taxiPassengerCommonValueCallback?.onCommonCallback(fraction) + } + }) + } + set.start() + } + + + fun setDataAndStartAnimation(endSiteAddr: String?) { + mArrivedEndStation.text = endSiteAddr + ochShadowLayout.startAnimation(trAnimation) + allStartOrdered.forEach { + it.setImageResource(R.drawable.taxi_p_passenger_star) + it.isEnabled = true + } + } + + fun showThanksPageWithAnimation(isSuccess:Boolean) { + if(!isSuccess){ + tvFeel.text = "" + allStartOrdered.forEach { + it.setImageResource(R.drawable.taxi_p_passenger_star) + it.isEnabled = true + } + return + } + troutAnimation.setAnimationListener(object :PoiInputSearchWidget.AnimationListenerAdapter(){ + override fun onAnimationEnd(p0: Animation?) { + ochShadowLayout.visibility = View.GONE + ochThankShadowLayout.startAnimation(alphaAnimation) + ochThankShadowLayout.visibility = View.VISIBLE + } + }) + ochShadowLayout.startAnimation(troutAnimation) + } + companion object { const val TAG = "TaxiPassengerArrivedView" } @@ -40,39 +218,5 @@ class TaxiPassengerArrivedView :RelativeLayout, View.OnClickListener { e.printStackTrace() } } - private lateinit var mArrivedEndStation: TextView - private lateinit var ochShadowLayout: OCHBorderShadowLayout - var taxiPassengerCommonValueCallback: ITaxiPassengerCommonValueCallback?=null - var trAnimation = AnimationUtils.loadAnimation( - context, R.anim.left_to_right - ) - - private fun initView(context: Context) { - d(SceneConstant.M_TAXI_P + TAG, "initView") - LayoutInflater.from(context).inflate(R.layout.taxi_p_arrived_end_panel, this, true) - mArrivedEndStation = findViewById(R.id.arrived_end_station) - ochShadowLayout = findViewById(R.id.och_shadow_layout) - findViewById(R.id.tv_please_score).setOnClickListener(this) - findViewById(R.id.arrived_end_station_title).setOnLongClickListener { - OverlayViewUtils.dismissOverlayView(this) - false - } - } - - override fun onClick(v: View?) { - when (v?.id) { - R.id.tv_taxi_passenger_number_one -> { - taxiPassengerCommonValueCallback?.onCommonCallback(2) - } - else -> {} - } - } - - - - fun setDataAndStartAnimation(endSiteAddr: String?) { - mArrivedEndStation.text = endSiteAddr - ochShadowLayout.startAnimation(trAnimation) - } } \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java index f0188aeb32..80d3117003 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java @@ -2,13 +2,9 @@ package com.mogo.och.taxi.passenger.ui; import android.os.Handler; import android.os.Looper; -import android.view.LayoutInflater; import android.view.View; -import android.view.animation.Animation; -import android.view.animation.AnimationUtils; import android.widget.FrameLayout; import android.widget.ImageView; -import android.widget.TextView; import androidx.annotation.NonNull; import androidx.fragment.app.FragmentTransaction; @@ -27,7 +23,6 @@ import com.mogo.map.uicontroller.VisualAngleMode; import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.constants.DataTypes; import com.mogo.och.taxi.passenger.R; -import com.mogo.och.taxi.passenger.callback.ITaxiPassengerCommonValueCallback; import com.mogo.och.taxi.passenger.presenter.BaseTaxiPassengerPresenter; import java.lang.ref.WeakReference; @@ -305,4 +300,11 @@ public class TaxiPassengerBaseFragment extends MvpFragment(R.id.tv_hello).setOnLongClickListener { - OverlayViewUtils.dismissOverlayView(this) - false - } } override fun onClick(v: View?) { diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/anim/right_to_left.xml b/OCH/mogo-och-taxi-passenger/src/main/res/anim/right_to_left.xml new file mode 100644 index 0000000000..dfc420e67e --- /dev/null +++ b/OCH/mogo-och-taxi-passenger/src/main/res/anim/right_to_left.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_star.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_star.png new file mode 100644 index 0000000000..e172c9e9cf Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_star.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_star_check.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_star_check.png new file mode 100644 index 0000000000..4f7770b502 Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_star_check.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_star.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_star.png new file mode 100644 index 0000000000..e172c9e9cf Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_star.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_star_check.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_star_check.png new file mode 100644 index 0000000000..4f7770b502 Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_star_check.png differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_arrived_end_panel.xml b/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_arrived_end_panel.xml index e1dfbdf261..4be10cf32d 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_arrived_end_panel.xml +++ b/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_arrived_end_panel.xml @@ -102,8 +102,139 @@ android:layout_width="wrap_content" android:layout_height="wrap_content"/> + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_passenger_check_panel.xml b/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_passenger_check_panel.xml index 0dd9b06bad..8c3e716a90 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_passenger_check_panel.xml +++ b/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_passenger_check_panel.xml @@ -6,8 +6,6 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/taxi_p_passenger_check_panel_bg" - android:clickable="true" - android:focusable="true" tools:ignore="MissingDefaultResource">