[删除侧滑业务]
This commit is contained in:
yangyakun
2023-07-12 10:31:20 +08:00
parent 47c4fe706c
commit 494a3e51db
36 changed files with 4 additions and 1411 deletions

View File

@@ -4,18 +4,7 @@
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
<application>
<activity
android:name=".ui.video.VideoActivity"
android:launchMode="singleTask"
android:process=":video"
android:theme="@style/ActivityTranslucentVideo"
android:exported="false" />
<service android:name=".mulprocess.EmptyService"
android:process=":video" />
<provider
android:name=".mulprocess.BinderProvider"
android:authorities="com.mogo.och.taxi.passenger.leftmenu"
android:exported="false" />
</application>
</manifest>

View File

@@ -1,12 +0,0 @@
// ICallback.aidl
package com.mogo.och.taxi.passenger.mulprocess;
// Declare any non-default types here with import statements
interface ICallback {
void onResult(long meters, long timeInSecond,float speed);
void postEvent(int type);
}

View File

@@ -1,19 +0,0 @@
// ILeftMenuService.aidl
package com.mogo.och.taxi.passenger.mulprocess;
import com.mogo.och.taxi.passenger.mulprocess.ICallback;
// Declare any non-default types here with import statements
interface ILeftMenuService {
/**
* Pass the selected item to the main process
*/
void transmissionIndex(int index);
void registerCallback(in ICallback cb);
void unRegisterCallback(in ICallback cb);
}

View File

@@ -16,7 +16,6 @@ import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.map.MogoLocation
import com.mogo.eagle.core.data.msgbox.MsgBoxBean
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener
import com.mogo.eagle.core.function.api.autopilot.IMoGoPlanningRottingListener
import com.mogo.eagle.core.function.api.datacenter.msgbox.IMsgBoxEventListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager.startAutoPilot
@@ -60,7 +59,6 @@ import com.mogo.och.taxi.passenger.bean.TaxiPassengerScoreUpdateOrderReqBean
import com.mogo.och.taxi.passenger.bean.TaxiPassengerStartReqBean
import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerADASStatusCallback
import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerAutopilotPlanningCallback
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
@@ -68,8 +66,6 @@ import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst
import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum
import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum.Companion.valueOf
import com.mogo.och.taxi.passenger.network.TaxiPassengerServiceManager
import com.mogo.och.taxi.passenger.ui.leftmenu.OverlayLeftViewUtils
import com.mogo.och.taxi.passenger.ui.leftmenu.OverlayLeftViewUtils.transmissionIndexGet
import com.mogo.och.taxi.passenger.utils.TaxiPassengerAnalyticsManager
import io.reactivex.disposables.Disposable
import io.reactivex.exceptions.UndeliverableException
@@ -473,7 +469,7 @@ object TaxiPassengerModel {
if (currentOCHOrder == null) {
ToastUtils.showLong("行程已结束")
} else {
transmissionIndexGet(OverlayLeftViewUtils.OVERVIEW)
}
}
}

View File

@@ -1,64 +0,0 @@
package com.mogo.och.taxi.passenger.mulprocess;
import android.database.MatrixCursor;
import android.os.Bundle;
import android.os.IBinder;
import android.os.Parcel;
import android.os.Parcelable;
public class BinderCursor extends MatrixCursor {
static final String KEY_BINDER = "binder";
Bundle mBinderExtra = new Bundle();
public static class BinderParcelable implements Parcelable {
public IBinder mBinder;
public static final Creator<BinderParcelable> CREATOR = new Creator<BinderParcelable>() {
@Override
public BinderParcelable createFromParcel(Parcel source) {
return new BinderParcelable(source);
}
@Override
public BinderParcelable[] newArray(int size) {
return new BinderParcelable[size];
}
};
BinderParcelable(IBinder binder) {
mBinder = binder;
}
BinderParcelable(Parcel source) {
mBinder = source.readStrongBinder();
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeStrongBinder(mBinder);
}
}
public BinderCursor(String[] columnNames, IBinder binder) {
super(columnNames);
if (binder != null) {
Parcelable value = new BinderParcelable(binder);
mBinderExtra.putParcelable(KEY_BINDER, value);
}
}
@Override
public Bundle getExtras() {
return mBinderExtra;
}
}

View File

@@ -1,55 +0,0 @@
package com.mogo.och.taxi.passenger.mulprocess;
import static android.os.Binder.getCallingUid;
import android.content.ContentProvider;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.IBinder;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
public class BinderProvider extends ContentProvider {
public static final String TAG = BinderProvider.class.getSimpleName();
public static final String AUTHORITY = "com.mogo.och.taxi.passenger.leftmenu";
public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/binder");
public static final String SERVICE_LEFTMENU = "lefmenu";
@Override
public boolean onCreate() {
return true;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
getCallingUid();
IBinder binder;
if (selectionArgs[0].equals(BinderProvider.SERVICE_LEFTMENU)) {
binder = new OrderServiceImpl();
} else {
return null;
}
BinderCursor cursor = new BinderCursor(new String[]{"service"}, binder);
return cursor;
}
@Override
public String getType(Uri uri) {return null;}
@Override
public Uri insert(Uri uri, ContentValues values) {return null;}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {return 0;}
@Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {return 0;}
}

View File

@@ -1,22 +0,0 @@
package com.mogo.och.taxi.passenger.mulprocess
import android.app.Service
import android.content.Context
import android.content.Intent
import android.os.IBinder
class EmptyService: Service() {
companion object{
fun startService(context: Context){
//预加载视频进程
val intent = Intent(context, EmptyService::class.java)
context.startService(intent)
}
}
override fun onBind(intent: Intent?): IBinder? {
// 加载进程的空Service
return null
}
}

View File

