From cf116dbb31a954ed0b449ded21a37249caa404f5 Mon Sep 17 00:00:00 2001 From: "pengfei.zhou" Date: Tue, 13 Jul 2021 17:24:48 +0800 Subject: [PATCH] android:update snapshot control api --- .../devkit/src/main/AndroidManifest.xml | 2 +- .../doric/devkit/ui/DoricFloatingView.java | 63 ++++++++++++++++++ .../doric/devkit/ui/DoricSnapshotView.java | 35 ++-------- .../res/drawable-xhdpi/icon_doricdev_move.png | Bin 0 -> 5659 bytes .../layout/layout_doric_dev_view_snapshot.xml | 19 +++++- 5 files changed, 84 insertions(+), 35 deletions(-) create mode 100644 doric-android/devkit/src/main/java/pub/doric/devkit/ui/DoricFloatingView.java create mode 100644 doric-android/devkit/src/main/res/drawable-xhdpi/icon_doricdev_move.png 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 0000000000000000000000000000000000000000..70714fe6605e1044e82513261fddb251dc28b511 GIT binary patch literal 5659 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 + android:paddingLeft="0dp" + android:paddingTop="15dp" + android:paddingRight="5dp" + android:paddingBottom="15dp"> + +