Undo redo canvas android

Android Canvas Redo и Undo Operation

Я работаю над рисованием project.my-кода, который отлично работает, но, перетаскивание холста и отмена операции не работают отлично. Работа в режиме не работает. Прекрасная работа и повторные операции не работают отлично. Отмена операции удаляет пути из путей, а также сохраняет в unopaths arraylist и redo Операция удаляет последний элемент из нераспакованного arraylist и сохраняет на пути arraylist.

Этот рисунок кода работает отлично и не работает отлично отменить и повторить операцию.

Что не так в моем коде!

Как решить эту проблему, может кто-нибудь помочь мне с большой оценкой.

Вот мой исходный код

ОБНОВЛЕНО:

Наконец, моя проблема была решена, вот мой класс рисования:

Это код работает отлично …!

На первый взгляд я вижу следующие проблемы:

  • Путем добавления пустого Path к paths как только вы это сделаете, у вас возникнет проблема, как только вы отмените отмену: сначала вы выходите на этот пустой Path , чтобы первая отмена не работала. Затем, если вы рисуете этот Path , он не добавляется к paths . Решение состоит в том, чтобы добавить завершенный Path к путям в touch_up() перед созданием нового.

То есть, удалите

От конструктора и в touch_up() , измените

Вы также захотите добавить

После вашего цикла for в onDraw() , чтобы нарисовать onDraw() Path .

  • Вы не undonePaths когда пользователь снова начинает рисовать.

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

И ниже XML-файла.

Пожалуйста, проверь это.

проблема

Путь отображается только тогда, когда вы закончите рисовать его, что не дает пользователю понять, что он рисует

Читайте также:  Android ice cream sandwich launcher

Источник

Tic Tac Toe, часть 2: Undo/Redo с хранением состояний

Продолжение статьи Tic Tac Toe, часть 1, в которой мы начали разработку этой игры на Svelte. В этой части мы доделаем игру до конца. Добавим команды Undo/Redo, произвольный доступ к любому шагу игры, попеременные ходы с противником, вывод статуса игры, определение победителя.

Команды Undo/Redo

На этом этапе в приложение были добавлены команды Undo/Redo. В хранилище history добавлены методы push и redo.

В класс History добавлены методы push, redo, canUndo, canRedo.

В метод push класса History добавлено удаление всех состояний от текущего до последнего. Если мы несколько раз выполним команду Undo и выполним клик в игровом поле, то все состояния справа от текущего до последнего будут удалены из хранилища и будет добавлено новое состояние.

В компоненте App добавлены кнопки Undo и Redo. Если выполнение команд не возможно, то они деактивируются.

Смена хода

Выполнено попеременное появление крестика или нолика после клика мышкой.

Метод clickCell() убран их хранилища history, весь код метода перенесен в обработчик handleClick() компонента Board.

Таким образом была устранена ранее допущенная ошибка, в хранилище была зависимость от логики этой конкретной игры. Сейчас эта ошибка устранена, и хранилище можно использовать повторно в других играх и приложениях без изменений.

Ранее состояние шага игры описывалось только массивом из 9 значений. Сейчас состояние игры определяется объектом содержащим массив и свойством xIsNext. Инициализация этого объекта в начале игры выглядит так:

И еще можно отметить, что хранилище history сейчас может воспринимать состояния описанные любым образом.

Произвольный доступ к истории ходов

В хранилище history добавили метод setCurrent(current), с помощью которого устанавливаем выбранное текущее состояние игры.

Читайте также:  Installing google play store on android

В компоненте App добавили вывод истории ходов в виде кнопок.

Определение победителя, вывод статуса игры

Добавлена функция определения победителя calculateWinner() в отдельном файле helpers.js:

Добавлено производное хранилище status для определения статуса игры, здесь определяется исход игры: победитель или ничья:

В компоненте App добавлен вывод статуса игры:

В компоненте Board в обработчик клика handleClick() добавлены ограничения: невозможно выполнить клик в заполненной клетке и по окончании игры.

Игра закончена! В следующей статье рассмотрим реализацию этой же игры с помощью паттерна Command, т.е. с хранением команд Undo/Redo вместо хранения отдельных состояний.

Источник

Saiful Haqqi

Ordinary people

Android Draw Canvas with Undo and Redo

Dengan berbekal link http://stackoverflow.com akhirnya saya bisa membuat simple aplikasi untuk menggambar pada canvas dengan fitur undo dan redo. Pada link itu sudah final code yang bisa langsung kita pakai pada aplikasi yg akan kita buat. Pada link tersebut terdapat class yang merupakan turunan dari View milik android, sehingga class tersebut dapat kita add ke semua jenis layout dengan cara setContentView.

Untuk menggambar di atas sebuah image caranya dengan memanfaatkan layout, saya menggunakan tiga buah linier layout yang saling bertumpukan. Layout pertama sebagai container, layout kedua sebagai tempat background image, layout ke tiga sebagai tempat canvas untuk melakukan coret-coret.

Untuk memasukkan gambar dapat menggunakan dua cara, pertama capture image dari camera dan kedua dengan browse file dari handphone. Untuk melakukan capture camera, anda dapat membaca artikel saya android using camera. Sedangkan untuk melakukan browse file dapat menggunakam Intent milik android.

Sedangkan untuk menangkap hasil dari pilih file, dapat melakukan override method milik activity

Читайте также:  Мессенджеры для андроид сигнал

Untuk menampilkan gambar pada linier layout, kita dapat melakukan set background pada linier dengan method setBackgroundDrawable, tetapi method ini sudah deprecated untuk jelly bean.

Untuk membuat menu item yang tampil pada kanan atas aplikasi, download terlebih dahulu untuk icon-icon pada menu item. Sedangkan untuk layout gunakan xml berikut ini

Untuk menampilkan menu bar pada activity, override method berikut

Untuk menangkap action listener dari masing-masing menu item, override method berikut

Источник

Оцените статью