@@ -1,35 +0,0 @@
package com.mogo.och.taxi.passenger.mulprocess;
import android.os.RemoteException;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.och.taxi.passenger.ui.leftmenu.LeftMenuOpen;
import com.mogo.och.taxi.passenger.ui.leftmenu.OverlayLeftViewUtils;
public class OrderServiceImpl extends ILeftMenuService.Stub {
public static final String TAG = "mulprocessOrderServiceImpl";
@Override
public void transmissionIndex(int index) throws RemoteException {
CallerLogger.INSTANCE.d(SceneConstant.M_TAXI_P + TAG, "跨进程 transmissionIndex"+index);
UiThreadHandler.post(() -> {
OverlayLeftViewUtils.INSTANCE.transmissionIndexGet(index);
});
}
@Override
public void registerCallback(ICallback cb) throws RemoteException {
CallerLogger.INSTANCE.d(SceneConstant.M_TAXI_P + TAG, "跨进程 registerCallback");
LeftMenuOpen.INSTANCE.registerCallbackHost(cb);
}
@Override
public void unRegisterCallback(ICallback cb) throws RemoteException {
CallerLogger.INSTANCE.d(SceneConstant.M_TAXI_P + TAG, "跨进程 unRegisterCallback");
LeftMenuOpen.INSTANCE.unregisterCallbackHost(cb);
}
}

View File

