add: console.setPosition, console.setSize
This commit is contained in:
@@ -25,6 +25,7 @@ public class ConsoleFloaty extends ResizableExpandableFloaty.AbstractResizableEx
|
||||
private TextView mTitleView;
|
||||
private StardustConsole mConsole;
|
||||
private CharSequence mTitle;
|
||||
private View mExpandedView;
|
||||
|
||||
public ConsoleFloaty(StardustConsole console) {
|
||||
mConsole = console;
|
||||
@@ -34,6 +35,16 @@ public class ConsoleFloaty extends ResizableExpandableFloaty.AbstractResizableEx
|
||||
setCollapsedViewUnpressedAlpha(1.0f);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getInitialWidth() {
|
||||
return ScreenMetrics.getDeviceScreenWidth() * 2 / 3;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getInitialHeight() {
|
||||
return ScreenMetrics.getDeviceScreenHeight() / 3;
|
||||
}
|
||||
|
||||
@Override
|
||||
public View inflateCollapsedView(FloatyService service, final ResizableExpandableFloatyWindow window) {
|
||||
ensureContextWrapper(service);
|
||||
@@ -53,16 +64,16 @@ public class ConsoleFloaty extends ResizableExpandableFloaty.AbstractResizableEx
|
||||
setListeners(view, window);
|
||||
setUpConsole(view, window);
|
||||
setInitialMeasure(view);
|
||||
mExpandedView = view;
|
||||
return view;
|
||||
}
|
||||
|
||||
public View getExpandedView() {
|
||||
return mExpandedView;
|
||||
}
|
||||
|
||||
private void setInitialMeasure(final View view) {
|
||||
view.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
ViewUtil.setViewMeasure(view, ScreenMetrics.getDeviceScreenWidth() * 2 / 3, ScreenMetrics.getDeviceScreenHeight() / 3);
|
||||
}
|
||||
});
|
||||
view.post(() -> ViewUtil.setViewMeasure(view, getInitialWidth(), getInitialHeight()));
|
||||
}
|
||||
|
||||
private void initConsoleTitle(View view) {
|
||||
@@ -84,30 +95,17 @@ public class ConsoleFloaty extends ResizableExpandableFloaty.AbstractResizableEx
|
||||
}
|
||||
|
||||
private void setWindowOperationIconListeners(View view, final ResizableExpandableFloatyWindow window) {
|
||||
view.findViewById(R.id.close).setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
window.close();
|
||||
}
|
||||
});
|
||||
view.findViewById(R.id.move_or_resize).setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (mMoveCursor.getVisibility() == View.VISIBLE) {
|
||||
mMoveCursor.setVisibility(View.GONE);
|
||||
mResizer.setVisibility(View.GONE);
|
||||
} else {
|
||||
mMoveCursor.setVisibility(View.VISIBLE);
|
||||
mResizer.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
});
|
||||
view.findViewById(R.id.minimize).setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
window.collapse();
|
||||
view.findViewById(R.id.close).setOnClickListener(v -> window.close());
|
||||
view.findViewById(R.id.move_or_resize).setOnClickListener(v -> {
|
||||
if (mMoveCursor.getVisibility() == View.VISIBLE) {
|
||||
mMoveCursor.setVisibility(View.GONE);
|
||||
mResizer.setVisibility(View.GONE);
|
||||
} else {
|
||||
mMoveCursor.setVisibility(View.VISIBLE);
|
||||
mResizer.setVisibility(View.VISIBLE);
|
||||
}
|
||||
});
|
||||
view.findViewById(R.id.minimize).setOnClickListener(v -> window.collapse());
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.stardust.autojs.core.console;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Looper;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.view.WindowManager;
|
||||
|
||||
@@ -13,6 +14,7 @@ import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
|
||||
import com.stardust.enhancedfloaty.FloatyService;
|
||||
import com.stardust.enhancedfloaty.ResizableExpandableFloatyWindow;
|
||||
import com.stardust.util.UiHandler;
|
||||
import com.stardust.util.ViewUtil;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.ArrayList;
|
||||
@@ -60,6 +62,7 @@ public class StardustConsole extends AbstractConsole {
|
||||
void onLogClear();
|
||||
}
|
||||
|
||||
private final Object WINDOW_SHOW_LOCK = new Object();
|
||||
private final Console mGlobalConsole;
|
||||
private final ArrayList<Log> mLogs = new ArrayList<>();
|
||||
private AtomicInteger mIdCounter = new AtomicInteger(0);
|
||||
@@ -70,6 +73,9 @@ public class StardustConsole extends AbstractConsole {
|
||||
private BlockingQueue<String> mInput = new ArrayBlockingQueue<>(1);
|
||||
private WeakReference<ConsoleView> mConsoleView;
|
||||
private volatile boolean mShown = false;
|
||||
private int mWidth;
|
||||
private int mHeight;
|
||||
private int mX, mY;
|
||||
|
||||
public StardustConsole(UiHandler uiHandler) {
|
||||
this(uiHandler, null);
|
||||
@@ -79,11 +85,19 @@ public class StardustConsole extends AbstractConsole {
|
||||
mUiHandler = uiHandler;
|
||||
mConsoleFloaty = new ConsoleFloaty(this);
|
||||
mGlobalConsole = globalConsole;
|
||||
mWidth = mConsoleFloaty.getInitialWidth();
|
||||
mHeight = mConsoleFloaty.getInitialHeight();
|
||||
mFloatyWindow = new ResizableExpandableFloatyWindow(mConsoleFloaty) {
|
||||
@Override
|
||||
public void onCreate(FloatyService service, WindowManager manager) {
|
||||
super.onCreate(service, manager);
|
||||
expand();
|
||||
mFloatyWindow.getWindowBridge().updateMeasure(mWidth, mHeight);
|
||||
mFloatyWindow.getWindowBridge().updatePosition(mX, mY);
|
||||
synchronized (WINDOW_SHOW_LOCK) {
|
||||
mShown = true;
|
||||
WINDOW_SHOW_LOCK.notifyAll();
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -142,6 +156,9 @@ public class StardustConsole extends AbstractConsole {
|
||||
|
||||
@Override
|
||||
public void show() {
|
||||
if (mShown) {
|
||||
return;
|
||||
}
|
||||
if (!SettingsCompat.canDrawOverlays(mUiHandler.getContext())) {
|
||||
SettingsCompat.manageDrawOverlays(mUiHandler.getContext());
|
||||
mUiHandler.toast(R.string.text_no_floating_window_permission);
|
||||
@@ -157,7 +174,16 @@ public class StardustConsole extends AbstractConsole {
|
||||
mUiHandler.toast(R.string.text_no_floating_window_permission);
|
||||
}
|
||||
});
|
||||
mShown = true;
|
||||
synchronized (WINDOW_SHOW_LOCK) {
|
||||
if (mShown) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
WINDOW_SHOW_LOCK.wait();
|
||||
} catch (InterruptedException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void startFloatyService() {
|
||||
@@ -167,12 +193,42 @@ public class StardustConsole extends AbstractConsole {
|
||||
|
||||
@Override
|
||||
public void hide() {
|
||||
try {
|
||||
mFloatyWindow.close();
|
||||
} catch (IllegalArgumentException ignored) {
|
||||
mUiHandler.post(() -> {
|
||||
synchronized (WINDOW_SHOW_LOCK) {
|
||||
if (!mShown)
|
||||
return;
|
||||
try {
|
||||
mFloatyWindow.close();
|
||||
} catch (IllegalArgumentException ignored) {
|
||||
|
||||
}
|
||||
mShown = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void setSize(int w, int h) {
|
||||
mWidth = w;
|
||||
mHeight = h;
|
||||
if (mShown) {
|
||||
mUiHandler.post(() -> {
|
||||
if (mShown) {
|
||||
ViewUtil.setViewMeasure(mConsoleFloaty.getExpandedView(), w, h);
|
||||
mFloatyWindow.getWindowBridge().updateMeasure(w, h);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public void setPosition(int x, int y) {
|
||||
mX = x;
|
||||
mY = y;
|
||||
if (mShown) {
|
||||
mUiHandler.post(() -> {
|
||||
if (mShown)
|
||||
mFloatyWindow.getWindowBridge().updatePosition(x, y);
|
||||
});
|
||||
}
|
||||
mShown = false;
|
||||
}
|
||||
|
||||
@ScriptInterface
|
||||
|
||||
Reference in New Issue
Block a user