From 82e57df230ecb744af6c8865f80870ba03c86d89 Mon Sep 17 00:00:00 2001 From: Linjiajia <319408893@qq.com> Date: 星期二, 25 七月 2023 22:18:27 +0800 Subject: [PATCH] 基本功能完成 --- app/src/main/java/com/application/zhangshi_app_android/widget/TreeView.java | 59 ++++++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 48 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/application/zhangshi_app_android/widget/TreeView.java b/app/src/main/java/com/application/zhangshi_app_android/widget/TreeView.java index 07caf2b..1261c72 100644 --- a/app/src/main/java/com/application/zhangshi_app_android/widget/TreeView.java +++ b/app/src/main/java/com/application/zhangshi_app_android/widget/TreeView.java @@ -4,6 +4,7 @@ import android.content.Context; import android.graphics.Canvas; import android.util.AttributeSet; +import android.util.Log; import android.view.GestureDetector; import android.view.LayoutInflater; import android.view.MotionEvent; @@ -11,8 +12,10 @@ import android.view.View; import android.widget.OverScroller; import android.widget.RelativeLayout; +import android.widget.Toast; import androidx.annotation.Nullable; +import androidx.constraintlayout.utils.widget.ImageFilterView; import com.application.zhangshi_app_android.R; @@ -48,7 +51,9 @@ // 鏀惧ぇ鍚庢墜鎸囩Щ鍔ㄤ綅缃� private final OffSet moveOffset = new OffSet(); private boolean isDoubleClickZoomIn = false; - + + + private ImageFilterView imageFilterView; public TreeView(Context context) { this(context, null); } @@ -70,6 +75,18 @@ layoutParams.alignWithParent = true; layoutParams.addRule(CENTER_IN_PARENT); addView(treeView,layoutParams); + + imageFilterView = treeView.findViewById(R.id.imageFilterView); + imageFilterView.setOnTouchListener(new OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + Log.d("TAG", "onTouch: getX"+event.getX()); + Log.d("TAG", "onTouch: getY"+event.getY()); + Toast.makeText(mContext,"琚Е鎽�",Toast.LENGTH_SHORT).show(); + return false; + } + }); + mGestureDetector = new GestureDetector(context, new MyGestureListener()); mScaleGestureDetector = new ScaleGestureDetector(context, new MyScaleGestureListener()); mOverScroller = new OverScroller(context); @@ -102,24 +119,40 @@ bigScale = (float) getHeight() / (float) treeView.getMeasuredHeight() * ZOOM_SCALE; // 褰撳墠缂╂斁姣斾緥 = 缂╂斁鍓嶇殑姣斾緥 - currentScale = smallScale; + currentScale = 1; + + Log.d("TAG", "onSizeChanged: getX"+imageFilterView.getX()); + Log.d("TAG", "onSizeChanged: getY"+imageFilterView.getY()); } +// @Override +// public boolean dispatchTouchEvent(MotionEvent ev) { +// // 瀵硅Е鎽镐簨浠惰繘琛岀缉鏀惧拰骞崇Щ鍙樻崲 +// MotionEvent event = MotionEvent.obtain(ev); +// event.setLocation((event.getX() - moveOffset.getPhyX()) / currentScale, (event.getY() - moveOffset.getPhyY()) / currentScale); +// +// // 灏嗚Е鎽镐簨浠朵紶閫掔粰瀛愯鍥� +// boolean handled = super.dispatchTouchEvent(event); +// +// // 鍥炴敹瑙︽懜浜嬩欢 +// event.recycle(); +// +// return handled; +// } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.scale(currentScale, currentScale, getWidth() / 2f, getHeight() / 2f); - // 绉诲姩鐢诲竷 - if (isDoubleClickZoomIn){ - if (currentScale <= bigScale) {//鍙屽嚮鏀瑰彉鐘舵�佹椂鍋忕Щ閲忛殢鐫�缂╂斁姣斾緥鍙樺寲 - float a = (currentScale - smallScale) / (bigScale - smallScale); - moveOffset.setPhyX(moveOffset.getPhyX() * a); - moveOffset.setPhyY(moveOffset.getPhyY() * a); - } - } +// // 绉诲姩鐢诲竷 +// if (isDoubleClickZoomIn){ +// if (currentScale <= bigScale) {//鍙屽嚮鏀瑰彉鐘舵�佹椂鍋忕Щ閲忛殢鐫�缂╂斁姣斾緥鍙樺寲 +// float a = (currentScale - smallScale) / (bigScale - smallScale); +// moveOffset.setPhyX(moveOffset.getPhyX() * a); +// moveOffset.setPhyY(moveOffset.getPhyY() * a); +// } +// } canvas.translate(moveOffset.getLogX(currentScale), moveOffset.getLogY(currentScale)); } - @Override public boolean onTouchEvent(MotionEvent event) { // 鍙屾寚鎿嶄綔 @@ -137,6 +170,9 @@ // 鍙屽嚮鎯呭喌 : 绗簩娆℃姮璧穂ACTION_POINTER_UP]鏃跺�欒Е鍙� @Override public boolean onSingleTapUp(MotionEvent e) { + Log.d("onDown", "onUp: "); + Log.d("onDown", "onUp: e.getX() = " + e.getX()); + Log.d("onDown", "onUp: e.getY() = " + e.getY()); return super.onSingleTapUp(e); } @@ -193,6 +229,7 @@ return true; } + // 鍙屽嚮 -- 绗簩娆℃寜涓嬫椂鍊欒Е鍙� (40ms - 300ms) [灏忎簬40ms鏄负浜嗛槻姝㈡姈鍔╙ @Override public boolean onDoubleTap(MotionEvent e) { -- Gitblit v1.9.1