Android Java Surfaceview, объявление и скрытиеJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Android Java Surfaceview, объявление и скрытие

Сообщение Anonymous »

У меня есть основное действие с кнопкой. Когда я нажимаю кнопку, скрытый SurfaceView становится видимым и отображается анимация. Он работает очень хорошо, но у меня есть две проблемы.
Во-первых, как правильно объявить внешний класс SurfaceView в манифесте? Я объявил это обычным занятием, но я почти уверен, что это неправильный путь. Студия Android говорит:

Класс должен предоставить конструктор по умолчанию (открытый конструктор без аргументов).

Как мне это сделать?
Во-вторых, когда анимация завершится, я хочу снова скрыть SurfaceView. Как и где это сделать?
Манифест:







Основное действие:
binding.setIntervalGoButton.setOnClickListener(v -> {
binding.setIntervalLayout.setVisibility(View.GONE);
binding.clockSurfaceview.setVisibility(View.VISIBLE);
invalidateOptionsMenu();
});

intervalSurfaceView:
public class IntervalSurfaceView extends SurfaceView implements SurfaceHolder.Callback, Runnable {
public IntervalSurfaceView(Context context, AttributeSet attrs) {
super(context, attrs);
surfaceHolder = getHolder();
surfaceHolder.addCallback(this);
}
@Override
public void surfaceCreated(@NonNull SurfaceHolder holder) {
gIsIntervalRunning = true;
drawingThread = new Thread(this);
drawingThread.start();
}
@Override
public void surfaceChanged(@NonNull SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(@NonNull SurfaceHolder holder) {
gIsIntervalRunning = false;
try {
drawingThread.join(); // Wait for the thread to finish
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
@Override
public void run() {
while (gIsIntervalRunning) {
Canvas canvas = null;
try {
canvas = surfaceHolder.lockCanvas();
if (canvas != null) {
synchronized (surfaceHolder) {
drawInterval(canvas);
}
}
} finally {
if (canvas != null) {
surfaceHolder.unlockCanvasAndPost(canvas);
}
}
try {
Thread.sleep(100); // Approximately 60 FPS
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
protected static void drawInterval(Canvas canvas) {
// The animation is drawn
if (animation == finished) gIsIntervalRunning = false;
}


Подробнее здесь: https://stackoverflow.com/questions/798 ... and-hiding
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»