修复 悬浮窗布局分析"复制成功"的信息被遮挡的问题

This commit is contained in:
hyb1996
2018-11-29 19:17:51 +08:00
parent 67f995915b
commit c3c73ab94a
12 changed files with 221 additions and 250 deletions

View File

@@ -18,7 +18,7 @@ module.exports = function(__runtime__, scope){
}
engines.myEngine = function(){
var engine = Object.create(rtEngines.myEngine());
var engine = rtEngines.myEngine();
if(!execArgv){
execArgv = {};
var iter = engine.getTag("execution.config").getArguments().entrySet().iterator();
@@ -26,8 +26,8 @@ module.exports = function(__runtime__, scope){
var entry = iter.next();
execArgv[entry.getKey()] = entry.getValue();
}
engine.execArgv = execArgv;
}
engine.execArgv = execArgv;
return engine;
}

View File

@@ -11,8 +11,8 @@ import android.support.annotation.RequiresApi;
import com.stardust.app.OnActivityResultDelegate;
import com.stardust.app.SimpleActivityLifecycleCallbacks;
import com.stardust.autojs.core.accessibility.AccessibilityBridge;
import com.stardust.autojs.core.console.GlobalStardustConsole;
import com.stardust.autojs.core.console.StardustConsole;
import com.stardust.autojs.core.console.GlobalConsole;
import com.stardust.autojs.core.console.ConsoleImpl;
import com.stardust.autojs.core.image.capture.ScreenCaptureRequestActivity;
import com.stardust.autojs.core.image.capture.ScreenCaptureRequester;
import com.stardust.autojs.core.record.accessibility.AccessibilityActionRecorder;
@@ -35,11 +35,7 @@ import com.stardust.view.accessibility.AccessibilityService;
import com.stardust.view.accessibility.LayoutInspector;
import org.mozilla.javascript.ContextFactory;
import org.mozilla.javascript.RhinoException;
import org.mozilla.javascript.Scriptable;
import org.mozilla.javascript.WrappedException;
import org.opencv.android.BaseLoaderCallback;
import org.opencv.android.OpenCVLoader;
import java.io.File;
@@ -60,7 +56,7 @@ public abstract class AutoJs {
private final AccessibilityInfoProvider mAccessibilityInfoProvider;
private final ScreenCaptureRequester mScreenCaptureRequester = new ScreenCaptureRequesterImpl();
private final ScriptEngineService mScriptEngineService;
private final GlobalStardustConsole mGlobalConsole;
private final GlobalConsole mGlobalConsole;
protected AutoJs(final Application application) {
@@ -81,8 +77,8 @@ public abstract class AutoJs {
return new AppUtils(mContext);
}
protected GlobalStardustConsole createGlobalConsole() {
return new GlobalStardustConsole(mUiHandler);
protected GlobalConsole createGlobalConsole() {
return new GlobalConsole(mUiHandler);
}
protected void init() {
@@ -134,7 +130,7 @@ public abstract class AutoJs {
protected ScriptRuntime createRuntime() {
return new ScriptRuntime.Builder()
.setConsole(new StardustConsole(mUiHandler, mGlobalConsole))
.setConsole(new ConsoleImpl(mUiHandler, mGlobalConsole))
.setScreenCaptureRequester(mScreenCaptureRequester)
.setAccessibilityBridge(new AccessibilityBridgeImpl(mUiHandler))
.setUiHandler(mUiHandler)
@@ -187,7 +183,7 @@ public abstract class AutoJs {
return mLayoutInspector;
}
public GlobalStardustConsole getGlobalConsole() {
public GlobalConsole getGlobalConsole() {
return mGlobalConsole;
}

View File

@@ -4,7 +4,6 @@ import android.content.Context;
import android.content.ContextWrapper;
import android.support.annotation.Nullable;
import android.view.ContextThemeWrapper;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.widget.TextView;
@@ -25,11 +24,11 @@ public class ConsoleFloaty extends ResizableExpandableFloaty.AbstractResizableEx
private ContextWrapper mContextWrapper;
private View mResizer, mMoveCursor;
private TextView mTitleView;
private StardustConsole mConsole;
private ConsoleImpl mConsole;
private CharSequence mTitle;
private View mExpandedView;
public ConsoleFloaty(StardustConsole console) {
public ConsoleFloaty(ConsoleImpl console) {
mConsole = console;
setShouldRequestFocusWhenExpand(false);
setInitialX(100);

View File

@@ -4,7 +4,6 @@ import android.content.Context;
import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.Log;
import android.view.WindowManager;
import com.stardust.autojs.R;
@@ -14,42 +13,37 @@ import com.stardust.autojs.runtime.api.AbstractConsole;
import com.stardust.autojs.runtime.api.Console;
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
import com.stardust.autojs.util.FloatingPermission;
import com.stardust.concurrent.ConcurrentArrayList;
import com.stardust.enhancedfloaty.FloatyService;
import com.stardust.enhancedfloaty.ResizableExpandableFloatyWindow;
import com.stardust.util.UiHandler;
import com.stardust.util.ViewUtil;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.atomic.AtomicInteger;
import ezy.assist.compat.SettingsCompat;
/**
* Created by Stardust on 2017/5/2.
*/
public class StardustConsole extends AbstractConsole {
public class ConsoleImpl extends AbstractConsole {
public static class Log implements Comparable<Log> {
public static class LogEntry implements Comparable<LogEntry> {
public int id;
public int level;
public CharSequence content;
public boolean newLine = false;
public Log(int id, int level, CharSequence content) {
public LogEntry(int id, int level, CharSequence content) {
this.id = id;
this.level = level;
this.content = content;
}
public Log(int id, int level, CharSequence content, boolean newLine) {
public LogEntry(int id, int level, CharSequence content, boolean newLine) {
this.id = id;
this.level = level;
this.content = content;
@@ -57,20 +51,20 @@ public class StardustConsole extends AbstractConsole {
}
@Override
public int compareTo(@NonNull Log o) {
public int compareTo(@NonNull LogEntry o) {
return 0;
}
}
public interface LogListener {
void onNewLog(Log log);
void onNewLog(LogEntry logEntry);
void onLogClear();
}
private final Object WINDOW_SHOW_LOCK = new Object();
private final Console mGlobalConsole;
private final ArrayList<Log> mLogs = new ArrayList<>();
private final ArrayList<LogEntry> mLogEntries = new ArrayList<>();
private AtomicInteger mIdCounter = new AtomicInteger(0);
private ResizableExpandableFloatyWindow mFloatyWindow;
private ConsoleFloaty mConsoleFloaty;
@@ -81,11 +75,11 @@ public class StardustConsole extends AbstractConsole {
private volatile boolean mShown = false;
private int mX, mY;
public StardustConsole(UiHandler uiHandler) {
public ConsoleImpl(UiHandler uiHandler) {
this(uiHandler, null);
}
public StardustConsole(UiHandler uiHandler, Console globalConsole) {
public ConsoleImpl(UiHandler uiHandler, Console globalConsole) {
mUiHandler = uiHandler;
mConsoleFloaty = new ConsoleFloaty(this);
mGlobalConsole = globalConsole;
@@ -116,8 +110,8 @@ public class StardustConsole extends AbstractConsole {
mLogListener = new WeakReference<>(logListener);
}
public ArrayList<Log> getAllLogs() {
return mLogs;
public ArrayList<LogEntry> getAllLogs() {
return mLogEntries;
}
public void printAllStackTrace(Throwable t) {
@@ -130,15 +124,15 @@ public class StardustConsole extends AbstractConsole {
@Override
public String println(int level, CharSequence charSequence) {
Log log = new Log(mIdCounter.getAndIncrement(), level, charSequence, true);
synchronized (mLogs) {
mLogs.add(log);
LogEntry logEntry = new LogEntry(mIdCounter.getAndIncrement(), level, charSequence, true);
synchronized (mLogEntries) {
mLogEntries.add(logEntry);
}
if (mGlobalConsole != null) {
mGlobalConsole.println(level, charSequence);
}
if (mLogListener != null && mLogListener.get() != null) {
mLogListener.get().onNewLog(log);
mLogListener.get().onNewLog(logEntry);
}
return null;
}
@@ -152,8 +146,8 @@ public class StardustConsole extends AbstractConsole {
@Override
public void clear() {
synchronized (mLogs) {
mLogs.clear();
synchronized (mLogEntries) {
mLogEntries.clear();
}
if (mLogListener != null && mLogListener.get() != null) {
mLogListener.get().onLogClear();

View File

@@ -30,7 +30,7 @@ import java.util.Map;
* <p>
* TODO: 优化为无锁形式
*/
public class ConsoleView extends FrameLayout implements StardustConsole.LogListener {
public class ConsoleView extends FrameLayout implements ConsoleImpl.LogListener {
private static final Map<Integer, Integer> ATTRS = new MapBuilder<Integer, Integer>()
.put(R.styleable.ConsoleView_color_verbose, Log.VERBOSE)
@@ -52,13 +52,13 @@ public class ConsoleView extends FrameLayout implements StardustConsole.LogListe
private static final int REFRESH_INTERVAL = 100;
private SparseArray<Integer> mColors = COLORS.clone();
private StardustConsole mConsole;
private ConsoleImpl mConsole;
private RecyclerView mLogListRecyclerView;
private EditText mEditText;
private ResizableExpandableFloatyWindow mWindow;
private LinearLayout mInputContainer;
private boolean mShouldStopRefresh = false;
private ArrayList<StardustConsole.Log> mLogs = new ArrayList<>();
private ArrayList<ConsoleImpl.LogEntry> mLogEntries = new ArrayList<>();
public ConsoleView(Context context) {
super(context);
@@ -128,13 +128,13 @@ public class ConsoleView extends FrameLayout implements StardustConsole.LogListe
mInputContainer.setOnClickListener(listener);
}
public void setConsole(StardustConsole console) {
public void setConsole(ConsoleImpl console) {
mConsole = console;
mConsole.setConsoleView(this);
}
@Override
public void onNewLog(StardustConsole.Log log) {
public void onNewLog(ConsoleImpl.LogEntry logEntry) {
}
@@ -163,7 +163,7 @@ public class ConsoleView extends FrameLayout implements StardustConsole.LogListe
@Override
public void onLogClear() {
post(() -> {
mLogs.clear();
mLogEntries.clear();
mLogListRecyclerView.getAdapter().notifyDataSetChanged();
});
}
@@ -171,10 +171,10 @@ public class ConsoleView extends FrameLayout implements StardustConsole.LogListe
private void refreshLog() {
if (mConsole == null)
return;
int oldSize = mLogs.size();
ArrayList<StardustConsole.Log> logs = mConsole.getAllLogs();
int oldSize = mLogEntries.size();
ArrayList<ConsoleImpl.LogEntry> logEntries = mConsole.getAllLogs();
synchronized (mConsole.getAllLogs()) {
final int size = logs.size();
final int size = logEntries.size();
if (size == 0) {
return;
}
@@ -182,10 +182,10 @@ public class ConsoleView extends FrameLayout implements StardustConsole.LogListe
return;
}
if (oldSize == 0) {
mLogs.addAll(logs);
mLogEntries.addAll(logEntries);
} else {
for (int i = oldSize; i < size; i++) {
mLogs.add(logs.get(i));
mLogEntries.add(logEntries.get(i));
}
}
mLogListRecyclerView.getAdapter().notifyItemRangeInserted(oldSize, size - 1);
@@ -224,14 +224,14 @@ public class ConsoleView extends FrameLayout implements StardustConsole.LogListe
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
StardustConsole.Log log = mLogs.get(position);
holder.textView.setText(log.content);
holder.textView.setTextColor(mColors.get(log.level));
ConsoleImpl.LogEntry logEntry = mLogEntries.get(position);
holder.textView.setText(logEntry.content);
holder.textView.setTextColor(mColors.get(logEntry.level));
}
@Override
public int getItemCount() {
return mLogs.size();
return mLogEntries.size();
}
}
}

View File

@@ -15,11 +15,12 @@ import java.util.Locale;
* Created by Stardust on 2017/10/22.
*/
public class GlobalStardustConsole extends StardustConsole {
public class GlobalConsole extends ConsoleImpl {
private static final String LOG_tAG = "GlobalConsole";
private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("HH:mm:ss.SSS", Locale.getDefault());
private static final Logger LOGGER = Logger.getLogger(GlobalStardustConsole.class);
private static final Logger LOGGER = Logger.getLogger(GlobalConsole.class);
public GlobalStardustConsole(UiHandler uiHandler) {
public GlobalConsole(UiHandler uiHandler) {
super(uiHandler);
}
@@ -28,6 +29,7 @@ public class GlobalStardustConsole extends StardustConsole {
String log = String.format(Locale.getDefault(), "%s/%s: %s",
DATE_FORMAT.format(new Date()), getLevelChar(level), charSequence.toString());
LOGGER.log(toLog4jLevel(level), log);
android.util.Log.d(LOG_tAG, log);
super.println(level, log);
return log;
}