diff --git a/OCH/mogo-och-taxi-passenger/src/main/assets/map_style.data b/OCH/mogo-och-taxi-passenger/src/main/assets/map_style.data deleted file mode 100644 index b200669659..0000000000 Binary files a/OCH/mogo-och-taxi-passenger/src/main/assets/map_style.data and /dev/null differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/assets/map_style_extra.data b/OCH/mogo-och-taxi-passenger/src/main/assets/map_style_extra.data deleted file mode 100644 index 7aa8fa7b45..0000000000 Binary files a/OCH/mogo-och-taxi-passenger/src/main/assets/map_style_extra.data and /dev/null differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/assets/style.data b/OCH/mogo-och-taxi-passenger/src/main/assets/style.data new file mode 100755 index 0000000000..134c469f17 Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/assets/style.data differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/assets/style_extra.data b/OCH/mogo-och-taxi-passenger/src/main/assets/style_extra.data new file mode 100755 index 0000000000..ace8199ee0 Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/assets/style_extra.data differ diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt index 3509607844..b53c408fff 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt @@ -320,7 +320,6 @@ object TaxiPassengerModel { } TaxiPassengerOrderStatusEnum.UserArriveAtStart -> { //开启轮询司机是否已准备好开启自动驾驶的环境 - startDriverReadyToAutopilotLoop() setStation() } TaxiPassengerOrderStatusEnum.OnTheWayToEnd -> { @@ -383,12 +382,6 @@ object TaxiPassengerModel { } } - fun startDriverReadyToAutopilotLoop() { - if (NetworkUtils.isConnected(mContext)) { - startOrStopReadyToAutopilotLoop(true) - } - } - fun startOrStopReadyToAutopilotLoop(isStart: Boolean) { if (isStart) { BizLoopManager.setLoopFunction(STARTREADYTOAUTOPILOT, LoopInfo(1, TaxiPassengerModel::loopQueryPilotStatus)) diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.kt index 42a7cbac4e..085f43c093 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.kt +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.kt @@ -88,7 +88,7 @@ class BaseTaxiPassengerPresenter(view: TaxiPassengerBaseFragment?) : TaxiPassengerOrderStatusEnum.ArriveAtEnd -> { // 50 到达终点 乘客可以评价 - mView?.showOrHideArrivedEndLayout(true, order.endSiteAddr, order.orderNo) + mView?.showOrHideArrivedEndLayout(true) mView?.showOrHideOverMapViewFragment(false) } diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.kt index 23e6292c07..99131e8656 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.kt +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.kt @@ -15,7 +15,7 @@ import com.mogo.och.taxi.passenger.R import com.mogo.och.taxi.passenger.callback.ITaxiPassengerCommonValueCallback import com.mogo.och.taxi.passenger.presenter.BaseTaxiPassengerPresenter import com.mogo.och.taxi.passenger.ui.bottom.BottomBar -import com.mogo.och.taxi.passenger.ui.comment.TaxiPassengerArrivedView +import com.mogo.och.taxi.passenger.ui.arrived.ArrivedView import com.mogo.och.taxi.passenger.ui.startautopilot.StartAutopilotView import kotlinx.android.synthetic.main.taxi_p_base_fragment.bottom import kotlinx.android.synthetic.main.taxi_p_base_fragment.ck_setting @@ -42,7 +42,7 @@ class TaxiPassengerBaseFragment() : /** * 到达目的地 */ - private var mArrivedEndView: WeakReference? = null + private var mArrivedEndView: WeakReference? = null /** * 手机号后四位验证 @@ -126,7 +126,7 @@ class TaxiPassengerBaseFragment() : controller.changeZoom2(0.8f) } - showOrHideStartAutopilotView(true) + showOrHideArrivedEndLayout(true) } BottomBar.SelectView.OVERMAPVIEW -> { @@ -138,9 +138,6 @@ class TaxiPassengerBaseFragment() : } } - private fun initArrivedView() { - mArrivedEndView = WeakReference(TaxiPassengerArrivedView(context)) - } private fun initCheckView() { mArrivedCheckView = WeakReference( @@ -263,27 +260,23 @@ class TaxiPassengerBaseFragment() : * @param arrivedEndStation 目的地 * @param orderNo 订单No */ - fun showOrHideArrivedEndLayout(isShow: Boolean, arrivedEndStation: String?="", orderNo: String?="") { + fun showOrHideArrivedEndLayout(isShow: Boolean) { if (isShow) { if (mArrivedEndView == null || mArrivedEndView!!.get() == null) { - initArrivedView() + mArrivedEndView = WeakReference(ArrivedView(context)) + } + mArrivedEndView?.get()?.let { + OverlayViewUtils.showOverlayView(activity, it, R.style.och_window_anim_alpha) + UiThreadHandler.postDelayed({ + it.setDataAndStartAnimation() + }, //如果在全屏 回收需要300毫秒 后期优化使用单独的播放器 + 500 + ) } - OverlayViewUtils.showOverlayView( - activity, - mArrivedEndView!!.get(), - R.style.och_window_anim_alpha - ) - UiThreadHandler.postDelayed({ - mArrivedEndView!!.get()!! - .setDataAndStartAnimation(arrivedEndStation, orderNo!!) - }, //如果在全屏 回收需要300毫秒 后期优化使用单独的播放器 - 500 - ) } else { - if (mArrivedEndView == null || mArrivedEndView!!.get() == null) { - return + mArrivedEndView?.get()?.let { + OverlayViewUtils.dismissOverlayView(it) } - OverlayViewUtils.dismissOverlayView(mArrivedEndView!!.get()) } } diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerMapDirectionView.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerMapDirectionView.kt deleted file mode 100644 index 0536e8e49d..0000000000 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerMapDirectionView.kt +++ /dev/null @@ -1,271 +0,0 @@ -package com.mogo.och.taxi.passenger.ui - -import android.content.Context -import android.os.Bundle -import android.util.AttributeSet -import android.view.LayoutInflater -import android.view.MotionEvent -import android.widget.RelativeLayout -import com.amap.api.maps.AMap -import com.amap.api.maps.CameraUpdate -import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.TextureMapView -import com.amap.api.maps.model.BitmapDescriptor -import com.amap.api.maps.model.BitmapDescriptorFactory -import com.amap.api.maps.model.CameraPosition -import com.amap.api.maps.model.CustomMapStyleOptions -import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.LatLngBounds -import com.amap.api.maps.model.Marker -import com.amap.api.maps.model.MarkerOptions -import com.amap.api.maps.model.Polyline -import com.amap.api.maps.model.PolylineOptions -import com.mogo.eagle.core.data.map.MogoLocation -import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener -import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager -import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager.addListener -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d -import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant -import com.mogo.och.taxi.passenger.R -import com.mogo.och.taxi.passenger.callback.ITaxiPassengerMapViewCallback -import com.mogo.och.taxi.passenger.utils.TaxiPassengerMapAssetStyleUtil - -/** - * 乘客屏小地图 - */ -class TaxiPassengerMapDirectionView @JvmOverloads constructor( - context: Context, - attrs: AttributeSet? = null, - defStyleAttr: Int = 0 -) : RelativeLayout(context, attrs, defStyleAttr), IMoGoChassisLocationGCJ02Listener, - ITaxiPassengerMapDirectionView, AMap.OnCameraChangeListener { - - companion object { - //小地图名称 - const val TAG = "TaxiPassengerMapDirectionView" - private const val zoomLevel = 13.0f - } - - private lateinit var mAMapNaviView: TextureMapView - private lateinit var mAMap: AMap - private lateinit var mCarMarker: Marker - private lateinit var mStartMarker: Marker - private lateinit var mEndMarker: Marker - private lateinit var mArrivedRes: BitmapDescriptor - private lateinit var mUnArrivedRes: BitmapDescriptor - - private val mCoordinatesLatLng: MutableList = ArrayList() - private var mPolyline: Polyline? = null - private var mCameraUpdate: CameraUpdate? = null - private var mContext: Context? = null - var textureList: MutableList = ArrayList() - var texIndexList: MutableList = ArrayList() - private var mITaxiPassengerMapViewCallback: ITaxiPassengerMapViewCallback? = null - - private val routeArrivied: MutableList = ArrayList() - private val routeArriving: MutableList = ArrayList() - private var location: MogoLocation? = null - - init { - initView(context) - } - - fun setTaxiPassengerMapViewCallback(ITaxiPassengerMapViewCallback: ITaxiPassengerMapViewCallback?) { - mITaxiPassengerMapViewCallback = ITaxiPassengerMapViewCallback - } - - private fun initView(context: Context) { - d(SceneConstant.M_TAXI_P + TAG, "initView") - mContext = context - LayoutInflater.from(context).inflate(R.layout.taxi_p_map_view, this) - mAMapNaviView = findViewById(R.id.taxi_p_order_amap_view) - initAMapView() - - // 注册定位监听 - addListener(TAG, 10, this) - } - - override fun onDetachedFromWindow() { - super.onDetachedFromWindow() - // 注册定位监听 - CallerChassisLocationGCJ02ListenerManager.removeListener(TAG) - } - - private fun initAMapView() { - mCameraUpdate = CameraUpdateFactory.zoomTo(zoomLevel) - mAMap = mAMapNaviView.map - // 设置导航地图模式,aMap是地图控制器对象。 - mAMap.mapType = AMap.MAP_TYPE_NIGHT - - // 关闭显示实时路况图层,aMap是地图控制器对象。 - mAMap.isTrafficEnabled = false - - // 设置 锚点 图标 - mCarMarker = mAMap.addMarker(MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.taxi_p_map_car)).anchor(0.5f, 0.5f)) - mStartMarker = mAMap.addMarker(MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.taxi_p_map_view_dir_start))) - mEndMarker = mAMap.addMarker(MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.taxi_p_map_view_dir_end))) - mArrivedRes = BitmapDescriptorFactory.fromResource(R.drawable.taxi_p_map_arrow_arrived) - mUnArrivedRes = BitmapDescriptorFactory.fromResource(R.drawable.taxi_p_map_arrow_un_arrive) - - // 加载自定义样式 - val customMapStyleOptions = CustomMapStyleOptions() - .setEnable(true) - .setStyleData(TaxiPassengerMapAssetStyleUtil.getAssetsStyle(context, "map_style.data")) - .setStyleExtraData(TaxiPassengerMapAssetStyleUtil.getAssetsExtraStyle(context, "map_style_extra.data")) - // 设置自定义样式 - mAMap.setCustomMapStyle(customMapStyleOptions) - - //设置希望展示的地图缩放级别 - mAMap.moveCamera(mCameraUpdate) - - // 设置地图的样式 - mAMap.uiSettings.apply { - isZoomControlsEnabled = false // 地图缩放级别的交换按钮 - setAllGesturesEnabled(false) // 所有手势 - isMyLocationButtonEnabled = false // 显示默认的定位按钮 - setLogoBottomMargin(-150) //设置Logo下边界距离屏幕底部的边距,设置为负值即可 - } - - mAMap.setOnMapLoadedListener { - d(SceneConstant.M_TAXI_P + TAG, "smp---onMapLoaded") - // 加载自定义样式 - val options = CustomMapStyleOptions() - .setEnable(true) - .setStyleData( - TaxiPassengerMapAssetStyleUtil.getAssetsStyle(context, "map_style.data") - ) - .setStyleExtraData( - TaxiPassengerMapAssetStyleUtil.getAssetsExtraStyle(context, "map_style_extra.data") - ) - // 设置自定义样式 - mAMap.setCustomMapStyle(options) - mAMapNaviView.map.setPointToCenter(mAMapNaviView.width / 2, mAMapNaviView.height / 2) - } - - //设置地图状态的监听接口 - mAMap.setOnCameraChangeListener(this) - } - - override fun onInterceptTouchEvent(ev: MotionEvent): Boolean { - return true - } - - override fun onChassisLocationGCJ02(mogoLocation: MogoLocation?) { - if (mogoLocation == null) { - return - } - val currentLatLng = LatLng(mogoLocation.latitude, mogoLocation.longitude) - if (mPolyline!=null&&!mPolyline!!.points.isNullOrEmpty()) { - //圈定地图显示范围 - val endLatLng = mPolyline!!.points.last() - //存放经纬度 - val boundsBuilder = LatLngBounds.Builder().apply { - include(currentLatLng) - include(endLatLng) - } - //第二个参数为四周留空宽度 - mAMap.moveCamera(CameraUpdateFactory.newLatLngBoundsRect(boundsBuilder.build(), 100, 100, 100, 100)) - } else { - //设置希望展示的地图缩放级别 - val cameraPosition = CameraPosition.Builder() - .target(mCarMarker.position) - .tilt(0f) - .bearing(mogoLocation.heading.toFloat()) - .zoom(zoomLevel).build() - mAMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)) - } - //更新车辆位置 - mCarMarker.rotateAngle = (360 - mogoLocation.heading).toFloat() - mCarMarker.position = currentLatLng - mCarMarker.setToTop() - } - - override fun setLineMarker(startStation:LatLng,endStation:LatLng) { - mStartMarker.isVisible = false - mEndMarker.isVisible = false - mStartMarker.position = startStation - mStartMarker.isVisible = true - mEndMarker.position = endStation - mEndMarker.isVisible = true - } - - override fun drawablePolyline() { - if (routeArrivied.isEmpty() && routeArriving.isEmpty()) { - d(SceneConstant.M_TAXI + TAG, "没有点") - return - } - texIndexList.clear() - val allPoints = ArrayList(routeArrivied) - for (i in routeArrivied.indices) { - if (routeArrivied.size > 1 && i < routeArrivied.size - 1) { - texIndexList.add(0) - } - } - texIndexList.add(0) - allPoints.add(LatLng(location!!.latitude, location!!.longitude)) - allPoints.addAll(routeArriving) - for (ignored in routeArrivied) { - texIndexList.add(1) - } - if (mPolyline != null) { - mPolyline!!.points = allPoints - mPolyline!!.options.customTextureIndex = texIndexList - return - } - if(textureList.isEmpty()) { - textureList.add(mArrivedRes) - textureList.add(mUnArrivedRes) - } - //设置线段纹理 - val polylineOptions = PolylineOptions().apply { - addAll(allPoints) - isUseTexture = true - width(15f) - lineCapType(PolylineOptions.LineCapType.LineCapRound) - customTextureList = textureList - customTextureIndex = texIndexList - } - - // 绘制线 - mPolyline = mAMap.addPolyline(polylineOptions) - } - - override fun clearPolyline() { - if (mPolyline != null) { - mPolyline!!.remove() - mPolyline = null - } - mStartMarker.isVisible = false - mEndMarker.isVisible = false - } - - fun onCreateView(savedInstanceState: Bundle?) { - mAMapNaviView.onCreate(savedInstanceState) - } - - fun onResume() { - mAMapNaviView.onResume() - } - - fun onPause() { - mAMapNaviView.onPause() - } - - fun onDestroy() { - mAMapNaviView.onDestroy() - } - - fun setCoordinatesLatLng(routeArrivied: List?, routeArriving: List?, location: MogoLocation?) { - this.routeArrivied.clear() - this.routeArrivied.addAll(routeArrivied!!) - this.routeArriving.clear() - this.routeArriving.addAll(routeArriving!!) - this.location = location - } - - override fun onCameraChange(cameraPosition: CameraPosition) { - mITaxiPassengerMapViewCallback!!.onCameraChange(cameraPosition.bearing) - } - - override fun onCameraChangeFinish(cameraPosition: CameraPosition) {} -} \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/arrived/ArrivedView.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/arrived/ArrivedView.kt new file mode 100644 index 0000000000..2f7fc6e28f --- /dev/null +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/arrived/ArrivedView.kt @@ -0,0 +1,122 @@ +package com.mogo.och.taxi.passenger.ui.arrived + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import android.widget.RelativeLayout +import com.mogo.eagle.core.utilcode.kotlin.onClick +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.taxi.passenger.R +import com.mogo.och.taxi.passenger.callback.ITaxiPassengerCommonCallback +import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder +import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack +import io.reactivex.Observable +import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.disposables.Disposable +import kotlinx.android.synthetic.main.taxi_p_arrived_end_panel.view.aciv_close +import kotlinx.android.synthetic.main.taxi_p_arrived_end_panel.view.svp_frame +import java.util.concurrent.TimeUnit + + +/** + * + * 评价View + * Created on 2022/5/16 + */ +class ArrivedView :RelativeLayout { + + constructor(context: Context?) : super(context) + + constructor(context: Context?, attributeSet: AttributeSet) : super(context, attributeSet) + + constructor(context: Context?, attributeSet: AttributeSet, defStyleAttr: Int) : super(context, attributeSet, defStyleAttr) + + constructor(context: Context?, attributeSet: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attributeSet, defStyleAttr, defStyleRes) + + private var subscribe: Disposable?=null + + private val gsyVideoOptionBuilder = GSYVideoOptionBuilder() + + + var taxiPassengerCommonCallback: ITaxiPassengerCommonCallback?=null + + private fun initView() { + d(SceneConstant.M_TAXI_P + TAG, "initView") + LayoutInflater.from(context).inflate(R.layout.taxi_p_arrived_end_panel, this, true) + svp_frame.setBackgroundResource(R.drawable.tail_ani_0000) + svp_frame.setIsTouchWiget(false) + svp_frame.setIsTouchWigetFull(false) + svp_frame.enableshowProgressDialog = false + svp_frame.enableDoubleClick = false + + val url = "android.resource://" + context.packageName + "/" + R.raw.end_video + gsyVideoOptionBuilder.setUrl(url) + .setCacheWithPlay(false) + .setPlayTag("TaxiPassengerArrivedView") + .build(svp_frame) + + aciv_close.onClick { + OverlayViewUtils.dismissOverlayView(this) + } + } + + override fun onDetachedFromWindow() { + svp_frame.setBackgroundResource(R.drawable.tail_ani_0000) + svp_frame.setVideoAllCallBack(null) + svp_frame.onVideoReset() + svp_frame.release() + + super.onDetachedFromWindow() + subscribe?.let { + if (!it.isDisposed) { + it.dispose() + } + } + } + + /** + * 设置目的地重置星星状态 + */ + fun setDataAndStartAnimation() { + svp_frame.setVideoAllCallBack(object : GSYSampleCallBack() { + override fun onAutoComplete(url: String?, vararg objects: Any?) { + svp_frame.setBackgroundResource(R.drawable.tail_ani_0090) + } + }) + svp_frame.startPlayLogic() + } + + /** + * 评论成功 向左移动并消失 消失后感谢页面透明度0-1 然后开始小手的动画 + */ + fun scoreSuccess(){ + // 10s 后逻辑 + subscribe = Observable.timer(10000, TimeUnit.MILLISECONDS) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe { + // 正在展示感谢页面 + if (taxiPassengerCommonCallback == null) { + // 没有用户确定页面 + OverlayViewUtils.dismissOverlayView(this@ArrivedView) + } else { + // 有排队展示的用户确定页面 + taxiPassengerCommonCallback?.onCommonCallback() + } + } + } + + companion object { + const val TAG = "TaxiPassengerArrivedView" + } + + init { + try { + initView() + } catch (e: Exception) { + e.printStackTrace() + } + } + +} \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/comment/TaxiPassengerArrivedView.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/comment/TaxiPassengerArrivedView.kt deleted file mode 100644 index 22187742b0..0000000000 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/comment/TaxiPassengerArrivedView.kt +++ /dev/null @@ -1,475 +0,0 @@ -package com.mogo.och.taxi.passenger.ui.comment - -import android.animation.* -import android.content.Context -import android.graphics.drawable.AnimationDrawable -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 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.utilcode.util.ToastUtils -import com.mogo.eagle.core.widget.media.video.SimpleVideoPlayer -import com.mogo.och.common.module.biz.network.OchCommonServiceCallback -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.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 io.reactivex.Observable -import io.reactivex.android.schedulers.AndroidSchedulers -import io.reactivex.disposables.Disposable -import java.util.concurrent.TimeUnit - - -/** - * - * 评价View - * Created on 2022/5/16 - */ -class TaxiPassengerArrivedView :RelativeLayout, View.OnClickListener { - - constructor(context: Context?) : super(context) - - constructor(context: Context?, attributeSet: AttributeSet) : super(context, attributeSet) - - constructor(context: Context?, attributeSet: AttributeSet, defStyleAttr: Int) : super(context, attributeSet, defStyleAttr) - - 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 - 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() - - - var taxiPassengerCommonCallback: ITaxiPassengerCommonCallback?=null - var left2Right: Animation = AnimationUtils.loadAnimation( - context, R.anim.left_to_right - ) - var right2Left: Animation = AnimationUtils.loadAnimation( - context, R.anim.right_to_left - ) - var alphaAnimation: Animation = AnimationUtils.loadAnimation( - context, R.anim.alpha_hide_show - ) - - private var allStartOrdered = mutableListOf() - - var showThanks:Boolean = false - var allStarWithWorld: TaxiPassengerAllStarWorld?=null - - 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) - 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) - svpFrame.enableshowProgressDialog = false - svpFrame.enableDoubleClick = false - - allStartOrdered = mutableListOf() - initCommentList() - initScore() - - findViewById(R.id.tv_please_score).setOnClickListener(this) - - - acivClose.setOnClickListener { - ochShadowLayout.visibility = View.GONE - OverlayViewUtils.dismissOverlayView(this@TaxiPassengerArrivedView) - } - - val url = "android.resource://" + context.packageName + "/" + R.raw.end_video - gsyVideoOptionBuilder.setUrl(url) - .setCacheWithPlay(false) - .setPlayTag("TaxiPassengerArrivedView") - .build(svpFrame) - } - - 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) - 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) - - // 请求文案 - requestStarWord() - } - - - override fun onDetachedFromWindow() { - svpFrame.setBackgroundResource(R.drawable.tail_ani_0000) - svpFrame.setVideoAllCallBack(null) - svpFrame.onVideoReset() - svpFrame.release() - tvFeel.text = "" - rvCommentList.visibility = View.INVISIBLE - btnSubmit.visibility = View.INVISIBLE - clCommentContain.getLayoutParams().height = 748 - clCommentContain.requestLayout() - super.onDetachedFromWindow() - subscribe?.let { - if (!it.isDisposed) { - it.dispose() - } - } - } - - override fun onClick(v: View?) { - when (v?.id) { - R.id.tv_please_score -> { - //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() - if(selectComment.isEmpty()){ - ToastUtils.showLong("请选择评价内容") - return - } - } - - private fun commitAndStartAnimation(fraction: Int,title:String) { - resetStar() - allStartOrdered.forEach { - it.isEnabled = false - } - currentFraction = fraction - tvFeel.text = title - if(allStarWithWorld!=null&&allStarWithWorld!!.data!=null&&allStarWithWorld!!.data!!.size>0){ - // 已经请求到总量了 - val filter = allStarWithWorld!!.data.filter { - it.isSelect = false - it.star == fraction.toString() - } - val commentAdapter = rvCommentList.adapter as CommentAdapter - commentAdapter.addAll(filter.toMutableList()) - startStartAnimation(fraction) - }else{ - // 总量请求失败 单独去取 - requestStarWordByStar(fraction) - } - } - 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) - // 启动变高动画 - startChangeHeightAnimarion() - } - }) - } - set.start() - } - - private fun startChangeHeightAnimarion() { - // 815 除了 点评的高度 - val resizeAnimation = ResizeAnimation(clCommentContain,913+rvCommentList.height, clCommentContain.height) - resizeAnimation.duration = 300 - resizeAnimation.setAnimationListener(object :Animation.AnimationListener{ - override fun onAnimationStart(animation: Animation?) { - rvCommentList.visibility = View.VISIBLE - } - - override fun onAnimationEnd(animation: Animation?) { - allStartOrdered.forEach { - it.isEnabled = true - } - if(btnSubmit.visibility==View.GONE||btnSubmit.visibility==View.INVISIBLE) { - btnSubmit.visibility = View.VISIBLE - val showAnimator = ObjectAnimator.ofFloat(btnSubmit, "alpha", 0.1f, 1f) - showAnimator.duration = 600 - showAnimator.start() - } - - } - - override fun onAnimationRepeat(animation: Animation?) { - - } - - }) - clCommentContain.startAnimation(resizeAnimation) - } - - /** - * 设置目的地重置星星状态 - */ - fun setDataAndStartAnimation(endSiteAddr: String?,orderId:String) { - mArrivedEndStation.text = endSiteAddr - ochThankShadowLayout.visibility = View.GONE - ivAnimalList.visibility = View.GONE - svpFrame.setVideoAllCallBack(object : GSYSampleCallBack() { - override fun onAutoComplete(url: String?, vararg objects: Any?) { - svpFrame.setBackgroundResource(R.drawable.tail_ani_0090) - } - }) - svpFrame.startPlayLogic() - postDelayed({ - ochShadowLayout.visibility = View.VISIBLE - ochShadowLayout.startAnimation(left2Right) - },1928) - - showThanks = false - this.orderNo = orderId - resetStar() - } - - /** - * 评论成功 向左移动并消失 消失后感谢页面透明度0-1 然后开始小手的动画 - */ - fun scoreSuccess(){ - right2Left.setAnimationListener(object :PoiInputSearchWidget.AnimationListenerAdapter(){ - override fun onAnimationEnd(p0: Animation?) { - ochShadowLayout.visibility = View.GONE - ochThankShadowLayout.startAnimation(alphaAnimation) - ivAnimalList.startAnimation(alphaAnimation) - alphaAnimation.setAnimationListener(object : PoiInputSearchWidget.AnimationListenerAdapter(){ - override fun onAnimationStart(p0: Animation?) { - ochThankShadowLayout.visibility = View.VISIBLE - ivAnimalList.visibility = View.VISIBLE - showThanks = true - } - override fun onAnimationEnd(p0: Animation?) { - val animationDrawable = ivAnimalList.drawable as AnimationDrawable - animationDrawable.start() - } - }) - } - }) - ochShadowLayout.startAnimation(right2Left) - - // 10s 后逻辑 - subscribe = Observable.timer(10000, TimeUnit.MILLISECONDS) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe { - // 正在展示感谢页面 - if (taxiPassengerCommonCallback == null) { - // 没有用户确定页面 - OverlayViewUtils.dismissOverlayView(this@TaxiPassengerArrivedView) - } else { - // 有排队展示的用户确定页面 - taxiPassengerCommonCallback?.onCommonCallback() - } - } - } - - /** - * 评论失败 重置状态 - */ - fun scoreFail(){ - scoreSuccess() -// tvFeel.text = "" -// resetStar() - } - - private fun resetStar() { - allStartOrdered.forEach { - it.setImageResource(R.drawable.taxi_p_passenger_star) - it.isEnabled = true - } - } - - private fun requestStarWord() { - TaxiPassengerServiceManager.getAllScoreWorld( - object : OchCommonServiceCallback { - 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.getWorldByStar(start.toString(), - object : OchCommonServiceCallback { - 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" - } - - init { - try { - initView(context) - } catch (e: Exception) { - e.printStackTrace() - } - } - -} \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/comment/adapter/CommentAdapter.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/comment/adapter/CommentAdapter.kt deleted file mode 100644 index 71334c1f80..0000000000 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/comment/adapter/CommentAdapter.kt +++ /dev/null @@ -1,74 +0,0 @@ -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) : - RecyclerView.Adapter() { - - fun add(taxiPassengerStarWorld: TaxiPassengerStarWorld) { - itemDataList.add(taxiPassengerStarWorld) - notifyItemInserted(itemDataList.size) - } - - fun addAll(itemDataList: MutableList){ - this.itemDataList.clear() - this.itemDataList.addAll(itemDataList) - // region 临时代码 - var needMove:TaxiPassengerStarWorld?=null - itemDataList.forEachIndexed { index, taxiPassengerStarWorld -> - if(taxiPassengerStarWorld.labelInfo=="频繁急停急刹"){ - needMove = taxiPassengerStarWorld - return@forEachIndexed - } - } - needMove?.let { - this.itemDataList.remove(it) - this.itemDataList.add(this.itemDataList.size-1,it) - } - // endregion - this.notifyDataSetChanged() - } - fun getSelectComment(): List { - return itemDataList.filter { - if(it.isSelect==null){ - it.isSelect = false - } - 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" - } -} \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/comment/adapter/ItemCommentHolder.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/comment/adapter/ItemCommentHolder.java deleted file mode 100644 index b09b073cde..0000000000 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/comment/adapter/ItemCommentHolder.java +++ /dev/null @@ -1,25 +0,0 @@ -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); - } - -} 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 7fb2bc5d21..283a04a08f 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 @@ -24,300 +24,4 @@ android:layout_width="@dimen/dp_120" android:layout_height="@dimen/dp_120"/> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_base_fragment.xml b/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_base_fragment.xml index 3e33343f85..e52f3adfcd 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_base_fragment.xml +++ b/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_base_fragment.xml @@ -10,7 +10,10 @@ android:layout_width="match_parent" android:layout_height="match_parent" app:startPointDrawable="@drawable/taxi_p_map_view_dir_start" - app:endPointDrawable="@drawable/taxi_p_map_view_dir_end" /> + app:endPointDrawable="@drawable/taxi_p_map_view_dir_end" + app:mapStyleExtraPath="style_extra.data" + app:mapStylePath="style.data" + /> = 3) {