订单Fragment添加动画

This commit is contained in:
yangyakun
2022-07-19 19:22:16 +08:00
parent 4db197ed8f
commit b7b547e015
10 changed files with 132 additions and 34 deletions

View File

@@ -0,0 +1,4 @@
package com.mogo.och.taxi.passenger.event;
public class FinishActivity {
}

View File

@@ -0,0 +1,16 @@
package com.mogo.och.taxi.passenger.event;
public class UIStatus {
public static final int LIVE = 0;
public static final int OVERVIEW = 1;
public static final int CONSULT = 2;
public static final int MOVIE = 3;
public int status = LIVE;
public UIStatus(int status) {
this.status = status;
}
}

View File

@@ -157,7 +157,7 @@ public class BaseTaxiPassengerPresenter extends Presenter<TaxiPassengerBaseFragm
// 70 取消订单
if (TaxiPassengerOrderStatusEnum.Cancel.getCode() == order.orderStatus){
runOnUIThread(() -> {
mView.showOrHideServingOrderFragment(false);
mView.showOrHideServingOrderFragment(false,true);
mView.showOrHideStartAutopilotView(false,false);
mView.showOrHidePressengerCheckPager(false, "",
"", "", "", "");
@@ -191,7 +191,7 @@ public class BaseTaxiPassengerPresenter extends Presenter<TaxiPassengerBaseFragm
if (TaxiPassengerOrderStatusEnum.OnTheWayToEnd.getCode() == order.orderStatus){
runOnUIThread(() ->{
mView.showOrHideStartAutopilotView(false,false);
mView.showOrHideServingOrderFragment(true);
mView.showOrHideServingOrderFragment(true,true);
});
TaxiPassengerModel.getInstance().startOrStopReadyToAutopilotoop(false);
}
@@ -212,7 +212,7 @@ public class BaseTaxiPassengerPresenter extends Presenter<TaxiPassengerBaseFragm
TaxiPassengerModel.getInstance().recoverNaviInfo();
TaxiPassengerGeocodeSearchModel.getInstance(getContext()).destroyGeocodeSearch();
runOnUIThread(() -> {
mView.showOrHideServingOrderFragment(false);
mView.showOrHideServingOrderFragment(false,true);
mView.showOrHideArrivedEndLayout(true, order.endSiteAddr,order.orderNo);
});
return;

View File

@@ -1,12 +1,15 @@
package com.mogo.och.taxi.passenger.ui;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.FrameLayout;
import android.view.ViewGroup;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.FragmentTransaction;
import com.mogo.commons.AbsMogoApplication;
@@ -27,11 +30,16 @@ 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.ITPClickStartAutopilotCallback;
import com.mogo.och.taxi.passenger.event.UIStatus;
import com.mogo.och.taxi.passenger.presenter.BaseTaxiPassengerPresenter;
import com.mogo.och.taxi.passenger.ui.comment.TaxiPassengerArrivedView;
import com.mogo.och.taxi.passenger.ui.leftmenu.OverlayLeftViewUtils;
import com.mogo.och.taxi.passenger.mulprocess.EmptyService;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.lang.ref.WeakReference;
@@ -47,7 +55,6 @@ public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFrag
static final String TAG = "TaxiPassengerBaseFragment";
private FrameLayout flNaviPanelContainer;
private ImageView mAutopilotImage;
private ImageView mMapswitchBtn;
private TaxiPassengerTrafficLightView mTrafficLightView;
@@ -62,6 +69,13 @@ public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFrag
private Handler mHandler = new Handler(Looper.getMainLooper());
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
EventBus.getDefault().register(this);
return super.onCreateView(inflater, container, savedInstanceState);
}
@Override
protected int getLayoutId() {
return R.layout.taxi_p_base_fragment;
@@ -78,7 +92,6 @@ public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFrag
hideEagleConfig();
mAutopilotImage = findViewById(R.id.module_och_autopilot_iv);
flNaviPanelContainer = findViewById(R.id.module_mogo_och_navi_panel_container);
mTrafficLightView = findViewById(R.id.traffic_light_view);
CallerHmiManager.INSTANCE.setProxyTrafficLightView(mTrafficLightView);
@@ -236,6 +249,7 @@ public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFrag
public void onDestroyView() {
super.onDestroyView();
OverlayLeftViewUtils.INSTANCE.removeDragTarget(vOpenLeft);
EventBus.getDefault().unregister(this);
removeListener();
}
@@ -245,6 +259,16 @@ public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFrag
}
mStartAutopilotView.get().setOnClickStartAutopilotBtnCallback(null);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void changeOverview(UIStatus uiStatus){
if(uiStatus.status==UIStatus.LIVE){
CallerHmiManager.INSTANCE.hideSmallFragment();
showOrHideServingOrderFragment(true,false);
}else if(uiStatus.status==UIStatus.OVERVIEW){
CallerHmiManager.INSTANCE.showSmallFragment();
showOrHideServingOrderFragment(false,false);
}
}
@Override
public void onMapVisualAngleChanged(VisualAngleMode visualAngleMode) {
@@ -255,34 +279,43 @@ public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFrag
* 显示或隐藏订单信息
* @param isShow
*/
public void showOrHideServingOrderFragment(boolean isShow){
public void showOrHideServingOrderFragment(boolean isShow,boolean showOrHideLefeMenu){
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
if (isShow){
flNaviPanelContainer.setVisibility(View.VISIBLE);
if (ochServingOrderFragment == null){
ochServingOrderFragment = new TaxiPassengerServingOrderFragment().newInstance();
}
OverlayLeftViewUtils.INSTANCE.showOverlayView(getActivity(),0,true,-1,true);
OverlayLeftViewUtils.INSTANCE.addDragTarget(vOpenLeft);
if(showOrHideLefeMenu) {
OverlayLeftViewUtils.INSTANCE.showOverlayView(getActivity(), 0, true, -1, true);
OverlayLeftViewUtils.INSTANCE.addDragTarget(vOpenLeft);
}
if (ochServingOrderFragment.isHidden()){
transaction.show(ochServingOrderFragment).commitAllowingStateLoss();
transaction
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.show(ochServingOrderFragment).commitAllowingStateLoss();
return;
}
if (ochServingOrderFragment.isAdded()){
transaction.show(ochServingOrderFragment).commitAllowingStateLoss();
transaction
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.show(ochServingOrderFragment).commitAllowingStateLoss();
return;
}
transaction.add(R.id.module_mogo_och_navi_panel_container, ochServingOrderFragment)
transaction
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.add(R.id.module_mogo_och_navi_panel_container, ochServingOrderFragment)
.show(ochServingOrderFragment).commitAllowingStateLoss();
}else {
flNaviPanelContainer.setVisibility(View.GONE);
if (ochServingOrderFragment != null){
transaction.hide(ochServingOrderFragment).commitAllowingStateLoss();
transaction
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE)
.hide(ochServingOrderFragment).commitAllowingStateLoss();
}
if(showOrHideLefeMenu) {
OverlayLeftViewUtils.INSTANCE.dismissOverlayView(true);
}
OverlayLeftViewUtils.INSTANCE.dismissOverlayView(true);
}
}

View File

@@ -2,6 +2,8 @@ package com.mogo.och.taxi.passenger.ui;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI_P;
import android.animation.Animator;
import android.animation.AnimatorInflater;
import android.location.Location;
import android.os.Build;
import android.os.Bundle;
@@ -13,8 +15,10 @@ import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.appcompat.widget.AppCompatSeekBar;
import androidx.fragment.app.FragmentTransaction;
import com.amap.api.maps.model.LatLng;
import com.mogo.commons.mvp.MvpFragment;
@@ -379,4 +383,22 @@ public class TaxiPassengerServingOrderFragment extends
lastBearing = bearing;
}
@Nullable
@Override
public Animator onCreateAnimator(int transit, boolean enter, int nextAnim) {
if (transit == FragmentTransaction.TRANSIT_FRAGMENT_OPEN) {
if (enter) {//普通的进入的动作
return AnimatorInflater.loadAnimator(getContext(),R.animator.alpha_hide_show_f);
} else {//比如一个已经Fragmen被另一个replace是一个进入动作被replace的那个就是false
return AnimatorInflater.loadAnimator(getContext(),R.animator.alpha_hide_hide_f);
}
} else if (FragmentTransaction.TRANSIT_FRAGMENT_CLOSE == transit) {
if (enter) {//之前被replace的重新进入到界面或者Fragment回到栈顶
return AnimatorInflater.loadAnimator(getContext(),R.animator.alpha_hide_show_f);
} else {//Fragment退出出栈
return AnimatorInflater.loadAnimator(getContext(),R.animator.alpha_hide_hide_f);
}
}
return super.onCreateAnimator(transit,enter,nextAnim);
}
}

View File

@@ -19,7 +19,8 @@ import com.mogo.och.taxi.passenger.R
import com.mogo.och.taxi.passenger.ui.leftmenu.model.LeftMenuModel
import com.mogo.och.taxi.passenger.mulprocess.EmptyService
import com.mogo.och.taxi.passenger.ui.video.VideoActivity
import com.mogo.och.taxi.passenger.ui.video.event.FinishActivity
import com.mogo.och.taxi.passenger.event.FinishActivity
import com.mogo.och.taxi.passenger.event.UIStatus
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
@@ -53,6 +54,8 @@ object OverlayLeftViewUtils {
private var overlayView: View?=null
private var subscribe: Disposable?=null
private var subscribeLive: Disposable?=null
private var subscribeOVERVIEW: Disposable?=null
private var acivOpenClose: AppCompatImageView?=null
@@ -101,12 +104,17 @@ object OverlayLeftViewUtils {
override fun onSelect(isCurrentProcess:Boolean) {
if(isCurrentProcess) {
close(view, windowManager)
EventBus.getDefault().post(FinishActivity())
}else {
LeftMenuOpen.invoKeyByEventType(VideoActivity.EVENT_FINISH)
}
if(isMainProcess){
//主进程 建议Eventbus实现
subscribeLive = Observable.timer(300, TimeUnit.MILLISECONDS)
.subscribe {
EventBus.getDefault().post(UIStatus(UIStatus.LIVE))
}
}else{
EventBus.getDefault().post(FinishActivity())
}
}
}
@@ -115,14 +123,17 @@ object OverlayLeftViewUtils {
override fun onSelect(isCurrentProcess:Boolean) {
if(isCurrentProcess) {
close(view, windowManager)
ToastUtils.showShort("全程概览")
EventBus.getDefault().post(FinishActivity())
}else {
LeftMenuOpen.invoKeyByEventType(VideoActivity.EVENT_FINISH)
}
if(isMainProcess){
//主进程 建议Eventbus实现
// TODO: 需要在主进程中 添加全程概览的代码
subscribeOVERVIEW = Observable.timer(300, TimeUnit.MILLISECONDS)
.subscribe {
EventBus.getDefault().post(UIStatus(UIStatus.OVERVIEW))
}
}else{
EventBus.getDefault().post(FinishActivity())
}
}
}
@@ -211,7 +222,6 @@ object OverlayLeftViewUtils {
return@forEach
}
}
System.err.println("进程是否存在---$haveProcess----")
if (!haveProcess) {
EmptyService.startService(Utils.getApp())
}
@@ -335,16 +345,17 @@ object OverlayLeftViewUtils {
if (!isShowing) {
return
}
subscribe?.let {
if (!it.isDisposed) {
it.dispose()
}
}
releaseDelay(subscribe)
releaseDelay(subscribeLive)
releaseDelay(subscribeOVERVIEW)
subscribe = null
subscribeLive = null
subscribeOVERVIEW = null
// 管理的要关闭都得关闭
if(isMain) {
LeftMenuOpen.invoKeyByEventType(VideoActivity.EVENT_FINISH)
}
subscribe = null
LeftMenuOpen.clearValue()
try {
if (windowManager != null && overlayView != null) {
@@ -363,4 +374,12 @@ object OverlayLeftViewUtils {
e.printStackTrace()
}
}
private fun releaseDelay(subscribe: Disposable?) {
subscribe?.let {
if (!it.isDisposed) {
it.dispose()
}
}
}
}

View File

@@ -25,7 +25,7 @@ import com.mogo.och.taxi.passenger.bean.TaxiPassengerVideoPlay
import com.mogo.och.taxi.passenger.mulprocess.ICallback
import com.mogo.och.taxi.passenger.ui.leftmenu.LeftMenuOpen
import com.mogo.och.taxi.passenger.ui.leftmenu.OverlayLeftViewUtils
import com.mogo.och.taxi.passenger.ui.video.event.FinishActivity
import com.mogo.och.taxi.passenger.event.FinishActivity
import com.mogo.och.taxi.passenger.ui.video.layoutmanage.CarouselLayoutManager
import com.mogo.och.taxi.passenger.ui.video.layoutmanage.CarouselZoomPostLayoutListener
import com.mogo.och.taxi.passenger.ui.video.layoutmanage.CenterScrollListener

View File

@@ -1,4 +0,0 @@
package com.mogo.och.taxi.passenger.ui.video.event;
public class FinishActivity {
}

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<objectAnimator android:propertyName="alpha" android:duration="1000" android:valueFrom="1.0" android:valueTo="0.0"/>
</set>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<objectAnimator android:propertyName="alpha" android:duration="1000" android:valueFrom="0.0" android:valueTo="1.0"/>
</set>