Untitled
unknown
java
3 years ago
3.3 kB
4
Indexable
/* Copyright (C) Alexandre Silva "Kelpy" - All Rights Reserved * Unauthorized copying of this file, via any medium is strictly prohibited * Proprietary and confidential * Written by Alexandre Silva <alexandresilva.coding@gmail.com>, 10 2022 */ package com.mrkelpy.isle.elements; import android.content.Context; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.widget.ImageButton; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.mrkelpy.isle.R; import com.mrkelpy.isle.elements.abstraction.AbstractConstraintLayout; import com.mrkelpy.isle.utils.AppState; import com.mrkelpy.isle.utils.DrawableUtils; /** * This class implements a main constraint where all the app elements will be contained in, allowing for full, * free control over any element interactions during the app lifecycle. */ public class MainAppConstraintLayout extends AbstractConstraintLayout { /** * The current application state, can be enabled or disabled. <br> * If it isn't determined, it'll be off by default. */ private final AppState state = this.determineAppState(); /** * The logoButton that controls the current app state. This is the most important element * of the app, and is controlled by the main app constraint. */ private ImageButton logoButton; public MainAppConstraintLayout(@NonNull Context context) { super(context); this.init(context); } public MainAppConstraintLayout(@NonNull Context context, @Nullable AttributeSet attrs) { super(context, attrs); this.init(context); } public MainAppConstraintLayout(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); this.init(context); } /** * Since there is more than one constructor in the class, this method * performs every necessary actions that are common to all constructors. <br> * Loads up the logo button and adds the elements from the StateConstraintLayout matching the app state. * @param context The application context. */ private void init(Context context) { this.logoButton = this.loadLogoButton(context); } /** * Loads up the logo button accordingly to the current app state. <br> * If the app is activated, the button should display the logo, and be located well above the * screen center. <br> * If not, it should display the turn-on picture, and be located slightly above the center. * @param context The application context. */ private ImageButton loadLogoButton(Context context) { ImageButton button = (ImageButton) this.findViewById(R.id.logo_button); Drawable icon = DrawableUtils.get(context, this.state == AppState.ON ? "icon.isle" : "icon.off"); button.setImageDrawable(icon); return button; } /** * Determines the app's state based on saved file settings, so it can boot back up * and stay active even in the case of a device restart. */ private AppState determineAppState() { return AppState.OFF; } }
Editor is loading...