This commit is contained in:
wangcongtao
2020-08-07 15:23:31 +08:00
parent 4924a8da2b
commit 037de4b504
15 changed files with 3022 additions and 35 deletions

View File

@@ -13,10 +13,12 @@ import com.mogo.utils.WindowUtils;
* 采用windowManager实现接口
*/
class WindowManagerImpl implements IWindowManagerView {
private WindowManager mWindowManager;
private WindowManager.LayoutParams mLayoutParams;
private WindowManagerView.WMViewParams mParams;
private boolean isShowing;
@Override
public void init(WindowManagerView.WMViewParams params) {
mParams = params;
@@ -31,16 +33,11 @@ class WindowManagerImpl implements IWindowManagerView {
mLayoutParams.gravity = Gravity.CENTER;
mLayoutParams.flags = WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
if ( CarSeries.getSeries() == CarSeries.CAR_SERIES_F80X ) {
mLayoutParams.width = 1920;
mLayoutParams.height = 1080;
} else {
mLayoutParams.width = WindowUtils.getScreenWidth( mParams.mContext );
mLayoutParams.height = WindowUtils.getScreenHeight( mParams.mContext );
}
mLayoutParams.width = mParams.mWidth;
mLayoutParams.height = mParams.mHeight;
mLayoutParams.x = mParams.mX;
mLayoutParams.y = mParams.mY;
mLayoutParams.dimAmount = 0.5f;
mLayoutParams.x = 0;
mLayoutParams.y = 0;
}
@Override

View File

@@ -1,20 +1,12 @@
package com.mogo.module.common.wm;
import android.content.Context;
import android.graphics.PixelFormat;
import android.os.Build;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import androidx.annotation.IdRes;
import androidx.annotation.LayoutRes;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.module.common.utils.CarSeries;
import com.mogo.utils.WindowUtils;
/**
* @author congtaowang
* @since 2020-05-21
@@ -25,56 +17,82 @@ public class WindowManagerView {
private WMViewParams mParams;
private IWindowManagerView managerView;
private IWindowManagerView mManagerView;
private WindowManagerView(WMViewParams params) {
private WindowManagerView( WMViewParams params, IWindowManagerView view ) {
this.mParams = params;
managerView = new DialogImpl();
managerView.init(params);
// init();
mManagerView = view;
view.init( params );
}
public boolean isShowing() {
return managerView.isShowing();
return mManagerView.isShowing();
}
public <T extends View> T findViewById(@IdRes int id) {
return mParams.mContentView.findViewById(id);
public < T extends View > T findViewById( @IdRes int id ) {
return mParams.mContentView.findViewById( id );
}
public void show() {
managerView.show();
mManagerView.show();
}
public void dismiss() {
managerView.hide();
mManagerView.hide();
}
public static class Builder {
private WMViewParams mParams = null;
public Builder(Context context) {
public Builder( Context context ) {
mParams = new WMViewParams();
mParams.mContext = context;
}
public Builder contentView(View contentView) {
public Builder contentView( View contentView ) {
mParams.mContentView = contentView;
return this;
}
public Builder contentView(@LayoutRes int contentViewId) {
mParams.mContentView = LayoutInflater.from(mParams.mContext).inflate(contentViewId,
null);
public Builder contentView( @LayoutRes int contentViewId ) {
mParams.mContentView = LayoutInflater.from( mParams.mContext ).inflate( contentViewId, null );
return this;
}
public Builder size( int width, int height ) {
mParams.mWidth = width;
mParams.mHeight = height;
return this;
}
public Builder position( int x, int y ) {
mParams.mX = x;
mParams.mY = y;
return this;
}
/**
* 默认dialog实现
*
* @return
*/
public WindowManagerView build() {
if (mParams.mContentView == null) {
throw new NullPointerException("WMViewParams#mContentView must not be null.");
return showInDialog();
}
public WindowManagerView showInDialog() {
if ( mParams.mContentView == null ) {
throw new NullPointerException( "WMViewParams#mContentView must not be null." );
}
return new WindowManagerView(mParams);
return new WindowManagerView( mParams, new DialogImpl() );
}
public WindowManagerView showInWindowManager() {
if ( mParams.mContentView == null ) {
throw new NullPointerException( "WMViewParams#mContentView must not be null." );
}
return new WindowManagerView( mParams, new WindowManagerImpl() );
}
}
@@ -83,5 +101,9 @@ public class WindowManagerView {
public View mContentView;
public Context mContext;
public int mWidth;
public int mHeight;
public int mX;
public int mY;
}
}