Как реализовать сохранение SurfaceView в файл?

161
24 сентября 2019, 17:00

Я рисую прямоугольники с использованием Canvas, динамически перемещаю и изменяю SurfaceView, я использую кнопку для сохранения("Save")

class DrawThread extends Thread { // класс потка холдэра
private boolean running = false; //переменная дающая спусковой крючок к запуску
private SurfaceHolder surfaceHolder;
private Drawable drawing;
public DrawThread(SurfaceHolder surfaceHolder) {
    this.surfaceHolder = surfaceHolder;
}

public void setRunning(boolean running) {
    this.running = running;
}
public void run() {
    drawing = new Drawing(bitmap);
    while (running) {
        canvas = null; // пока присваеваем ноль
        try {
            canvas = surfaceHolder.lockCanvas(null); //получаем конву
            if (canvas == null) continue; // если канвы нет то начинаем цикл заново
            // drawing.draw(canvas);
            canvas.drawColor(Color.GRAY);

           } finally {
            if (canvas != null) {
                surfaceHolder.unlockCanvasAndPost(canvas); //выводит на экран наше художество
            }
        }

    }
}

public void onSaveImage(View view) {
    ActivityCompat.requestPermissions(CanvasInProject.this,
            new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
            101);

}
Answer 1

Должна быть процедура для рисования ваших объектов прямоугольников на Canvas. После нажатия кнопки Save запускается другая активность (динамика приостанавливается), здесь если надо можно ввести имя файла и т.п. Создаете Bitmap нужных размеров, создаете к нему Canvas и передаете в основную процедуру для рисования, после чего сохраняете Bitmap в файл.

READ ALSO
Вложеный масив в Retrofit

Вложеный масив в Retrofit

Не часто работал с Retrofit-м, поэтому еще плохо знаю всеНедавно добавил в бекенд пагинацию и следовательно в клиентов изменился json ответ

144
Работа с полигонами в google map на андроид

Работа с полигонами в google map на андроид

У меня есть куча координат в таком виде: ((759007919, 114

168
Как самому сделать вход , не через loadUser для oauth2

Как самому сделать вход , не через loadUser для oauth2

Я не знаю почему, но вк не работает для Security 5

147