@@ -9,7 +9,6 @@ import androidx.lifecycle.LifecycleOwner;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.commons.mvp.Presenter;
import com.mogo.eagle.core.data.map.MogoLocation;
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
import com.mogo.eagle.core.function.call.order.CallerOrderListenerManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
@@ -23,7 +22,6 @@ import com.mogo.och.taxi.passenger.callback.ITaxiPassengerCommonCallback;
import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum;
import com.mogo.och.taxi.passenger.model.TaxiPassengerModel;
import com.mogo.och.taxi.passenger.ui.TaxiPassengerBaseFragment;
import com.mogo.och.taxi.passenger.ui.leftmenu.LeftMenuOpen;
/**
* @author: wangmingjun
@@ -80,15 +78,6 @@ public class BaseTaxiPassengerPresenter extends Presenter<TaxiPassengerBaseFragm
}
}
// 获取当前订单状态
public TaxiPassengerOrderStatusEnum getCurOrderStatus() {
return TaxiPassengerModel.INSTANCE.getCurOrderStatus();
}
public void startOrStopOrderLoop(){
TaxiPassengerModel.INSTANCE.startOrStopOrderLoop();
}
@Override
public void onAutopilotArriveEnd() {
@@ -126,7 +115,7 @@ public class BaseTaxiPassengerPresenter extends Presenter<TaxiPassengerBaseFragm
@Override
public void onCurrentOrderDistToEndChanged(long meters, long timeInSecond) {
LeftMenuOpen.INSTANCE.callCallBack(meters,timeInSecond,-1);
}
@Override

View File

@@ -1,12 +1,9 @@
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.view.ViewGroup;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -17,25 +14,18 @@ import com.mogo.commons.module.status.MogoStatusManager;
import com.mogo.commons.mvp.MvpFragment;
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.function.hmi.ui.msgbox.PassengerMsgBoxBubbleView;
import com.mogo.eagle.core.function.hmi.ui.msgbox.PassengerMsgBoxButtonView;
import com.mogo.eagle.core.function.hmi.ui.msgbox.PassengerMsgBoxListView;
import com.mogo.eagle.core.function.hmi.ui.widget.RomaPassengerView;
import com.mogo.eagle.core.function.view.MapBizView;
import com.mogo.eagle.core.utilcode.util.DeviceUtils;
import com.mogo.eagle.core.utilcode.util.OverlayViewUtils;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.map.listener.IMogoMapListener;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.map.uicontroller.VisualAngleMode;
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.mulprocess.EmptyService;
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 org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
@@ -93,14 +83,8 @@ public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFrag
}else{
romaPView.setVisibility(View.GONE);
}
initListener();
onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getState());
switchVRFlatMode(MogoStatusManager.getInstance().isVrMode());
//预加载视频进程
EmptyService.Companion.startService(getContext());
}
@Override
@@ -128,17 +112,6 @@ public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFrag
mapBizView.onResume();
}
/**
* VR mode 转换
*
* @param isVRMode
*/
public void switchVRFlatMode(boolean isVRMode) {
if (mRootView != null) {
mRootView.setVisibility(isVRMode ? View.VISIBLE : View.GONE);
}
}
/**
* 改变自动驾驶状态
*
@@ -228,9 +201,6 @@ public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFrag
if (ochServingOrderFragment == null) {
ochServingOrderFragment = TaxiPassengerServingOrderFragment.newInstance();
}
if (showOrHideLefeMenu) {
OverlayLeftViewUtils.INSTANCE.showOverlayView(getActivity(), 0, true, -1, true);
}
if (ochServingOrderFragment.isHidden()) {
transaction
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
@@ -255,7 +225,6 @@ public class TaxiPassengerBaseFragment extends MvpFragment<TaxiPassengerBaseFrag
.hide(ochServingOrderFragment).commitAllowingStateLoss();
}
if (showOrHideLefeMenu) {
OverlayLeftViewUtils.INSTANCE.dismissOverlayView(true);
}
}
}

View File

@@ -1,45 +0,0 @@
package com.mogo.och.taxi.passenger.ui.leftmenu
import android.annotation.SuppressLint
import android.view.MotionEvent
import android.view.View
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
class ItemViewTouchListener :
View.OnTouchListener {
// 判断并放跑点击事件
private var dragTime = 0L
@SuppressLint("ClickableViewAccessibility")
override fun onTouch(view: View, motionEvent: MotionEvent): Boolean {
try {
when (motionEvent.action) {
MotionEvent.ACTION_DOWN -> {
LeftMenuOpen.dragAndOpen(motionEvent.rawX.toInt(),motionEvent.action)
dragTime = System.currentTimeMillis()
}
MotionEvent.ACTION_MOVE -> {
if (LeftMenuOpen.dragAndOpen(motionEvent.rawX.toInt(),motionEvent.action)) {
return false
}
}
MotionEvent.ACTION_UP -> {
LeftMenuOpen.dragAndOpen(motionEvent.rawX.toInt(),motionEvent.action)
if (System.currentTimeMillis() - dragTime > 500) {
dragTime = 0
return true
}
}
else -> {}
}
} catch (e: Exception) {
CallerLogger.e(SceneConstant.M_TAXI_P + TAG, e.message)
e.printStackTrace()
}
return false
}
companion object {
const val TAG = "ItemViewTouchListener"
}
}

View File

@@ -1,448 +0,0 @@
package com.mogo.och.taxi.passenger.ui.leftmenu
import android.annotation.SuppressLint
import android.content.ContentResolver
import android.database.Cursor
import android.os.DeadObjectException
import android.os.IBinder
import android.os.RemoteCallbackList
import android.os.RemoteException
import android.view.MotionEvent
import android.view.View
import android.view.ViewGroup
import android.view.WindowManager
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_TAXI_P
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.eagle.core.utilcode.util.Utils
import com.mogo.och.common.module.utils.DateTimeUtil
import com.mogo.och.common.module.utils.NumberFormatUtil
import com.mogo.och.taxi.passenger.R
import com.mogo.och.taxi.passenger.event.FinishActivity
import com.mogo.och.taxi.passenger.mulprocess.BinderCursor
import com.mogo.och.taxi.passenger.mulprocess.BinderProvider
import com.mogo.och.taxi.passenger.mulprocess.ICallback
import com.mogo.och.taxi.passenger.mulprocess.ILeftMenuService
import com.mogo.och.taxi.passenger.ui.video.FloatingDistanceInfoUtils
import com.mogo.och.taxi.passenger.ui.video.VideoActivity
import org.greenrobot.eventbus.EventBus
import rx.Observable
import rx.Observer
import rx.exceptions.OnCompletedFailedException
import rx.schedulers.Schedulers
import java.util.*
@SuppressLint("StaticFieldLeak")
object LeftMenuOpen {
const val TAG = "mulprocessLeftMenuOpen"
private var windowView: View? = null
private var wl: WindowManager.LayoutParams? = null
private var windowManager: WindowManager? = null
private var close: ((view: View, windowManager: WindowManager?) -> Unit)? = null
private var open: ((view: View, windowManager: WindowManager?) -> Unit)? = null
// 两部分主进程和子进程
private var dragList = mutableSetOf<View>()
private var orderService: ILeftMenuService? = null
private var icallbacks: RemoteCallbackList<ICallback>? = null
var checkIndex = OverlayLeftViewUtils.LIVE
private var lastClickTime = 0L
private const val FAST_CLICK_DELAY_TIME = 1300 // 防止事件发送过快
fun setValue(
windowView: View,
wl: WindowManager.LayoutParams?,
windowManager: WindowManager?,
close: (view: View, windowManager: WindowManager?) -> Unit,
open: (view: View, windowManager: WindowManager?) -> Unit,
isMainProcess: Boolean
) {
this.open = open
this.close = close
this.windowView = windowView
this.windowManager = windowManager
this.wl = wl
dragList.forEach {
registerDragView(it)
}
if(!isMainProcess) {
registerC()
}
}
fun clearValue() {
this.open = null
this.close = null
this.windowView = null
this.windowManager = null
this.wl = null
orderService = null
val iterator = dragList.iterator()
while (iterator.hasNext()) {
val next = iterator.next()
unRegisterDragView(next,false)
iterator.remove()
}
}
private var x = 0
// 判断并放跑点击事件
private const val DEVIATION = 10
private const val NEGATIVEDEVIATION = -10
fun dragAndOpen(newX: Int, action: Int): Boolean {
when (action) {
MotionEvent.ACTION_DOWN -> {
x = newX
}
MotionEvent.ACTION_MOVE -> {
val nowX = newX
val movedX = nowX - x
x = nowX
wl?.let { it ->
it.x += movedX
if (it.x > 0 || it.x < OverlayLeftViewUtils.DEVIATION_WIDTH) {
it.apply {
x -= movedX
}
return true
}
windowView?.let { windowView ->
windowManager?.let { windowManager ->
if (it.x > NEGATIVEDEVIATION && movedX > 0) {
open?.let { it1 ->
UiThreadHandler.post {
it1(windowView, windowManager)
}
}
} else {
//更新悬浮球控件位置
UiThreadHandler.post {
windowManager.updateViewLayout(windowView, it)
}
}
if (it.x < OverlayLeftViewUtils.DEVIATION_WIDTH + DEVIATION && movedX < 0) {
close?.let { it1 ->
UiThreadHandler.post {
it1(windowView, windowManager)
}
}
} else {
//更新悬浮球控件位置
UiThreadHandler.post {
windowManager.updateViewLayout(windowView, it)
}
}
}
}
}
}
MotionEvent.ACTION_UP -> {
wl?.let { wl ->
val startX = wl.x
if (startX > OverlayLeftViewUtils.DEVIATION_WIDTH / 2 && startX < 0) {
//拖动距离大于一半 自动打开
open?.let {
UiThreadHandler.post {
it(windowView!!, windowManager)
}
}
} else if (startX < OverlayLeftViewUtils.DEVIATION_WIDTH / 2 && startX >= OverlayLeftViewUtils.DEVIATION_WIDTH) {
// 拖动距离小于一半自动关闭
close?.let {
UiThreadHandler.post {
it(windowView!!, windowManager)
}
}
} else {
}
}
}
}
return false
}
fun registerDragView(view: View?) {
if (view != null) {
dragList.add(view)
view.setOnTouchListener(ItemViewTouchListener())
view.setOnClickListener {
open?.let { it1 -> it1(windowView!!, windowManager) }
}
}
}
fun unRegisterDragView(view: View?,remove:Boolean) {
if(remove) {
dragList.remove(view)
}
view?.let {
it.setOnTouchListener(null)
it.setOnClickListener(null)
if(it.id==R.id.ids_video_anchor){
val parent = it.parent as ViewGroup
parent.removeView(it)
}
}
}
fun transmissionIndex(index:Int){
Observable.empty<String?>().subscribeOn(Schedulers.io())
.subscribe(object : Observer<String?> {
override fun onCompleted() {
try {
CallerLogger.d(M_TAXI_P + TAG, "tran--transmissionIndex---$index")
if (orderService == null) {
registerC()
}
orderService?.transmissionIndex(index)
}catch (ill:IllegalStateException){
ill.printStackTrace()
}catch (onCo: OnCompletedFailedException){
onCo.printStackTrace()
}catch (deadobjectexception: DeadObjectException){
deadobjectexception.printStackTrace()
}
}
override fun onError(e: Throwable?) {}
override fun onNext(t: String?) {}
})
}
/**
* 主进程调用
*/
fun registerCallbackHost(cb:ICallback?){
if(icallbacks==null){
icallbacks = RemoteCallbackList<ICallback>()
}
cb?.let {
icallbacks?.register(it)
}
}
/**
* 主进程调用 反注册
*/
fun unregisterCallbackHost(cb:ICallback?){
cb?.let {
icallbacks?.unregister(it)
}
icallbacks?.kill()
icallbacks = null
}
/**
* 子进程调用 注册回调 主进程中调用
* 方便主进程传递到子进程 速度、剩余公里、剩余时间、到达时间
*/
fun registerCallback(cb:ICallback?){
Observable.empty<String?>().subscribeOn(Schedulers.io())
.subscribe(object : Observer<String?> {
override fun onCompleted() {
try {
CallerLogger.d(M_TAXI_P + TAG, "tran--registerCallback--注册")
if (orderService == null) {
registerC()
}
cb?.let {
orderService?.registerCallback(it)
}
}catch (ill:IllegalStateException){
ill.printStackTrace()
}catch (onCo: OnCompletedFailedException){
onCo.printStackTrace()
}catch (deadobjectexception: DeadObjectException){
deadobjectexception.printStackTrace()
}
}
override fun onError(e: Throwable?) {}
override fun onNext(t: String?) {}
})
}
/**
* 子进程调用 反注册
*/
fun unregisterCallback(cb:ICallback?){
Observable.empty<String?>().subscribeOn(Schedulers.io())
.subscribe(object : Observer<String?> {
override fun onCompleted() {
CallerLogger.d(M_TAXI_P + TAG, "tran--unregisterCallback--反注册")
cb?.let {
try {
orderService?.unRegisterCallback(it)
}catch (ill:IllegalStateException){
ill.printStackTrace()
}catch (onCo: OnCompletedFailedException){
onCo.printStackTrace()
}catch (deadobjectexception: DeadObjectException){
deadobjectexception.printStackTrace()
}
}
}
override fun onError(e: Throwable?) {}
override fun onNext(t: String?) {}
})
}
/**
* 主进程调用 向子进程传输 剩余距离、剩余时间、和速度
*/
fun callCallBack(meters: Long,timeInSecond: Long,speed:Float){
if(checkIndex == OverlayLeftViewUtils.CONSULT||checkIndex == OverlayLeftViewUtils.MOVIE) {
if (System.currentTimeMillis() - lastClickTime < FAST_CLICK_DELAY_TIME){
return
}
lastClickTime = System.currentTimeMillis()
Observable.empty<String?>().subscribeOn(Schedulers.io())
.subscribe(object : Observer<String?> {
override fun onCompleted() {
CallerLogger.d(M_TAXI_P + TAG, "callCallBack$meters--$timeInSecond--$speed")
try {
val len = icallbacks?.beginBroadcast()
len?.let {
for (i in 0 until len) {
try {
icallbacks?.getBroadcastItem(i)?.onResult(meters, timeInSecond, speed)
} catch (e: RemoteException) {
e.printStackTrace()
}
}
}
icallbacks?.finishBroadcast()
}catch (e:Exception){
CallerLogger.e(M_TAXI_P + TAG, "callCallBack${e.message}")
}
}
override fun onError(e: Throwable?) {}
override fun onNext(t: String?) {}
})
}
}
fun invoKeyByEventType(typeID:Int){
Observable.empty<String?>().subscribeOn(Schedulers.io())
.subscribe(object : Observer<String?> {
override fun onCompleted() {
val len = icallbacks?.beginBroadcast()
len?.let {
for (i in 0 until it) {
try {
icallbacks?.getBroadcastItem(i)?.postEvent(typeID)
} catch (e: RemoteException) {
e.printStackTrace()
}
}
}
icallbacks?.finishBroadcast()
}
override fun onError(e: Throwable?) {}
override fun onNext(t: String?) {}
})
}
/**
* 主进程、video进程都得调用
* 主进程在显示是主动调用
* video进程在天津View是判断是否调用了
*/
@Synchronized
private fun registerC() {
if(orderService!=null){
return
}
CallerLogger.d(M_TAXI_P + TAG, "tran--registerC--获取jni")
val resolver: ContentResolver = Utils.getApp().contentResolver
val cu = resolver.query(
BinderProvider.CONTENT_URI,
null,
null,
arrayOf(BinderProvider.SERVICE_LEFTMENU),
null
) ?: return
val binder: IBinder = getBinder(cu)
try {
try {
orderService = ILeftMenuService.Stub.asInterface(binder)
}catch (ill:IllegalStateException){
ill.printStackTrace()
}catch (onCo: OnCompletedFailedException){
onCo.printStackTrace()
}catch (deadobjectexception: DeadObjectException){
deadobjectexception.printStackTrace()
}
} catch (e: RemoteException) {
e.printStackTrace()
} finally {
cu.close()
}
}
private fun getBinder(cursor: Cursor): IBinder {
val extras = cursor.extras
extras.classLoader = BinderCursor.BinderParcelable::class.java.classLoader
val w = extras.getParcelable<BinderCursor.BinderParcelable>("binder")
return w!!.mBinder
}
val callBack = object : ICallback.Stub() {
override fun onResult(meters :Long, timeInSecond:Long,speed:Float) {
if(speed<0){
// 距离单位
var disUnit = "公里"
// 距离
var remainDis: String? = "0"
if (meters > 0) {
if (meters / 1000 < 1) {
disUnit = ""
remainDis = Math.round(meters.toFloat()).toString()
} else {
disUnit = "公里"
remainDis = NumberFormatUtil.formatLong(meters.toDouble() / 1000)
}
}
// 剩余时间
val time = Math.ceil(timeInSecond.toDouble() / 60f).toInt()
val beforeTime = Calendar.getInstance()
beforeTime.add(Calendar.MINUTE, time)
//到达时间
val arriveTime = DateTimeUtil.formatCalendarToString(beforeTime, DateTimeUtil.HH_mm)
FloatingDistanceInfoUtils.setDistance(meters,remainDis,disUnit,time,arriveTime)
}else{
FloatingDistanceInfoUtils.setSpeed(speed)
}
}
override fun postEvent(type: Int) {
when (type) {
VideoActivity.EVENT_FINISH -> {
EventBus.getDefault().post(FinishActivity())
}
else -> {}
}
}
}
}

