From 93221e5e1aa11b6f01725819171ebfa57950d195 Mon Sep 17 00:00:00 2001 From: MUQING <1966944300@qq.com> Date: Sat, 25 Nov 2023 17:56:52 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=9E=E7=BA=BF=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E5=B0=B1=E4=BA=A4=E7=BB=99=E8=96=84=E8=8D=B7=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../executionHistory/executionHistory.lock | Bin 17 -> 17 bytes .gradle/8.0/fileHashes/fileHashes.bin | Bin 18597 -> 74915 bytes .gradle/8.0/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .../buildOutputCleanup.lock | Bin 17 -> 17 bytes app/src/main/AndroidManifest.xml | 2 +- .../java/com/muqingedit/MainActivity.java | 19 +-- .../muqingedit/activity/ActivityFragment.java | 25 ++++ .../java/com/muqingedit/activity/Edit.java | 40 +++++ app/src/main/java/com/muqingedit/fanjian.java | 141 ++++++++++++++---- app/src/main/java/com/muqingedit/gj.java | 12 ++ app/src/main/java/com/muqingedit/xian.java | 56 +++++++ app/src/main/res/layout/activity_main.xml | 5 +- app/src/main/res/layout/edit.xml | 35 +++++ app/src/main/res/layout/huabu.xml | 24 ++- app/src/main/res/menu/bottom_app_bar.xml | 24 +++ gradle.properties | 3 +- 16 files changed, 327 insertions(+), 59 deletions(-) create mode 100644 app/src/main/java/com/muqingedit/activity/ActivityFragment.java create mode 100644 app/src/main/java/com/muqingedit/activity/Edit.java create mode 100644 app/src/main/java/com/muqingedit/gj.java create mode 100644 app/src/main/java/com/muqingedit/xian.java create mode 100644 app/src/main/res/layout/edit.xml create mode 100644 app/src/main/res/menu/bottom_app_bar.xml diff --git a/.gradle/8.0/executionHistory/executionHistory.lock b/.gradle/8.0/executionHistory/executionHistory.lock index 57d2a0f46a40835d82cf88608dee01cf11a13446..52a9da75a4d72ec6835ff326f6398c23097c1868 100644 GIT binary patch literal 17 VcmZR6yJ^m`1vkAnF@OO_002gN1=9ck literal 17 TcmZR6yJ^m`1vkAnF+c$TMjHit diff --git a/.gradle/8.0/fileHashes/fileHashes.bin b/.gradle/8.0/fileHashes/fileHashes.bin index fddc8ac6bfd396e86447cd3401a7bf32421d2432..c552f65c972a3adb9db01fd9f07fde166c4243ef 100644 GIT binary patch literal 74915 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 ME)OH$WPgt^0CZjztN;K2 diff --git a/.gradle/8.0/fileHashes/fileHashes.lock b/.gradle/8.0/fileHashes/fileHashes.lock index 2d4afb056905ce2a71c5d32a175292f7c6db7abf..f069f369eaa2785b7d0fb605fe20054176d4d5a0 100644 GIT binary patch literal 17 VcmZSX2>ZE?wbpt&0~iR+0su2u1gQW3 literal 17 UcmZSX2>ZE?wbpt&0|c-D05YBg0RR91 diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index c87dfb0ef2ce50e561ed7a221b77a96c90bde85e..f73e357633af0f8b1128da85d48d6cb5fc309f49 100644 GIT binary patch literal 17 UcmZQR{+!=6w@BEC0Sx&004qKNM*si- literal 17 TcmZQR{+!=6w@BEC0Rk8SD-#1N diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8bd6b98..4a509e7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -15,6 +15,6 @@ + - \ No newline at end of file diff --git a/app/src/main/java/com/muqingedit/MainActivity.java b/app/src/main/java/com/muqingedit/MainActivity.java index c8ec074..4e84327 100644 --- a/app/src/main/java/com/muqingedit/MainActivity.java +++ b/app/src/main/java/com/muqingedit/MainActivity.java @@ -1,22 +1,19 @@ package com.muqingedit; + +import android.content.Intent; import android.os.Bundle; -import android.widget.Button; -import android.widget.FrameLayout; import androidx.appcompat.app.AppCompatActivity; +import com.muqingedit.activity.Edit; + public class MainActivity extends AppCompatActivity { - FrameLayout view; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.huabu); - view = findViewById(R.id.view); - - //绘制一个房间 - fanjian button = new fanjian(this) - .setLayoutParams(200, 200) - .setXY(100,100); - view.addView(button); + setContentView(R.layout.activity_main); + Intent intent = new Intent(this, Edit.class); + startActivity(intent); + finish(); } } diff --git a/app/src/main/java/com/muqingedit/activity/ActivityFragment.java b/app/src/main/java/com/muqingedit/activity/ActivityFragment.java new file mode 100644 index 0000000..84b9022 --- /dev/null +++ b/app/src/main/java/com/muqingedit/activity/ActivityFragment.java @@ -0,0 +1,25 @@ +package com.muqingedit.activity; +import android.view.MenuItem; +import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; + +import com.muqingedit.R; +public class ActivityFragment extends AppCompatActivity { + @Override + public boolean onOptionsItemSelected(@NonNull MenuItem item) { + if (item.getItemId() == android.R.id.home) { + finish(); + } + return super.onOptionsItemSelected(item); + } + public void setToolbar() { + setSupportActionBar(findViewById(R.id.toolbar)); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + } + + @Override + public void setContentView(int view) { + super.setContentView(view); + setToolbar(); + } +} diff --git a/app/src/main/java/com/muqingedit/activity/Edit.java b/app/src/main/java/com/muqingedit/activity/Edit.java new file mode 100644 index 0000000..952b77e --- /dev/null +++ b/app/src/main/java/com/muqingedit/activity/Edit.java @@ -0,0 +1,40 @@ +package com.muqingedit.activity; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.os.Bundle; +import android.view.View; +import android.widget.FrameLayout; + +import androidx.annotation.Nullable; + +import com.muqingedit.R; +import com.muqingedit.fanjian; +import com.muqingedit.xian; + +public class Edit extends ActivityFragment { + @SuppressLint("StaticFieldLeak") + public static FrameLayout frameLayout; + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.edit); + frameLayout = findViewById(R.id.view); + //绘制一个房间 + findViewById(R.id.button).setOnClickListener(view -> { + fanjian button = new fanjian(Edit.this) + .setLayoutParams(200, 200) + .setXY(100, 100); + frameLayout.addView(button); + }); + } + + public static void addView(View view) { + frameLayout.addView(view); + } + + public static Context getContext() { + return frameLayout.getContext(); + } + +} diff --git a/app/src/main/java/com/muqingedit/fanjian.java b/app/src/main/java/com/muqingedit/fanjian.java index d4e59d3..028cb16 100644 --- a/app/src/main/java/com/muqingedit/fanjian.java +++ b/app/src/main/java/com/muqingedit/fanjian.java @@ -4,72 +4,155 @@ import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; +import android.graphics.Paint; +import android.view.GestureDetector; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; +import android.widget.FrameLayout; + +import androidx.annotation.NonNull; + +import com.muqingedit.activity.Edit; + +public class fanjian extends FrameLayout { + + public static int id = 0; + + private int X, Y; -public class fanjian extends View { public fanjian(Context context) { super(context); + setId(id++); init(); } + + private class dian extends View { + xian xian; + public dian(Context context) { + super(context); +/* ViewGroup.LayoutParams layoutParams = fanjian.this.getLayoutParams(); + dian.this.setLayoutParams( + new ViewGroup.LayoutParams(layoutParams.width / 2, + layoutParams.width / 2));*/ + } + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + Paint paint = new Paint(); + paint.setColor(Color.WHITE); + paint.setStyle(Paint.Style.FILL); + float cx = getWidth() / 2f; // 圆心 x 坐标 + float cy = getHeight() / 2f; // 圆心 y 坐标 + float radius = 26F; // 圆的半径 + canvas.drawCircle(cx, cy, radius, paint); // 绘制圆点 + } + @Override + public boolean onTouchEvent(MotionEvent event) { + switch (event.getAction()) { + case MotionEvent.ACTION_DOWN: + //在视图上面添加一条线 + int[] location = new int[2]; + getLocationOnScreen(location); + int x = location[0] + getWidth() / 2; + int y = location[1] - getHeight() / 2; + xian = new xian(getContext()).createNewLine(x, + y); + return true; + case MotionEvent.ACTION_MOVE: + //绘制线 + xian.updateCurrentLine(event.getRawX(), event.getRawY()); + return true; + case MotionEvent.ACTION_UP: + //删除线 + xian.clearCurrentLine(); + Edit.frameLayout.removeView(xian); + xian = null; + return true; + } + + return super.onTouchEvent(event); + } + + } + + private GestureDetector gestureDetector; + private boolean Long = false; private void init() { // 设置背景颜色为红色 setBackgroundColor(Color.RED); // 设置视图的尺寸为100x100像素 setLayoutParams(new ViewGroup.LayoutParams(0, 0)); // 进行初始化操作,例如设置背景颜色、文字等 + gestureDetector = new GestureDetector(getContext(), new GestureDetector.SimpleOnGestureListener() { + @Override + public void onLongPress(@NonNull MotionEvent e) { + Long = !Long; + // 处理长按事件 + } + @Override + public boolean onScroll(@NonNull MotionEvent e1, @NonNull MotionEvent e2, float distanceX, float distanceY) { + if (Long) { + } else { + Y = (int) (e2.getY() - e1.getY()); + X = (int) (e2.getX() - e1.getX()); + animate().xBy(X).yBy(Y).setDuration(0).start(); + } + return true; + } + }); } + @Override + public boolean onTouchEvent(MotionEvent event) { + gestureDetector.onTouchEvent(event); + return true; + } + + @SuppressLint("DrawAllocation") @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 在此处进行自定义的绘制操作,例如绘制图形、文本等 } - public fanjian setLayoutParams(int a,int b) { + public fanjian setLayoutParams(int a, int b) { setLayoutParams(new ViewGroup.LayoutParams(a, b)); return this; } - - - private int X; - private int Y; - - @SuppressLint("ClickableViewAccessibility") - @Override - public boolean onTouchEvent(MotionEvent event) { - switch (event.getActionMasked()) { - case MotionEvent.ACTION_DOWN: - // 在按下事件中,记录按下时的位置 - X = (int) event.getX(); - Y = (int) event.getY(); - break; - - case MotionEvent.ACTION_MOVE: - // 在移动事件中,计算偏移量 - int dx = (int) event.getX() - X; - int dy = (int) event.getY() - Y; - // 平滑移动视图 - animate().xBy(dx).yBy(dy).setDuration(0).start(); - break; - } - return true; - } +/* @Override public float getX() { - return X; + return this.X; } @Override public float getY() { - return Y; + return this.Y; + } +*/ + + public String getXY() { + return X + ":" + Y; } public fanjian setXY(int a, int b) { setX(a); setY(b); + addView(new dian(getContext())); return this; } + + @Override + public void setX(float x) { + super.setX(x); + X = (int) x; + } + @Override + public void setY(float y) { + super.setY(y); + Y = (int) y; + } + } diff --git a/app/src/main/java/com/muqingedit/gj.java b/app/src/main/java/com/muqingedit/gj.java new file mode 100644 index 0000000..0d9fcd1 --- /dev/null +++ b/app/src/main/java/com/muqingedit/gj.java @@ -0,0 +1,12 @@ +package com.muqingedit; + +import android.util.Log; + +public class gj { + public static void sc(Object obj) { + if (obj == null) { + obj = "nnull"; + } + Log.d("编辑器" , obj.toString()); + } +} diff --git a/app/src/main/java/com/muqingedit/xian.java b/app/src/main/java/com/muqingedit/xian.java new file mode 100644 index 0000000..198aff2 --- /dev/null +++ b/app/src/main/java/com/muqingedit/xian.java @@ -0,0 +1,56 @@ +package com.muqingedit; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.view.MotionEvent; +import android.view.View; + +import com.muqingedit.activity.Edit; + +@SuppressLint("ViewConstructor") +public class xian extends View { + private Paint pointPaint; + private Paint linePaint; + private float currentX, currentY; + private float startX, startY; + + public xian(Context context) { + super(context); + init(); + } + + private void init() { + pointPaint = new Paint(); + pointPaint.setColor(Color.RED); + pointPaint.setStyle(Paint.Style.FILL); + + linePaint = new Paint(); + linePaint.setColor(Color.BLACK); + linePaint.setStrokeWidth(5f); + } + + public xian createNewLine(float x, float y) { + startX = x;startY = y;currentX = x;currentY = y; + Edit.addView(this); + invalidate();//创建一个新的线 + return this; + } + public void updateCurrentLine(float x, float y) { + currentX = x;currentY = y; + invalidate();//绘制中 + } + public void clearCurrentLine() { + currentX = startX;currentY = startY; + invalidate();//关闭绘制 + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + canvas.drawCircle(startX, startY, 10f, pointPaint);//绘制初始的点 + canvas.drawLine(startX, startY, currentX, currentY, linePaint);//绘制线 + } +} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index b66c997..c454205 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,7 +1,8 @@ - - + + diff --git a/app/src/main/res/layout/edit.xml b/app/src/main/res/layout/edit.xml new file mode 100644 index 0000000..d7ca324 --- /dev/null +++ b/app/src/main/res/layout/edit.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/huabu.xml b/app/src/main/res/layout/huabu.xml index e2f1579..3499493 100644 --- a/app/src/main/res/layout/huabu.xml +++ b/app/src/main/res/layout/huabu.xml @@ -1,21 +1,15 @@ - - + + + android:layout_height="wrap_content" /> + - - - - \ No newline at end of file + android:layout_height="match_parent" /> + \ No newline at end of file diff --git a/app/src/main/res/menu/bottom_app_bar.xml b/app/src/main/res/menu/bottom_app_bar.xml new file mode 100644 index 0000000..1231e9e --- /dev/null +++ b/app/src/main/res/menu/bottom_app_bar.xml @@ -0,0 +1,24 @@ + + + + + + + + \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 3e927b1..11c94a8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -18,4 +18,5 @@ android.useAndroidX=true # Enables namespacing of each library's R class so that its R class includes only the # resources declared in the library itself and none from the library's dependencies, # thereby reducing the size of the R class for that library -android.nonTransitiveRClass=true \ No newline at end of file +android.nonTransitiveRClass=true +android.enableJetifier=true