This commit is contained in:
wangcongtao
2020-04-15 16:25:25 +08:00
parent 2fdb909ea4
commit df1e308684
32 changed files with 749 additions and 482 deletions

View File

@@ -30,7 +30,7 @@ import com.mogo.module.main.cards.MogoModulesHandler;
import com.mogo.module.main.cards.MogoModulesManager;
import com.mogo.module.main.cards.OnPageChangeListenerAdapter;
import com.mogo.module.main.cards.OrientedViewPager;
import com.mogo.module.main.windowview.WindowViewHandler;
import com.mogo.module.main.windowview.FloatingViewHandler;
import com.mogo.module.service.ServiceConst;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.MogoServicePaths;
@@ -192,7 +192,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
// 避免事件穿透导致地图被滑动
mLeftShadowFrame.setOnClickListener( view -> {
} );
WindowViewHandler.init( mFloatingLayout );
FloatingViewHandler.init( mFloatingLayout );
}
// 隐藏布局

View File

@@ -13,7 +13,7 @@ import com.mogo.utils.logger.Logger;
* <p>
* 描述
*/
public class WindowViewHandler {
public class FloatingViewHandler {
private static final String TAG = "WindowViewHandler";
@@ -35,9 +35,9 @@ public class WindowViewHandler {
*/
private static boolean sMovable = false;
public static FrameLayout sFloatingLayout = null;
private static FrameLayout sFloatingLayout = null;
public static void init(FrameLayout frameLayout) {
public static void init( FrameLayout frameLayout ) {
sFloatingLayout = frameLayout;
}
@@ -49,20 +49,20 @@ public class WindowViewHandler {
* @param y
* @param movable
*/
public static void addView(View view, int x, int y, boolean movable) {
if (view == null) {
public static void addView( View view, int x, int y, boolean movable ) {
if ( view == null ) {
return;
}
if (sFloatingLayout == null) {
Logger.e(TAG, "no floating frame. ");
if ( sFloatingLayout == null ) {
Logger.e( TAG, "no floating frame. " );
return;
}
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT );
params.leftMargin = x;
params.topMargin = y;
sFloatingLayout.addView(view, params);
sFloatingLayout.addView( view, params );
}
/**
@@ -72,16 +72,16 @@ public class WindowViewHandler {
* @param params
* @param movable
*/
public static void addView(View view, FrameLayout.LayoutParams params, boolean movable) {
if (view == null) {
public static void addView( View view, FrameLayout.LayoutParams params, boolean movable ) {
if ( view == null ) {
return;
}
if (sFloatingLayout == null) {
Logger.e(TAG, "no floating frame. ");
if ( sFloatingLayout == null ) {
Logger.e( TAG, "no floating frame. " );
return;
}
sFloatingLayout.addView(view, params);
sFloatingLayout.addView( view, params );
}
/**
@@ -93,27 +93,27 @@ public class WindowViewHandler {
* @param y
* @param movable
*/
public static void addView(View view, int priority, int x, int y, boolean movable) {
if (view == null) {
public static void addView( View view, int priority, int x, int y, boolean movable ) {
if ( view == null ) {
return;
}
if (sFloatingLayout == null) {
Logger.e(TAG, "no floating frame. ");
if ( sFloatingLayout == null ) {
Logger.e( TAG, "no floating frame. " );
return;
}
if (sView == view) {
Logger.w(TAG, "改布局已添加且没有移除,不操作");
if ( sView == view ) {
Logger.w( TAG, "改布局已添加且没有移除,不操作" );
return;
}
if (sView != null) {
if (priority < sPriority) {
Logger.w(TAG, "过滤低优先级布局");
if ( sView != null ) {
if ( priority < sPriority ) {
Logger.w( TAG, "过滤低优先级布局" );
return;
}
sFloatingLayout.removeView(sView);
sFloatingLayout.removeView( sView );
}
sView = view;
sMovable = movable;
@@ -131,27 +131,27 @@ public class WindowViewHandler {
* @param params
* @param movable
*/
public static void addView(View view, int priority, FrameLayout.LayoutParams params, boolean movable) {
if (view == null) {
public static void addView( View view, int priority, FrameLayout.LayoutParams params, boolean movable ) {
if ( view == null ) {
return;
}
if (sFloatingLayout == null) {
Logger.e(TAG, "no floating frame. ");
if ( sFloatingLayout == null ) {
Logger.e( TAG, "no floating frame. " );
return;
}
if (sView == view) {
Logger.w(TAG, "改布局已添加且没有移除,不操作");
if ( sView == view ) {
Logger.w( TAG, "改布局已添加且没有移除,不操作" );
return;
}
if (sView != null) {
if (priority < sPriority) {
Logger.w(TAG, "过滤低优先级布局");
if ( sView != null ) {
if ( priority < sPriority ) {
Logger.w( TAG, "过滤低优先级布局" );
return;
}
sFloatingLayout.removeView(sView);
sFloatingLayout.removeView( sView );
}
sView = view;
sMovable = movable;
@@ -160,15 +160,15 @@ public class WindowViewHandler {
addView();
}
public static void removeView(View view) {
if (sFloatingLayout == null) {
public static void removeView( View view ) {
if ( sFloatingLayout == null ) {
return;
}
if (view == null) {
if ( view == null ) {
return;
}
sFloatingLayout.removeView(view);
if (sView == view) {
sFloatingLayout.removeView( view );
if ( sView == view ) {
sView = null;
sPriority = Integer.MIN_VALUE;
sMovable = false;
@@ -177,29 +177,35 @@ public class WindowViewHandler {
}
private static void addView() {
if (sView == null) {
if ( sView == null ) {
return;
}
FrameLayout.LayoutParams params = sParams;
if (params == null) {
params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
if ( params == null ) {
params = new FrameLayout.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT );
params.leftMargin = sX;
params.topMargin = sY;
}
sFloatingLayout.addView(sView, params);
sFloatingLayout.addView( sView, params );
}
public static void attachMovementEvent(View view, WindowManager.LayoutParams params) {
if (view == null) {
public static void attachMovementEvent( View view, WindowManager.LayoutParams params ) {
if ( view == null ) {
return;
}
view.setOnTouchListener((v, event) -> {
view.setOnTouchListener( ( v, event ) -> {
DispatchTouchEventWrapper.getInstance()
.attach(view, params)
.handle(event);
.attach( view, params )
.handle( event );
return false;
});
} );
}
public static void setVisible( boolean visible ) {
if ( sFloatingLayout != null ) {
sFloatingLayout.setVisibility( visible ? View.VISIBLE : View.INVISIBLE );
}
}
}

View File

@@ -14,36 +14,46 @@ import com.mogo.service.windowview.IMogoWindowManager;
* <p>
* 根据优先级控制显示 window view.
*/
@Route(path = MogoServicePaths.PATH_WINDOW_MANAGER)
@Route( path = MogoServicePaths.PATH_WINDOW_MANAGER )
public class MogoWindowManager implements IMogoWindowManager {
@Override
public void addView(View view, int x, int y, boolean movable) {
WindowViewHandler.addView(view, x, y, movable);
public void addView( View view, int x, int y, boolean movable ) {
FloatingViewHandler.addView( view, x, y, movable );
}
@Override
public void addView(View view, FrameLayout.LayoutParams params, boolean movable) {
WindowViewHandler.addView(view, params, movable);
public void addView( View view, FrameLayout.LayoutParams params, boolean movable ) {
FloatingViewHandler.addView( view, params, movable );
}
@Override
public void addView(int priority, View view, int x, int y, boolean movable) {
WindowViewHandler.addView(view, priority, x, y, movable);
public void addView( int priority, View view, int x, int y, boolean movable ) {
FloatingViewHandler.addView( view, priority, x, y, movable );
}
@Override
public void addView(int priority, View view, FrameLayout.LayoutParams params, boolean movable) {
WindowViewHandler.addView(view, priority, params, movable);
public void addView( int priority, View view, FrameLayout.LayoutParams params, boolean movable ) {
FloatingViewHandler.addView( view, priority, params, movable );
}
@Override
public void removeView(View view) {
WindowViewHandler.removeView(view);
public void removeView( View view ) {
FloatingViewHandler.removeView( view );
}
@Override
public void init(Context context) {
public void hideAll() {
FloatingViewHandler.setVisible( false );
}
@Override
public void showAll() {
FloatingViewHandler.setVisible( true );
}
@Override
public void init( Context context ) {
}
}