View File

@@ -1,58 +0,0 @@
package com.mogo.och.taxi.passenger.ui.leftmenu
import android.content.Context
import android.view.View
import android.view.ViewGroup
import android.widget.BaseAdapter
import android.widget.ImageView
import com.mogo.och.taxi.passenger.ui.leftmenu.model.LeftMenuModel
class ListAdapter(private val context: Context,val list: MutableList<LeftMenuModel>) : BaseAdapter() {
override fun getCount(): Int {
return list.size
}
override fun getItem(position: Int): Any {
return list[position]
}
override fun getItemId(position: Int): Long {
return position.toLong()
}
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
val imageView = ImageView(context)
val leftMenuModel = list[position]
if (leftMenuModel.isChecked) {
imageView.setImageResource(leftMenuModel.selected)
} else {
imageView.setImageResource(leftMenuModel.select)
}
imageView.setOnClickListener {
setSelectIndex(position,true)
}
return imageView
}
/**
* 多进程调用
*/
fun setSelectIndex(index: Int,needStartActivity: Boolean) {
for (i in list.indices) {
if(index==i){
if(!list[i].isChecked){
list[i].selectListener.onSelect(needStartActivity)
OverlayLeftViewUtils.transmissionIndex(index)
}
}
list[i].isChecked = index == i
}
notifyDataSetChanged()
}
interface OnTabSelectListener {
fun onSelect(isCurrentProcess:Boolean)
}
}

