add: console.setPosition, console.setSize
This commit is contained in:
8
app/src/main/assets/sample/控制台/调整控制台大小位置.js
Normal file
8
app/src/main/assets/sample/控制台/调整控制台大小位置.js
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
console.show();
|
||||||
|
console.log("调整大小...");
|
||||||
|
console.setSize(1000, 1000);
|
||||||
|
sleep(2000);
|
||||||
|
console.log("调整位置...");
|
||||||
|
console.setPosition(0, 500);
|
||||||
|
sleep(2000);
|
||||||
|
console.hide();
|
||||||
@@ -41,6 +41,8 @@ module.exports = function(__runtime__, scope){
|
|||||||
console.show = rtConsole.show.bind(rtConsole);
|
console.show = rtConsole.show.bind(rtConsole);
|
||||||
console.hide = rtConsole.hide.bind(rtConsole);
|
console.hide = rtConsole.hide.bind(rtConsole);
|
||||||
console.clear = rtConsole.clear.bind(rtConsole);
|
console.clear = rtConsole.clear.bind(rtConsole);
|
||||||
|
console.setSize = rtConsole.setSize.bind(rtConsole);
|
||||||
|
console.setPosition = rtConsole.setPosition.bind(rtConsole);
|
||||||
console.setTitle = rtConsole.setTitle.bind(rtConsole);
|
console.setTitle = rtConsole.setTitle.bind(rtConsole);
|
||||||
|
|
||||||
scope.print = console.print.bind(console);
|
scope.print = console.print.bind(console);
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ public class ConsoleFloaty extends ResizableExpandableFloaty.AbstractResizableEx
|
|||||||
private TextView mTitleView;
|
private TextView mTitleView;
|
||||||
private StardustConsole mConsole;
|
private StardustConsole mConsole;
|
||||||
private CharSequence mTitle;
|
private CharSequence mTitle;
|
||||||
|
private View mExpandedView;
|
||||||
|
|
||||||
public ConsoleFloaty(StardustConsole console) {
|
public ConsoleFloaty(StardustConsole console) {
|
||||||
mConsole = console;
|
mConsole = console;
|
||||||
@@ -34,6 +35,16 @@ public class ConsoleFloaty extends ResizableExpandableFloaty.AbstractResizableEx
|
|||||||
setCollapsedViewUnpressedAlpha(1.0f);
|
setCollapsedViewUnpressedAlpha(1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getInitialWidth() {
|
||||||
|
return ScreenMetrics.getDeviceScreenWidth() * 2 / 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getInitialHeight() {
|
||||||
|
return ScreenMetrics.getDeviceScreenHeight() / 3;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public View inflateCollapsedView(FloatyService service, final ResizableExpandableFloatyWindow window) {
|
public View inflateCollapsedView(FloatyService service, final ResizableExpandableFloatyWindow window) {
|
||||||
ensureContextWrapper(service);
|
ensureContextWrapper(service);
|
||||||
@@ -53,16 +64,16 @@ public class ConsoleFloaty extends ResizableExpandableFloaty.AbstractResizableEx
|
|||||||
setListeners(view, window);
|
setListeners(view, window);
|
||||||
setUpConsole(view, window);
|
setUpConsole(view, window);
|
||||||
setInitialMeasure(view);
|
setInitialMeasure(view);
|
||||||
|
mExpandedView = view;
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public View getExpandedView() {
|
||||||
|
return mExpandedView;
|
||||||
|
}
|
||||||
|
|
||||||
private void setInitialMeasure(final View view) {
|
private void setInitialMeasure(final View view) {
|
||||||
view.post(new Runnable() {
|
view.post(() -> ViewUtil.setViewMeasure(view, getInitialWidth(), getInitialHeight()));
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
ViewUtil.setViewMeasure(view, ScreenMetrics.getDeviceScreenWidth() * 2 / 3, ScreenMetrics.getDeviceScreenHeight() / 3);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initConsoleTitle(View view) {
|
private void initConsoleTitle(View view) {
|
||||||
@@ -84,30 +95,17 @@ public class ConsoleFloaty extends ResizableExpandableFloaty.AbstractResizableEx
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void setWindowOperationIconListeners(View view, final ResizableExpandableFloatyWindow window) {
|
private void setWindowOperationIconListeners(View view, final ResizableExpandableFloatyWindow window) {
|
||||||
view.findViewById(R.id.close).setOnClickListener(new View.OnClickListener() {
|
view.findViewById(R.id.close).setOnClickListener(v -> window.close());
|
||||||
@Override
|
view.findViewById(R.id.move_or_resize).setOnClickListener(v -> {
|
||||||
public void onClick(View v) {
|
if (mMoveCursor.getVisibility() == View.VISIBLE) {
|
||||||
window.close();
|
mMoveCursor.setVisibility(View.GONE);
|
||||||
}
|
mResizer.setVisibility(View.GONE);
|
||||||
});
|
} else {
|
||||||
view.findViewById(R.id.move_or_resize).setOnClickListener(new View.OnClickListener() {
|
mMoveCursor.setVisibility(View.VISIBLE);
|
||||||
@Override
|
mResizer.setVisibility(View.VISIBLE);
|
||||||
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.minimize).setOnClickListener(v -> window.collapse());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.stardust.autojs.core.console;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.os.Looper;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
|
|
||||||
@@ -13,6 +14,7 @@ import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
|
|||||||
import com.stardust.enhancedfloaty.FloatyService;
|
import com.stardust.enhancedfloaty.FloatyService;
|
||||||
import com.stardust.enhancedfloaty.ResizableExpandableFloatyWindow;
|
import com.stardust.enhancedfloaty.ResizableExpandableFloatyWindow;
|
||||||
import com.stardust.util.UiHandler;
|
import com.stardust.util.UiHandler;
|
||||||
|
import com.stardust.util.ViewUtil;
|
||||||
|
|
||||||
import java.lang.ref.WeakReference;
|
import java.lang.ref.WeakReference;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -60,6 +62,7 @@ public class StardustConsole extends AbstractConsole {
|
|||||||
void onLogClear();
|
void onLogClear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private final Object WINDOW_SHOW_LOCK = new Object();
|
||||||
private final Console mGlobalConsole;
|
private final Console mGlobalConsole;
|
||||||
private final ArrayList<Log> mLogs = new ArrayList<>();
|
private final ArrayList<Log> mLogs = new ArrayList<>();
|
||||||
private AtomicInteger mIdCounter = new AtomicInteger(0);
|
private AtomicInteger mIdCounter = new AtomicInteger(0);
|
||||||
@@ -70,6 +73,9 @@ public class StardustConsole extends AbstractConsole {
|
|||||||
private BlockingQueue<String> mInput = new ArrayBlockingQueue<>(1);
|
private BlockingQueue<String> mInput = new ArrayBlockingQueue<>(1);
|
||||||
private WeakReference<ConsoleView> mConsoleView;
|
private WeakReference<ConsoleView> mConsoleView;
|
||||||
private volatile boolean mShown = false;
|
private volatile boolean mShown = false;
|
||||||
|
private int mWidth;
|
||||||
|
private int mHeight;
|
||||||
|
private int mX, mY;
|
||||||
|
|
||||||
public StardustConsole(UiHandler uiHandler) {
|
public StardustConsole(UiHandler uiHandler) {
|
||||||
this(uiHandler, null);
|
this(uiHandler, null);
|
||||||
@@ -79,11 +85,19 @@ public class StardustConsole extends AbstractConsole {
|
|||||||
mUiHandler = uiHandler;
|
mUiHandler = uiHandler;
|
||||||
mConsoleFloaty = new ConsoleFloaty(this);
|
mConsoleFloaty = new ConsoleFloaty(this);
|
||||||
mGlobalConsole = globalConsole;
|
mGlobalConsole = globalConsole;
|
||||||
|
mWidth = mConsoleFloaty.getInitialWidth();
|
||||||
|
mHeight = mConsoleFloaty.getInitialHeight();
|
||||||
mFloatyWindow = new ResizableExpandableFloatyWindow(mConsoleFloaty) {
|
mFloatyWindow = new ResizableExpandableFloatyWindow(mConsoleFloaty) {
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(FloatyService service, WindowManager manager) {
|
public void onCreate(FloatyService service, WindowManager manager) {
|
||||||
super.onCreate(service, manager);
|
super.onCreate(service, manager);
|
||||||
expand();
|
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
|
@Override
|
||||||
public void show() {
|
public void show() {
|
||||||
|
if (mShown) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (!SettingsCompat.canDrawOverlays(mUiHandler.getContext())) {
|
if (!SettingsCompat.canDrawOverlays(mUiHandler.getContext())) {
|
||||||
SettingsCompat.manageDrawOverlays(mUiHandler.getContext());
|
SettingsCompat.manageDrawOverlays(mUiHandler.getContext());
|
||||||
mUiHandler.toast(R.string.text_no_floating_window_permission);
|
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);
|
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() {
|
private void startFloatyService() {
|
||||||
@@ -167,12 +193,42 @@ public class StardustConsole extends AbstractConsole {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void hide() {
|
public void hide() {
|
||||||
try {
|
mUiHandler.post(() -> {
|
||||||
mFloatyWindow.close();
|
synchronized (WINDOW_SHOW_LOCK) {
|
||||||
} catch (IllegalArgumentException ignored) {
|
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
|
@ScriptInterface
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|||||||
Reference in New Issue
Block a user