diff --git a/doric-android/devkit/src/main/AndroidManifest.xml b/doric-android/devkit/src/main/AndroidManifest.xml
index edb0d86d..ccc60c70 100644
--- a/doric-android/devkit/src/main/AndroidManifest.xml
+++ b/doric-android/devkit/src/main/AndroidManifest.xml
@@ -7,7 +7,7 @@
-
+
diff --git a/doric-android/devkit/src/main/java/pub/doric/devkit/ui/DoricFloatingView.java b/doric-android/devkit/src/main/java/pub/doric/devkit/ui/DoricFloatingView.java
new file mode 100644
index 00000000..a76d332f
--- /dev/null
+++ b/doric-android/devkit/src/main/java/pub/doric/devkit/ui/DoricFloatingView.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright [2019] [Doric.Pub]
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package pub.doric.devkit.ui;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.view.MotionEvent;
+import android.widget.FrameLayout;
+
+import androidx.annotation.NonNull;
+
+/**
+ * @Description: pub.doric.devkit.ui
+ * @Author: pengfei.zhou
+ * @CreateDate: 2021/7/13
+ */
+public class DoricFloatingView extends FrameLayout {
+ private int lastX;
+
+ private int lastY;
+
+ public DoricFloatingView(@NonNull Context context) {
+ super(context);
+ }
+
+ @SuppressLint("ClickableViewAccessibility")
+ @Override
+ public boolean onTouchEvent(MotionEvent event) {
+ int x = (int) event.getX();
+ int y = (int) event.getY();
+
+ switch (event.getAction()) {
+ case MotionEvent.ACTION_DOWN:
+ lastX = x;
+ lastY = y;
+ break;
+ case MotionEvent.ACTION_MOVE:
+ int offsetX = x - lastX;
+ int offsetY = y - lastY;
+ FrameLayout.LayoutParams layoutParams = (LayoutParams) getLayoutParams();
+ layoutParams.leftMargin += offsetX;
+ layoutParams.topMargin += offsetY;
+ requestLayout();
+ break;
+ default:
+ break;
+ }
+ return true;
+ }
+}
diff --git a/doric-android/devkit/src/main/java/pub/doric/devkit/ui/DoricSnapshotView.java b/doric-android/devkit/src/main/java/pub/doric/devkit/ui/DoricSnapshotView.java
index 5b23cad5..ba6be88b 100644
--- a/doric-android/devkit/src/main/java/pub/doric/devkit/ui/DoricSnapshotView.java
+++ b/doric-android/devkit/src/main/java/pub/doric/devkit/ui/DoricSnapshotView.java
@@ -21,10 +21,8 @@ import android.content.Context;
import android.os.Build;
import android.text.TextUtils;
import android.view.LayoutInflater;
-import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
@@ -50,10 +48,7 @@ import pub.doric.utils.ThreadMode;
* @CreateDate: 2021/7/9
*/
@SuppressLint("ViewConstructor")
-public class DoricSnapshotView extends FrameLayout {
- private int lastX;
-
- private int lastY;
+public class DoricSnapshotView extends DoricFloatingView {
private final DoricContext doricContext;
private int snapNo = -1;
private int snapSize = 0;
@@ -65,7 +60,7 @@ public class DoricSnapshotView extends FrameLayout {
super(context);
this.doricContext = doricContext;
initView(context);
- this.setAlpha(0.5f);
+ this.setAlpha(0.8f);
}
private void initView(Context context) {
@@ -131,31 +126,9 @@ public class DoricSnapshotView extends FrameLayout {
}
- @SuppressLint("ClickableViewAccessibility")
- @Override
- public boolean onTouchEvent(MotionEvent event) {
- int x = (int) event.getX();
- int y = (int) event.getY();
-
- switch (event.getAction()) {
- case MotionEvent.ACTION_DOWN:
- lastX = x;
- lastY = y;
- break;
- case MotionEvent.ACTION_MOVE:
- int offsetX = x - lastX;
- int offsetY = y - lastY;
- layout(getLeft() + offsetX, getTop() + offsetY, getRight() + offsetX, getBottom() + offsetY);
- break;
- default:
- break;
- }
- return true;
- }
-
private void rollupSnapshot(int index) {
- spanPre.setVisibility(index <= 0 ? View.INVISIBLE : View.VISIBLE);
- spanNext.setVisibility(index >= snapSize ? View.INVISIBLE : View.VISIBLE);
+ spanPre.setImageAlpha(index <= 0 ? 0x7f : 0xff);
+ spanNext.setImageAlpha(index >= snapSize ? 0x7f : 0xff);
snapIndex.setText(String.valueOf(index));
doricContext.callEntity("__restoreRenderSnapshot__", index).setCallback(new AsyncResult.Callback() {
@Override
diff --git a/doric-android/devkit/src/main/res/drawable-xhdpi/icon_doricdev_move.png b/doric-android/devkit/src/main/res/drawable-xhdpi/icon_doricdev_move.png
new file mode 100644
index 00000000..70714fe6
Binary files /dev/null and b/doric-android/devkit/src/main/res/drawable-xhdpi/icon_doricdev_move.png differ
diff --git a/doric-android/devkit/src/main/res/layout/layout_doric_dev_view_snapshot.xml b/doric-android/devkit/src/main/res/layout/layout_doric_dev_view_snapshot.xml
index 6f044769..e9dad9bc 100644
--- a/doric-android/devkit/src/main/res/layout/layout_doric_dev_view_snapshot.xml
+++ b/doric-android/devkit/src/main/res/layout/layout_doric_dev_view_snapshot.xml
@@ -5,18 +5,29 @@
+ android:paddingLeft="0dp"
+ android:paddingTop="15dp"
+ android:paddingRight="5dp"
+ android:paddingBottom="15dp">
+
+