mirror of
https://github.com/TonyJiangWJ/Auto.js.git
synced 2026-06-21 21:01:43 +08:00
add: console.setPosition, console.setSize
This commit is contained in:
parent
e33ce733d5
commit
c871b474f5
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.hide = rtConsole.hide.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);
|
||||
|
||||
scope.print = console.print.bind(console);
|
||||
|
||||
@ -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
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user