From 0e6616c1dc9be973b33a351fad07ad5f182b3bf5 Mon Sep 17 00:00:00 2001 From: hyb1996 <946994919@qq.com> Date: Sat, 9 Dec 2017 12:36:43 +0800 Subject: [PATCH] opt: layout inspector view --- .../LayoutHierarchyFloatyWindow.java | 27 ++++++++++++------- .../layoutinspector/NodeInfoView.java | 1 + .../ui/widget/BubblePopupMenu.java | 11 +++----- .../autojs/runtime/ScriptRuntime.java | 2 +- .../stardust/view/accessibility/NodeInfo.java | 3 +++ 5 files changed, 25 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/floating/layoutinspector/LayoutHierarchyFloatyWindow.java b/app/src/main/java/com/stardust/scriptdroid/ui/floating/layoutinspector/LayoutHierarchyFloatyWindow.java index aaf89857..ba91de85 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/floating/layoutinspector/LayoutHierarchyFloatyWindow.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/floating/layoutinspector/LayoutHierarchyFloatyWindow.java @@ -9,8 +9,10 @@ import android.view.WindowManager; import com.afollestad.materialdialogs.MaterialDialog; import com.afollestad.materialdialogs.Theme; +import com.stardust.app.DialogUtils; import com.stardust.enhancedfloaty.FloatyService; import com.stardust.scriptdroid.R; +import com.stardust.scriptdroid.ui.codegeneration.CodeGenerateDialog; import com.stardust.scriptdroid.ui.floating.FullScreenFloatyWindow; import com.stardust.view.accessibility.NodeInfo; import com.stardust.scriptdroid.ui.widget.BubblePopupMenu; @@ -82,22 +84,27 @@ public class LayoutHierarchyFloatyWindow extends FullScreenFloatyWindow { return; mBubblePopMenu = new BubblePopupMenu(mContext, Arrays.asList( mContext.getString(R.string.text_show_widget_infomation), - mContext.getString(R.string.text_show_layout_bounds))); - mBubblePopMenu.setOnItemClickListener(new BubblePopupMenu.OnItemClickListener() { - @Override - public void onClick(View view, int position) { - mBubblePopMenu.dismiss(); - if (position == 0) { - showNodeInfo(); - } else { - showLayoutBounds(); - } + mContext.getString(R.string.text_show_layout_bounds), + mContext.getString(R.string.text_generate_code))); + mBubblePopMenu.setOnItemClickListener((view, position) -> { + mBubblePopMenu.dismiss(); + if (position == 0) { + showNodeInfo(); + } else if (position == 1) { + showLayoutBounds(); + } else { + generateCode(); } }); mBubblePopMenu.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT); mBubblePopMenu.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT); } + private void generateCode() { + DialogUtils.showDialog(new CodeGenerateDialog(mContext, mRootNode, mSelectedNode) + .build()); + } + private void showLayoutBounds() { close(); LayoutBoundsFloatyWindow window = new LayoutBoundsFloatyWindow(mRootNode); diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/floating/layoutinspector/NodeInfoView.java b/app/src/main/java/com/stardust/scriptdroid/ui/floating/layoutinspector/NodeInfoView.java index c9f15283..a6ab8520 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/floating/layoutinspector/NodeInfoView.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/floating/layoutinspector/NodeInfoView.java @@ -47,6 +47,7 @@ public class NodeInfoView extends RecyclerView { "editable", "enabled", "focusable", + "indexInParent", "longClickable", "row", "rowCount", diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/widget/BubblePopupMenu.java b/app/src/main/java/com/stardust/scriptdroid/ui/widget/BubblePopupMenu.java index 47fad986..35ae6dc5 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/widget/BubblePopupMenu.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/widget/BubblePopupMenu.java @@ -34,12 +34,7 @@ public class BubblePopupMenu extends PopupWindow { View view = View.inflate(context, R.layout.bubble_popup_menu, null); mLittleTriangle = view.findViewById(R.id.little_triangle); mRecyclerView = (RecyclerView) view.findViewById(R.id.list); - mRecyclerView.setAdapter(new SimpleRecyclerViewAdapter<>(R.layout.bubble_popup_menu_item, options, new SimpleRecyclerViewAdapter.ViewHolderFactory() { - @Override - public MenuItemViewHolder create(View itemView) { - return new MenuItemViewHolder(itemView); - } - })); + mRecyclerView.setAdapter(new SimpleRecyclerViewAdapter<>(R.layout.bubble_popup_menu_item, options, MenuItemViewHolder::new)); setContentView(view); setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); setOutsideTouchable(true); @@ -53,8 +48,8 @@ public class BubblePopupMenu extends PopupWindow { public void showAsDropDownAtLocation(View parent, int contentHeight, int x, int y) { int screenWidth = getContentView().getResources().getDisplayMetrics().widthPixels; int screenHeight = getContentView().getResources().getDisplayMetrics().heightPixels; - int width = getContentView().getWidth(); - int height = getContentView().getHeight(); + int width = getContentView().getMeasuredWidth(); + int height = getContentView().getMeasuredHeight(); LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) mLittleTriangle.getLayoutParams(); if (x + width > screenWidth) { params.leftMargin = x + width - screenWidth; diff --git a/autojs/src/main/java/com/stardust/autojs/runtime/ScriptRuntime.java b/autojs/src/main/java/com/stardust/autojs/runtime/ScriptRuntime.java index 06a3a3b5..a4a5e4bf 100644 --- a/autojs/src/main/java/com/stardust/autojs/runtime/ScriptRuntime.java +++ b/autojs/src/main/java/com/stardust/autojs/runtime/ScriptRuntime.java @@ -196,7 +196,7 @@ public class ScriptRuntime { throw new IllegalStateException("already initialized"); timers = new Timers(bridges); loopers = new Loopers(this); - events = new Events(uiHandler.getContext(), accessibilityBridge, bridges, loopers); + events = new Events(uiHandler.getContext(), accessibilityBridge, this); } public static void setApplicationContext(Context context) { diff --git a/automator/src/main/java/com/stardust/view/accessibility/NodeInfo.java b/automator/src/main/java/com/stardust/view/accessibility/NodeInfo.java index 95a09967..aaf8c1b9 100644 --- a/automator/src/main/java/com/stardust/view/accessibility/NodeInfo.java +++ b/automator/src/main/java/com/stardust/view/accessibility/NodeInfo.java @@ -50,9 +50,11 @@ public class NodeInfo { public boolean checkable; public boolean focused; public boolean visibleToUser; + public int indexInParent; public NodeInfo parent; + public NodeInfo(UiObject node, NodeInfo parent) { id = simplifyId(node.getViewIdResourceName()); desc = node.desc(); @@ -87,6 +89,7 @@ public class NodeInfo { node.getBoundsInScreen(mBoundsInScreen); node.getBoundsInParent(mBoundsInParent); bounds = boundsToString(mBoundsInScreen); + indexInParent = node.indexInParent(); this.parent = parent;