View File

@@ -1,432 +0,0 @@
package com.mogo.och.taxi.passenger.ui.leftmenu
import android.animation.Animator
import android.animation.ValueAnimator
import android.annotation.SuppressLint
import android.app.Activity
import android.content.Context.WINDOW_SERVICE
import android.graphics.PixelFormat
import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
import android.view.WindowManager
import android.view.animation.LinearInterpolator
import android.widget.FrameLayout
import android.widget.ListView
import androidx.appcompat.widget.AppCompatImageView
import androidx.constraintlayout.widget.ConstraintLayout
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr
import com.mogo.eagle.core.utilcode.util.*
import com.mogo.och.taxi.passenger.R
import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst
import com.mogo.och.taxi.passenger.event.FinishActivity
import com.mogo.och.taxi.passenger.event.UIStatus
import com.mogo.och.taxi.passenger.mulprocess.EmptyService
import com.mogo.och.taxi.passenger.ui.leftmenu.model.LeftMenuModel
import com.mogo.och.taxi.passenger.ui.video.VideoActivity
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
import org.greenrobot.eventbus.EventBus
import java.util.concurrent.TimeUnit
/**
* 遮罩层工具类
*
* @author mogoauto
*/
@SuppressLint("StaticFieldLeak")
object OverlayLeftViewUtils {
private const val TAG = "OverlayViewUtils"
private var windowManager: WindowManager? = null
@Volatile
private var isShowing = false
private var params:WindowManager.LayoutParams?=null
const val WIDTH = 810
const val DEVIATION_WIDTH = -669
const val LIVE = 0
const val OVERVIEW = 1
const val CONSULT = 2
const val MOVIE = 3
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
/**
* 添加覆盖View在Activity上面
*/
@JvmOverloads
fun showOverlayView(context: Activity,checkIndex:Int = LIVE,isOpen: Boolean=true, ani: Int = -1,isMainProcess: Boolean = false) {
if (isShowing) {
return
}
if (windowManager == null) {
windowManager = context.getSystemService(WINDOW_SERVICE) as WindowManager
}
overlayView = LayoutInflater.from(context)
.inflate(R.layout.taxi_p_window_float_interphone, null) as ConstraintLayout
overlayView?.let { view ->
// 设置View显示模式沉浸式的侵入到状态栏导航栏
view.systemUiVisibility = (View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION)
layoutParams(ani,view, isOpen)
// 如果正在展示中并且lastOverlayView不为null先做移除操作保证覆盖在最上面的View只有一个防止叠加导致无法移除
dismissOverlayView(false)
val vDragField = view.findViewById<View>(R.id.v_drag_field)
acivOpenClose = view.findViewById(R.id.aciv_open_close)
vDragField.setOnTouchListener(ItemViewTouchListener())
vDragField.setOnClickListener {
val start: Int = params!!.x
if (start > DEVIATION_WIDTH /2 && start < 10) {
close(view, windowManager)
} else if (start < DEVIATION_WIDTH /2 && start >= DEVIATION_WIDTH) {
open(view, windowManager)
}
}
val lvSelectItem = view.findViewById<ListView>(R.id.lv_select_item)
val integers = mutableListOf<LeftMenuModel>()
val liveSelected = object :ListAdapter.OnTabSelectListener{
override fun onSelect(isCurrentProcess:Boolean) {
LeftMenuOpen.checkIndex = LIVE
if(isCurrentProcess) {
close(view, windowManager)
}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())
}
}
}
val overViewSelected = object :ListAdapter.OnTabSelectListener{
override fun onSelect(isCurrentProcess:Boolean) {
LeftMenuOpen.checkIndex = OVERVIEW
if(isCurrentProcess) {
close(view, windowManager)
}else {
LeftMenuOpen.invoKeyByEventType(VideoActivity.EVENT_FINISH)
}
if(isMainProcess){
//主进程 建议Eventbus实现
subscribeOVERVIEW = Observable.timer(300, TimeUnit.MILLISECONDS)
.subscribe {
EventBus.getDefault().post(UIStatus(UIStatus.OVERVIEW))
CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "发送Eventbus subscribeOVERVIEW")
}
}else{
EventBus.getDefault().post(FinishActivity())
}
}
}
val consultSelect = object :ListAdapter.OnTabSelectListener{
override fun onSelect(isCurrentProcess:Boolean) {
LeftMenuOpen.checkIndex = CONSULT
if(isCurrentProcess) {
close(view, windowManager)
//计算订单起点和终点距离
val sumDis = SharedPrefsMgr.getInstance(context).getInt(TaxiPassengerConst.SP_KEY_ORDER_SUM_DIS, 0)
VideoActivity.startActivity(context, VideoActivity.VIDEOTYPE_CONSULT,sumDis)
}
}
}
val entertainmentSelect = object :ListAdapter.OnTabSelectListener{
override fun onSelect(isCurrentProcess:Boolean) {
LeftMenuOpen.checkIndex = MOVIE
if(isCurrentProcess) {
close(view, windowManager)
val sumDis = SharedPrefsMgr.getInstance(context).getInt(TaxiPassengerConst.SP_KEY_ORDER_SUM_DIS, 0)
VideoActivity.startActivity(context, VideoActivity.VIDEOTYPE_MOIES,sumDis)
}
}
}
integers.add(LeftMenuModel(R.drawable.shape_size_live_select, R.drawable.shape_size_live_selected,false,liveSelected))
integers.add(LeftMenuModel(R.drawable.shape_size_overview_select, R.drawable.shape_size_overview_selected,false,overViewSelected))
integers.add(LeftMenuModel(R.drawable.shape_size_consult_select, R.drawable.shape_size_consult_selected,false,consultSelect))
integers.add(LeftMenuModel(R.drawable.shape_size_entertainment_select, R.drawable.shape_size_entertainment_selected,false,entertainmentSelect))
integers.forEachIndexed { index, leftMenuModel ->
leftMenuModel.isChecked = index == checkIndex
}
lvSelectItem.adapter = ListAdapter(context, integers)
addTarget(context)
LeftMenuOpen.setValue(view, params, windowManager,::close,::open,isMainProcess)
try {
windowManager!!.addView(overlayView, params)
checkProcess()
isShowing = true
} catch (e: WindowManager.BadTokenException) {
isShowing = true;
dismissOverlayView(false)
} catch (e: Exception) {
e.printStackTrace()
}
}
}
private fun addTarget(context: Activity) {
try {
val content =
context.window.decorView.findViewById<FrameLayout>(android.R.id.content)
val textView = View(context)
textView.id = R.id.ids_video_anchor
addDragTarget(textView)
val param: FrameLayout.LayoutParams =
FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT,FrameLayout.LayoutParams.WRAP_CONTENT)
param.gravity = Gravity.CENTER_VERTICAL
param.width = 143
param.height = 308
textView.layoutParams = param
content.addView(textView)
} catch (e: java.lang.Exception) {
e.printStackTrace()
}
}
/**
* 打开状态栏
*/
private fun open(overlayView: View,windowManager: WindowManager?) {
checkProcess()
val valueAnimator = ValueAnimator.ofInt(params!!.x, 0)
valueAnimator.duration = 100
valueAnimator.interpolator = LinearInterpolator()
valueAnimator.addUpdateListener {
params?.x = it.animatedValue as Int
windowManager?.updateViewLayout(overlayView, params)
}
valueAnimator.addListener(object : Animator.AnimatorListener {
override fun onAnimationStart(animation: Animator) {}
override fun onAnimationEnd(animation: Animator) {
acivOpenClose?.apply {
pivotX = (width /2).toFloat()
pivotY = (height /2).toFloat()
rotation = 0f
}
closeByTime(overlayView, windowManager)
params?.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE or
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS or
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
windowManager?.updateViewLayout(overlayView, params)
}
override fun onAnimationCancel(animation: Animator) {}
override fun onAnimationRepeat(animation: Animator) {}
})
valueAnimator.start()
}
private fun checkProcess() {
ThreadPoolService.execute {
val currentProcessName = ProcessUtils.getCurrentProcessName()
if (currentProcessName.contains(":video")) {
return@execute
}
val allBackgroundProcesses = ProcessUtils.getAllBackgroundProcesses()
var haveProcess = false
allBackgroundProcesses.forEach {
if (it.contains(":video")) {
haveProcess = true
return@forEach
}
}
if (!haveProcess) {
EmptyService.startService(Utils.getApp())
}
}
}
fun addDragTarget(view :View?){
LeftMenuOpen.registerDragView(view)
}
fun removeDragTarget(view: View?){
LeftMenuOpen.unRegisterDragView(view,true)
}
/**
*
*/
fun transmissionIndex(index:Int){
// TODO 需要与,杨亚坤,确认为啥要限制仅在主进程
// if(!ProcessUtils.isMainProcess(Utils.getApp())) {
LeftMenuOpen.transmissionIndex(index)
// }
}
fun transmissionIndexGet(index: Int){
overlayView?.let {
val lvSelectItem = it.findViewById<ListView>(R.id.lv_select_item)
val listAdapter = lvSelectItem.adapter as ListAdapter
listAdapter.setSelectIndex(index,false)
}
}
private fun closeByTime(
overlayView: View,
windowManager: WindowManager?
) {
subscribe?.let {
if (!it.isDisposed) {
it.dispose()
}
}
subscribe = Observable.timer(3000, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribe {
if (params?.x == 0) {
close(overlayView, windowManager)
}
}
}
/**
* 关闭状态栏
*/
private fun close(overlayView: View,windowManager: WindowManager?) {
val valueAnimator = ValueAnimator.ofInt(params!!.x, DEVIATION_WIDTH)
valueAnimator.duration = 100
valueAnimator.interpolator = LinearInterpolator()
valueAnimator.addUpdateListener {
params?.let { paramsIn->
paramsIn.x = it.animatedValue as Int
windowManager?.updateViewLayout(overlayView, paramsIn)
}
}
valueAnimator.addListener(object : Animator.AnimatorListener {
override fun onAnimationStart(animation: Animator) {}
override fun onAnimationEnd(animation: Animator) {
acivOpenClose?.apply {
pivotX = (width /2).toFloat()
pivotY = (height /2).toFloat()
rotation = 180f
}
params?.let {
it.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE or
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS or
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE or
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
windowManager?.updateViewLayout(overlayView, it)
}
}
override fun onAnimationCancel(animation: Animator) {}
override fun onAnimationRepeat(animation: Animator) {}
})
valueAnimator.start()
}
private fun layoutParams(ani: Int,view :View,isOpen: Boolean) {
if(params ==null) {
params = WindowManager.LayoutParams()
}
params = WindowManager.LayoutParams()
params?.let {
it.width = WIDTH
it.height = WindowManager.LayoutParams.MATCH_PARENT
it.alpha = 1.0f
it.gravity = Gravity.START or Gravity.CENTER_HORIZONTAL
if(isOpen) {
it.x = 0
}else{
it.x = DEVIATION_WIDTH
}
it.y = 0
it.format = PixelFormat.RGBA_8888
// 设置窗口类型为应用子窗口和PopupWindow同类型
it.type = WindowManager.LayoutParams.TYPE_APPLICATION_SUB_PANEL
// 没有边界限制,允许窗口扩展到屏幕外
it.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE or
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS or
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
if (ani != -1) {
it.windowAnimations = ani
}
closeByTime(view, windowManager)
}
}
fun getStatus():Boolean{
return isShowing
}
/**
* 移除覆盖View在Activity上面
*/
fun dismissOverlayView(isMain:Boolean) {
if (!isShowing) {
return
}
releaseDelay(subscribe)
releaseDelay(subscribeLive)
releaseDelay(subscribeOVERVIEW)
subscribe = null
subscribeLive = null
subscribeOVERVIEW = null
// 管理的要关闭都得关闭
if(isMain) {
LeftMenuOpen.invoKeyByEventType(VideoActivity.EVENT_FINISH)
}
LeftMenuOpen.clearValue()
try {
if (windowManager != null && overlayView != null) {
windowManager!!.removeViewImmediate(overlayView)
params = null
}
if(windowManager!=null){
windowManager = null
}
if(params!=null){
params = null
}
if (overlayView!=null) {
overlayView = null
}
if (acivOpenClose!=null) {
acivOpenClose = null
}
isShowing = false
} catch (e: Exception) {
e.printStackTrace()
}
}
private fun releaseDelay(subscribe: Disposable?) {
subscribe?.let {
if (!it.isDisposed) {
it.dispose()
}
}
}
}

