diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/DialogImpl.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/DialogImpl.java index a7bcb305c1..8e93bfca6c 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/DialogImpl.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/DialogImpl.java @@ -39,6 +39,10 @@ class DialogImpl implements IWindowManagerView { dialog.show(); } + @Override + public void update(WindowManagerView.WMViewParams params) { + } + @Override public void hide() { /* diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/IWindowManagerView.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/IWindowManagerView.java index cab1b77605..9f30fab32b 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/IWindowManagerView.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/IWindowManagerView.java @@ -27,6 +27,12 @@ interface IWindowManagerView { */ void show(); + /** + * 更新界面位置或大小 + * @param params 具体参数 + */ + void update(WindowManagerView.WMViewParams params); + /** * 隐藏 */ diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerImpl.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerImpl.java index d810e6033f..1e491f0669 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerImpl.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerImpl.java @@ -4,6 +4,7 @@ import android.content.Context; import android.graphics.PixelFormat; import android.os.Build; import android.view.MotionEvent; +import android.view.View; import android.view.WindowManager; /** @@ -16,6 +17,8 @@ class WindowManagerImpl implements IWindowManagerView { private WindowManagerView.WMViewParams mParams; private boolean isShowing; + private View rootView; + private float mLastX, mLastY; private int mOldOffsetX, mOldOffsetY; @@ -23,6 +26,10 @@ class WindowManagerImpl implements IWindowManagerView { public void init( WindowManagerView.WMViewParams params ) { mParams = params; mWindowManager = ( WindowManager ) mParams.mContext.getApplicationContext().getSystemService( Context.WINDOW_SERVICE ); + generateLayoutParams(); + } + + private void generateLayoutParams(){ mLayoutParams = new WindowManager.LayoutParams(); if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.O ) { mLayoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; @@ -80,10 +87,20 @@ class WindowManagerImpl implements IWindowManagerView { public void show() { if ( !isShowing ) { isShowing = true; + rootView = mParams.mContentView; mWindowManager.addView( mParams.mContentView, mLayoutParams ); } } + @Override + public void update(WindowManagerView.WMViewParams params) { + if (isShowing) { + mParams = params; + generateLayoutParams(); + mWindowManager.updateViewLayout(rootView,mLayoutParams); + } + } + @Override public void hide() { if ( isShowing && mParams != null ) { diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerView.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerView.java index db2b244273..4d85ed9a2c 100644 --- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerView.java +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/wm/WindowManagerView.java @@ -116,4 +116,15 @@ public class WindowManagerView { public int mY; public int mGravity; } + + public void exchangeSizeAndPosition(int width, int height, int x, int y) { + if (isShowing()) { + mParams.mX = x; + mParams.mY = y; + mParams.mWidth = width; + mParams.mHeight = height; + mManagerView.update(mParams); + } + } + } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/vrmode/VrModeController.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/vrmode/VrModeController.java index fc18405fd2..6f8521dab3 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/vrmode/VrModeController.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/vrmode/VrModeController.java @@ -51,11 +51,11 @@ class VrModeController { } public void onVrModeChanged( boolean isVrMode ) { -// if ( isVrMode ) { -// bindVrModeService(); -// } else { -// unbindVrModeService(); -// } + if ( isVrMode ) { + bindVrModeService(); + } else { + unbindVrModeService(); + } } private void bindVrModeService() { diff --git a/modules/mogo-modules-mvision/src/main/java/com/mogo/module/machine/vision/MachineVisionMapService.java b/modules/mogo-modules-mvision/src/main/java/com/mogo/module/machine/vision/MachineVisionMapService.java index d2b117ff90..a177659e42 100644 --- a/modules/mogo-modules-mvision/src/main/java/com/mogo/module/machine/vision/MachineVisionMapService.java +++ b/modules/mogo-modules-mvision/src/main/java/com/mogo/module/machine/vision/MachineVisionMapService.java @@ -33,6 +33,8 @@ class MachineVisionMapService extends Service { private WindowManagerView mMachineVisionMapViewManager; private View mRootView; + private View mClickView; + private MachineVisionMapView mMapView; @Nullable @Override @@ -111,6 +113,8 @@ class MachineVisionMapService extends Service { } } + private boolean isSmall = true; + private void addMachineVisionMapView() { mMachineVisionMapViewManager = new WindowManagerView.Builder( getApplicationContext() ) .contentView( R.layout.module_mvision_layout_view ) @@ -125,8 +129,42 @@ class MachineVisionMapService extends Service { .gravity( Gravity.TOP | Gravity.LEFT ) .showInWindowManager(); mRootView = mMachineVisionMapViewManager.findViewById( R.id.module_mvision_map_root ); - MachineVisionMapViewHandler.getInstance().setMachineVisionMapView( mMachineVisionMapViewManager.findViewById( R.id.module_mvision_map_view ) ); + mClickView = mMachineVisionMapViewManager.findViewById(R.id.module_mvision_map_click); + mMapView = mMachineVisionMapViewManager.findViewById(R.id.module_mvision_map_view); + MachineVisionMapViewHandler.getInstance().setMachineVisionMapView( mMapView ); mMachineVisionMapViewManager.show(); + + mClickView.setOnClickListener(v -> { + int width, height, x, y; + if (isSmall) { + // 变大 + isSmall = false; + width = getResources().getDimensionPixelSize(R.dimen.module_mvision_big_view_width); + height = getResources().getDimensionPixelSize(R.dimen.module_mvision_big_view_height); + x = getResources().getDimensionPixelSize(R.dimen.module_mvision_big_view_x); + y = getResources().getDimensionPixelSize(R.dimen.module_mvision_big_view_y); + }else{ + // 变小 + isSmall = true; + width = getResources().getDimensionPixelSize(R.dimen.module_mvision_view_width); + height = getResources().getDimensionPixelSize(R.dimen.module_mvision_view_height); + x = getResources().getDimensionPixelSize(R.dimen.module_mvision_view_x); + y = getResources().getDimensionPixelSize(R.dimen.module_mvision_view_y); + } + mRootView.getLayoutParams().width = width; + mRootView.getLayoutParams().height = height; + mRootView.setLayoutParams(mRootView.getLayoutParams()); + + mClickView.getLayoutParams().width = width; + mClickView.getLayoutParams().height = height; + mClickView.setLayoutParams(mClickView.getLayoutParams()); + + mMapView.getLayoutParams().width = width; + mMapView.getLayoutParams().height = height; + mMapView.setLayoutParams(mMapView.getLayoutParams()); + + mMachineVisionMapViewManager.exchangeSizeAndPosition(width, height, x, y); + }); } @Override @@ -136,6 +174,8 @@ class MachineVisionMapService extends Service { if ( mMachineVisionMapViewManager != null ) { mMachineVisionMapViewManager.dismiss(); mRootView = null; + mClickView = null; + mMapView = null; } } } diff --git a/modules/mogo-modules-mvision/src/main/res/layout/module_mvision_layout_view.xml b/modules/mogo-modules-mvision/src/main/res/layout/module_mvision_layout_view.xml index 47f1317dde..ca3cd5c8a5 100644 --- a/modules/mogo-modules-mvision/src/main/res/layout/module_mvision_layout_view.xml +++ b/modules/mogo-modules-mvision/src/main/res/layout/module_mvision_layout_view.xml @@ -8,4 +8,9 @@ android:id="@+id/module_mvision_map_view" android:layout_width="@dimen/module_mvision_view_width" android:layout_height="@dimen/module_mvision_view_height" /> + + \ No newline at end of file diff --git a/modules/mogo-modules-mvision/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-modules-mvision/src/main/res/values-xhdpi/dimens.xml index 0956abf41e..d7917ae5cf 100644 --- a/modules/mogo-modules-mvision/src/main/res/values-xhdpi/dimens.xml +++ b/modules/mogo-modules-mvision/src/main/res/values-xhdpi/dimens.xml @@ -1,7 +1,12 @@ - 960px - 540px - 300px - 100px + 460px + 460px + 204px + 368px + + 0px + 0px + 1920px + 1080px \ No newline at end of file