Создание растягиваемого и масштабируемого изображения в Android

Цель:

Создать изображение, которое можно рисовать и масштабировать,

Это означает, что когда я нажимаю кнопку, она становится

или когда я выключаю, это масштабируется.

* Обратите внимание, что чертежи должны быть увеличены в соответствии с видом

================================================== =============

Недавно я написал пользовательский вид для рисования, например:

 public class DrawView extends ImageView {

        private int color = Color.BLACK;
        private float width = 4f;
        private List<Holder> holderList = new ArrayList<Holder>();

        private class Holder {      
            Path path;
            Paint paint;

            Holder(int color, float width) {
                path = new Path();
                paint = new Paint();
                paint.setAntiAlias(true);
                paint.setStrokeWidth(width);
                paint.setColor(color);
                paint.setStyle(Paint.Style.STROKE);
                paint.setStrokeJoin(Paint.Join.ROUND);
                paint.setStrokeCap(Paint.Cap.ROUND);
            }
        }

        public DrawView(Context context) {
            super(context);
            init();
        }

        public DrawView(Context context, AttributeSet attrs) {
            super(context, attrs);
            init();
        }

        public DrawView(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
            init();
        }

        private void init() {
            holderList.add(new Holder(color, width));
        }

        @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
            for (Holder holder : holderList) {
                canvas.drawPath(holder.path, holder.paint);
            }
        }

        @Override
        public boolean onTouchEvent(MotionEvent event) {
            float eventX = event.getX();
            float eventY = event.getY();

            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    holderList.add(new Holder(color,width));
                    holderList.get(holderList.size() - 1).path.moveTo(eventX, eventY);
                    return true;
                case MotionEvent.ACTION_MOVE:
                    holderList.get(holderList.size() - 1).path.lineTo(eventX, eventY);
                    break;
                case MotionEvent.ACTION_UP:
                    break;
                default:
                    return false;
            }

            invalidate();
            return true;
        }

        public void resetPaths() {
            for (Holder holder : holderList) {
                holder.path.reset();
            }
            invalidate();
        }

        public void setBrushColor(int color) {
            this.color = color;
        }

        public void setWidth(float width) {
            this.width = width;
        }
    }

И XML это:

<com.example.tool.DrawView
    android:id="@+id/draw"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:adjustViewBounds="true" />

Проблема в ,как сделать его масштабируемым? обратите внимание, чточертежи должны совпадать с изображением при масштабировании.

Попытайтесь использовать некоторую пользовательскую библиотеку изображений, но не повезло.

например Когда я использую просмотр фотографий, это может быть масштабирование, но рисунки не выравниваются, и уровень масштабирования будет сброшен после включения / выключения масштабирования.https://github.com/chrisbanes/PhotoView

Кроме того, найдите другую библиотеку, подобную этой, но не подходящую для случая с пользовательским представлением.https://github.com/matabii/scale-imageview-android

Обновление 1: демо

Рекомендовано ссылаться на это приложение, функция рисования на самом деле такая же, как то, чего я изо всех сил пытаюсь достичь, но я не могу понять, как они это делают

https://play.google.com/store/apps/details?id=com.zentertain.photoeditor&hl=en

Спасибо

Обновление 2: Из источника Сандип Марам

Большое спасибо Sandeep Maram, после тестирования кода все работает хорошо, остается только то, что чертежи не совпадают с масштабом. Пожалуйста, посмотрите на скриншот

До:

После:

Круг не масштабируется вверх / вниз при увеличении, было бы очень хорошо, если бы это исправить. также это не имеет значения, если изображение перекрывает кнопку.

Ответы на вопрос(2)

Ваш ответ на вопрос