View File

@@ -1,10 +0,0 @@
package com.mogo.och.taxi.passenger.ui.leftmenu.model
import com.mogo.och.taxi.passenger.ui.leftmenu.ListAdapter
data class LeftMenuModel(
val select: Int,
val selected: Int,
var isChecked: Boolean,
val selectListener: ListAdapter.OnTabSelectListener
)

View File

@@ -13,16 +13,12 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.AppCompatImageView
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.recyclerview.widget.RecyclerView
import com.mogo.commons.screen.ScreenHelper
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.BarUtils
import com.mogo.och.taxi.passenger.R
import com.mogo.och.taxi.passenger.bean.TaxiPassengerVideoPlay
import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst
import com.mogo.och.taxi.passenger.event.FinishActivity
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.layoutmanage.CarouselLayoutManager
import com.mogo.och.taxi.passenger.ui.video.layoutmanage.CarouselZoomPostLayoutListener
import com.mogo.och.taxi.passenger.ui.video.layoutmanage.CenterScrollListener
@@ -33,7 +29,6 @@ import com.mogo.och.taxi.passenger.widget.indicator.enums.IndicatorOrientation
import com.mogo.och.taxi.passenger.widget.indicator.enums.IndicatorSlideMode
import com.mogo.och.taxi.passenger.widget.indicator.enums.IndicatorStyle
import com.shuyu.gsyvideoplayer.video.base.GSYVideoView
import me.jessyan.autosize.AutoSize
import me.jessyan.autosize.AutoSizeCompat
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
@@ -111,7 +106,6 @@ class VideoActivity : AppCompatActivity() {
}
initListener()
initData()
LeftMenuOpen.registerCallback(LeftMenuOpen.callBack)
}
private fun initConsultData() {
@@ -280,22 +274,6 @@ class VideoActivity : AppCompatActivity() {
override fun onAttachedToWindow() {
super.onAttachedToWindow()
when (videotype) {
VIDEOTYPE_CONSULT -> {
OverlayLeftViewUtils.showOverlayView(
this,
isOpen = false,
checkIndex = OverlayLeftViewUtils.CONSULT
)
}
VIDEOTYPE_MOIES -> {
OverlayLeftViewUtils.showOverlayView(
this,
isOpen = false,
checkIndex = OverlayLeftViewUtils.MOVIE
)
}
}
val sumDis = intent.getIntExtra(TaxiPassengerConst.SP_KEY_ORDER_SUM_DIS, 0)
FloatingDistanceInfoUtils.showOverlayView(this, sumDis = sumDis)
}
@@ -324,33 +302,7 @@ class VideoActivity : AppCompatActivity() {
}
}
subscribe = Observable.interval(2, 8, TimeUnit.SECONDS)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(object : Observer<Long> {
override fun onCompleted() {}
override fun onError(e: Throwable?) {}
override fun onNext(t: Long?) {
if (!OverlayLeftViewUtils.getStatus()) {
when (videotype) {
VIDEOTYPE_CONSULT -> {
OverlayLeftViewUtils.showOverlayView(
this@VideoActivity,
isOpen = false,
checkIndex = OverlayLeftViewUtils.CONSULT
)
}
VIDEOTYPE_MOIES -> {
OverlayLeftViewUtils.showOverlayView(
this@VideoActivity,
isOpen = false,
checkIndex = OverlayLeftViewUtils.MOVIE
)
}
}
}
}
})
}
override fun onPause() {
@@ -386,9 +338,7 @@ class VideoActivity : AppCompatActivity() {
CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "onDestroy()")
super.onDestroy()
EventBus.getDefault().unregister(this)
LeftMenuOpen.unregisterCallback(LeftMenuOpen.callBack)
releaseOnNewInstance()
OverlayLeftViewUtils.dismissOverlayView(false)
FloatingDistanceInfoUtils.dismissOverlayView()
FixMemoryLeak.fixLeak(this)
cancleSubscribe()

View File

@@ -21,7 +21,6 @@ import com.mogo.eagle.core.utilcode.util.TimeTransformUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.eagle.core.widget.media.video.TextureVideoViewOutlineProvider
import com.mogo.och.taxi.passenger.R
import com.mogo.och.taxi.passenger.ui.leftmenu.OverlayLeftViewUtils
import com.mogo.och.taxi.passenger.ui.video.FullVideoUtils
import com.mogo.och.taxi.passenger.utils.ZoomDrawable
import com.shuyu.gsyvideoplayer.listener.VideoAllCallBack
@@ -83,7 +82,6 @@ class ConsultVideoPlayer : StandardGSYVideoPlayer {
private fun addDrageAnchor(){
vPpenLeft.visibility = VISIBLE
OverlayLeftViewUtils.addDragTarget(vPpenLeft)
layoutBottom.post {
val layoutParams = layoutBottom.layoutParams as ConstraintLayout.LayoutParams
layoutParams.setMargins(333,0,333,90)
@@ -207,7 +205,6 @@ class ConsultVideoPlayer : StandardGSYVideoPlayer {
setVideoAllCallBack(null)
}
dismissProgressDialog()
OverlayLeftViewUtils.removeDragTarget(vPpenLeft)
super.onDetachedFromWindow()
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 252 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 181 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 181 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 187 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 183 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="@drawable/taxi_p_mogo_consult_select"
android:width="@dimen/dp_610"
android:height="@dimen/dp_310"/>
</layer-list >

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="@drawable/taxi_p_mogo_consult_selected"
android:width="@dimen/dp_610"
android:height="@dimen/dp_310"/>
</layer-list >

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="@drawable/taxi_p_mogo_entertainment_select"
android:width="@dimen/dp_610"
android:height="@dimen/dp_310"/>
</layer-list >

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="@drawable/taxi_p_mogo_entertainment_selected"
android:width="@dimen/dp_610"
android:height="@dimen/dp_310"/>
</layer-list >

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="@drawable/taxi_p_mogo_live_select"
android:width="@dimen/dp_610"
android:height="@dimen/dp_310"/>
</layer-list >

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="@drawable/taxi_p_mogo_live_selected"
android:width="@dimen/dp_610"
android:height="@dimen/dp_310"/>
</layer-list >

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="@drawable/taxi_p_mogo_overview_select"
android:width="@dimen/dp_610"
android:height="@dimen/dp_310"/>
</layer-list >

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="@drawable/taxi_p_mogo_overview_selected"
android:width="@dimen/dp_610"
android:height="@dimen/dp_310"/>
</layer-list >

View File

@@ -1,41 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:background="@drawable/taxi_p_left_flow_bg"
android:clickable="false"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:ignore="MissingDefaultResource">
<ListView
android:id="@+id/lv_select_item"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:paddingTop="153dp"
android:layout_marginEnd="143dp"
android:divider="@null"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<LinearLayout
android:id="@+id/v_drag_field"
app:layout_constraintStart_toEndOf="@+id/lv_select_item"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:orientation="horizontal"
android:gravity="center_vertical"
android:layout_width="143dp"
android:layout_height="308dp">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/aciv_open_close"
android:layout_marginStart="14dp"
android:src="@drawable/ic_baseline_arrow"
android:rotation="180"
android:layout_width="25dp"
android:layout_height="33dp"/>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout >