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

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

Сообщение Anonymous »

У меня есть основное действие с кнопкой. Когда я нажимаю кнопку, становится видимым скрытый вид поверхности и отображается анимация. Это работает очень хорошо. У меня есть две проблемы. Как правильно объявить внешний класс Surfaceview в манифесте? Я объявил это обычным занятием, но я почти уверен, что это неправильный путь. Студия Android говорит: «Класс должен предоставить конструктор по умолчанию (открытый конструктор без аргументов)». Как мне это сделать? И тут проблема номер 2, когда анимация закончится, я хочу снова скрыть 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»