[UI/UX] mejoras de uso y visuales para experiencia de uso
This commit is contained in:
parent
055116675d
commit
33dc5c910b
|
|
@ -9,8 +9,8 @@ android {
|
||||||
applicationId "org.iiab.controller"
|
applicationId "org.iiab.controller"
|
||||||
minSdkVersion 24
|
minSdkVersion 24
|
||||||
targetSdkVersion 34
|
targetSdkVersion 34
|
||||||
versionCode 23
|
versionCode 24
|
||||||
versionName "v0.1.27alpha"
|
versionName "v0.1.28alpha"
|
||||||
setProperty("archivesBaseName", "$applicationId-$versionName")
|
setProperty("archivesBaseName", "$applicationId-$versionName")
|
||||||
ndk {
|
ndk {
|
||||||
abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
|
abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,6 @@
|
||||||
</receiver>
|
</receiver>
|
||||||
|
|
||||||
<activity android:name=".MainActivity" android:label="@string/app_name"
|
<activity android:name=".MainActivity" android:label="@string/app_name"
|
||||||
android:excludeFromRecents="true"
|
|
||||||
android:launchMode="singleTop"
|
android:launchMode="singleTop"
|
||||||
android:exported="true">
|
android:exported="true">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="es">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>Safe Pocket Web</title>
|
<title>Safe Pocket Web</title>
|
||||||
<style>
|
<style>
|
||||||
/* Reseteo básico y fondo */
|
/* Basic reset and background */
|
||||||
body {
|
body {
|
||||||
margin: 0; padding: 0;
|
margin: 0; padding: 0;
|
||||||
background-color: #F4F7F6;
|
background-color: #F4F7F6;
|
||||||
|
|
@ -13,15 +13,43 @@
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
display: flex; flex-direction: column;
|
display: flex; flex-direction: column;
|
||||||
justify-content: center; align-items: center;
|
justify-content: center; align-items: center;
|
||||||
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Contenedor de botones */
|
/* Header styles */
|
||||||
|
.top-header {
|
||||||
|
position: absolute;
|
||||||
|
top: 0; left: 0; width: 100%;
|
||||||
|
display: flex; align-items: center;
|
||||||
|
padding: 16px 20px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-logo {
|
||||||
|
width: 48px;
|
||||||
|
height: 48px;
|
||||||
|
object-fit: contain;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-title {
|
||||||
|
flex-grow: 1;
|
||||||
|
text-align: center;
|
||||||
|
margin: 0;
|
||||||
|
font-size: 22px;
|
||||||
|
font-weight: 900;
|
||||||
|
color: #2C3E50;
|
||||||
|
padding-right: 48px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Button container */
|
||||||
.menu-container {
|
.menu-container {
|
||||||
width: 80%; display: flex;
|
width: 80%; display: flex;
|
||||||
flex-direction: column; gap: 20px;
|
flex-direction: column; gap: 20px;
|
||||||
|
margin-top: 60px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Estilo de los botones */
|
/* Button styles */
|
||||||
.btn {
|
.btn {
|
||||||
display: flex; align-items: center; justify-content: center;
|
display: flex; align-items: center; justify-content: center;
|
||||||
padding: 18px; border-radius: 14px; text-decoration: none;
|
padding: 18px; border-radius: 14px; text-decoration: none;
|
||||||
|
|
@ -31,7 +59,7 @@
|
||||||
}
|
}
|
||||||
.btn:active { transform: scale(0.96); box-shadow: 0 2px 5px rgba(0,0,0,0.2); }
|
.btn:active { transform: scale(0.96); box-shadow: 0 2px 5px rgba(0,0,0,0.2); }
|
||||||
|
|
||||||
/* Colores */
|
/* App colors */
|
||||||
.btn-books { background-color: #00BCD4; color: #FFFFFF; }
|
.btn-books { background-color: #00BCD4; color: #FFFFFF; }
|
||||||
.btn-kiwix { background-color: #FF9800; color: #FFFFFF; }
|
.btn-kiwix { background-color: #FF9800; color: #FFFFFF; }
|
||||||
.btn-kolibri { background-color: #FFD54F; color: #333333; }
|
.btn-kolibri { background-color: #FFD54F; color: #333333; }
|
||||||
|
|
@ -40,38 +68,37 @@
|
||||||
|
|
||||||
.btn span { margin-right: 12px; font-size: 26px; }
|
.btn span { margin-right: 12px; font-size: 26px; }
|
||||||
|
|
||||||
/* --- NUEVO: ESTILOS DEL SPINNER Y OVERLAY --- */
|
/* Spinner and Overlay styles */
|
||||||
#loadingOverlay {
|
#loadingOverlay {
|
||||||
display: none; /* Oculto por defecto */
|
display: none;
|
||||||
position: fixed; top: 0; left: 0; width: 100%; height: 100%;
|
position: fixed; top: 0; left: 0; width: 100%; height: 100%;
|
||||||
background-color: rgba(244, 247, 246, 0.85); /* Fondo difuminado */
|
background-color: rgba(244, 247, 246, 0.85);
|
||||||
z-index: 9999; /* Por encima de todo */
|
z-index: 9999;
|
||||||
flex-direction: column; justify-content: center; align-items: center;
|
flex-direction: column; justify-content: center; align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.spinner {
|
.spinner {
|
||||||
width: 50px; height: 50px;
|
width: 50px; height: 50px;
|
||||||
border: 6px solid #E0E0E0;
|
border: 6px solid #E0E0E0;
|
||||||
border-top: 6px solid #1976D2; /* Azul elegante */
|
border-top: 6px solid #1976D2;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
animation: spin 1s linear infinite;
|
animation: spin 1s linear infinite;
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes spin {
|
@keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }
|
||||||
0% { transform: rotate(0deg); }
|
.loading-text { margin-top: 15px; font-size: 18px; font-weight: bold; color: #333; }
|
||||||
100% { transform: rotate(360deg); }
|
|
||||||
}
|
|
||||||
|
|
||||||
.loading-text {
|
|
||||||
margin-top: 15px; font-size: 18px; font-weight: bold; color: #333;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
|
<header class="top-header">
|
||||||
|
<img src="logo.svg" alt="IIAB Logo" class="header-logo">
|
||||||
|
<h1 class="header-title">Internet-in-a-Box<br />on Android</h1>
|
||||||
|
</header>
|
||||||
|
|
||||||
<div id="loadingOverlay">
|
<div id="loadingOverlay">
|
||||||
<div class="spinner"></div>
|
<div class="spinner"></div>
|
||||||
<div class="loading-text" id="loadingText">Cargando...</div>
|
<div class="loading-text" id="loadingText">Loading...</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="menu-container">
|
<div class="menu-container">
|
||||||
|
|
@ -87,19 +114,15 @@
|
||||||
const textLabel = document.getElementById('loadingText');
|
const textLabel = document.getElementById('loadingText');
|
||||||
const buttons = document.querySelectorAll('.btn');
|
const buttons = document.querySelectorAll('.btn');
|
||||||
|
|
||||||
// 1. Mostrar el spinner al hacer clic
|
|
||||||
buttons.forEach(btn => {
|
buttons.forEach(btn => {
|
||||||
btn.addEventListener('click', function(e) {
|
btn.addEventListener('click', function(e) {
|
||||||
// Extraemos el texto del botón (ej. "Kolibri") para hacerlo personalizado
|
|
||||||
const appName = this.innerText.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]|\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/g, '').trim();
|
const appName = this.innerText.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]|\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/g, '').trim();
|
||||||
textLabel.innerText = 'Abriendo ' + appName + '...';
|
// Cambiado a Opening
|
||||||
|
textLabel.innerText = 'Opening ' + appName + '...';
|
||||||
// Mostramos la pantalla de carga
|
|
||||||
overlay.style.display = 'flex';
|
overlay.style.display = 'flex';
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// 2. Ocultar el spinner si el usuario regresa con el botón "Atrás"
|
|
||||||
window.addEventListener('pageshow', function(event) {
|
window.addEventListener('pageshow', function(event) {
|
||||||
overlay.style.display = 'none';
|
overlay.style.display = 'none';
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,83 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="512"
|
||||||
|
height="512"
|
||||||
|
viewBox="0 0 135.46667 135.46667"
|
||||||
|
version="1.1"
|
||||||
|
id="svg1"
|
||||||
|
xml:space="preserve"
|
||||||
|
inkscape:version="1.4.3 (1:1.4.3+202512261035+0d15f75042)"
|
||||||
|
sodipodi:docname="IIAB-on-Android-Controller.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
|
||||||
|
id="namedview1"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#000000"
|
||||||
|
borderopacity="0.25"
|
||||||
|
inkscape:showpageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
inkscape:zoom="0.71891835"
|
||||||
|
inkscape:cx="-140.48883"
|
||||||
|
inkscape:cy="188.47759"
|
||||||
|
inkscape:window-width="1918"
|
||||||
|
inkscape:window-height="1008"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" /><defs
|
||||||
|
id="defs1"><inkscape:path-effect
|
||||||
|
effect="powerclip"
|
||||||
|
message=""
|
||||||
|
id="path-effect2"
|
||||||
|
is_visible="true"
|
||||||
|
lpeversion="1"
|
||||||
|
inverse="true"
|
||||||
|
flatten="false"
|
||||||
|
hide_clip="false" /><clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath2"><ellipse
|
||||||
|
style="display:none;fill:none;fill-opacity:0;stroke:#000000;stroke-width:0.218723;stroke-opacity:1"
|
||||||
|
id="ellipse2"
|
||||||
|
cx="203.22194"
|
||||||
|
cy="44.468861"
|
||||||
|
rx="27.890638"
|
||||||
|
ry="27.66296"
|
||||||
|
d="m 231.11258,44.468861 a 27.890638,27.66296 0 0 1 -27.89064,27.66296 27.890638,27.66296 0 0 1 -27.89064,-27.66296 27.890638,27.66296 0 0 1 27.89064,-27.66296 27.890638,27.66296 0 0 1 27.89064,27.66296 z" /><path
|
||||||
|
id="lpe_path-effect2"
|
||||||
|
style="fill:none;fill-opacity:0;stroke:#000000;stroke-width:0.218723;stroke-opacity:1"
|
||||||
|
class="powerclip"
|
||||||
|
d="M 136.73034,-22.709513 H 269.71353 V 111.64723 H 136.73034 Z m 94.38224,67.178374 a 27.890638,27.66296 0 0 0 -27.89064,-27.66296 27.890638,27.66296 0 0 0 -27.89064,27.66296 27.890638,27.66296 0 0 0 27.89064,27.66296 27.890638,27.66296 0 0 0 27.89064,-27.66296 z" /></clipPath></defs><g
|
||||||
|
inkscape:label="Capa 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(-32.997666,-44.40659)"><rect
|
||||||
|
style="fill:#000000;stroke:#000000;stroke-width:0.462333"
|
||||||
|
id="rect2"
|
||||||
|
width="135.00433"
|
||||||
|
height="135.00433"
|
||||||
|
x="33.228832"
|
||||||
|
y="44.637756" /><path
|
||||||
|
style="font-size:81.7498px;font-family:Sans;-inkscape-font-specification:Sans;letter-spacing:0px;fill:#ffffff;stroke:#ffffff;stroke-width:0.491597"
|
||||||
|
d="m 72.627453,134.58207 h 1.560831 q -0.178844,1.68277 -1.268175,2.80462 -1.089332,1.12185 -3.219217,1.12185 -2.064851,0 -3.333026,-1.47141 -1.260049,-1.47954 -1.284437,-3.92647 v -1.26818 q 0,-2.48757 1.276307,-3.9915 1.284434,-1.50393 3.479356,-1.50393 2.007944,0 3.089147,1.10559 1.081201,1.10559 1.260045,2.8534 h -1.560831 q -0.178844,-1.23566 -0.796676,-1.95104 -0.617827,-0.72351 -1.991685,-0.72351 -1.568963,0 -2.381895,1.15436 -0.812935,1.15436 -0.812935,3.04038 v 1.19501 q 0,1.7478 0.739771,2.98346 0.739769,1.22753 2.316859,1.22753 1.495799,0 2.105498,-0.69912 0.617831,-0.69913 0.821063,-1.95104 z m 3.064759,-0.72351 q 0,-1.9104 1.073072,-3.1867 1.073073,-1.28444 2.918429,-1.28444 1.84536,0 2.918432,1.26005 1.073073,1.25192 1.097461,3.12979 v 0.26827 q 0,1.91039 -1.081202,3.1867 -1.073072,1.27631 -2.918431,1.27631 -1.853486,0 -2.934689,-1.27631 -1.073072,-1.27631 -1.073072,-3.1867 z m 1.503926,0.18697 q 0,1.30882 0.61783,2.26809 0.625959,0.95925 1.886005,0.95925 1.227529,0 1.853488,-0.943 0.625959,-0.95113 0.634089,-2.25995 v -0.21136 q 0,-1.29257 -0.625959,-2.25996 -0.625959,-0.97552 -1.877878,-0.97552 -1.243786,0 -1.869745,0.97552 -0.61783,0.96739 -0.61783,2.25996 z m 12.039543,-3.38993 q -0.723509,0 -1.276304,0.39021 -0.552795,0.3902 -0.86984,1.01616 v 6.28397 h -1.503926 v -8.79593 h 1.422635 l 0.04877,1.09746 q 0.999907,-1.26005 2.625774,-1.26005 1.292563,0 2.048591,0.72351 0.764158,0.72351 0.77229,2.43068 v 5.80433 h -1.512058 v -5.77995 q 0,-1.03243 -0.455243,-1.47141 -0.447112,-0.43898 -1.300693,-0.43898 z m 9.267443,7.69034 q -0.512151,0.1626 -1.162496,0.1626 -0.837321,0 -1.430763,-0.51216 -0.593442,-0.51214 -0.593442,-1.83722 v -5.45478 h -1.609606 v -1.15437 h 1.609606 V 127.412 h 1.503928 v 2.13801 h 1.642124 v 1.15437 h -1.642124 v 5.46291 q 0,0.67474 0.292656,0.8617 0.292658,0.18698 0.674734,0.18698 0.284527,0 0.707253,-0.0975 z m 5.235286,-7.5115 q -1.47141,0 -2.00795,1.26819 v 6.24331 h -1.50393 v -8.79593 h 1.46329 l 0.0325,1.00804 q 0.72351,-1.17063 2.08923,-1.17063 0.42273,0 0.66661,0.11381 l -0.008,1.39825 q -0.3333,-0.0651 -0.73164,-0.0651 z m 1.56895,3.02412 q 0,-1.9104 1.07308,-3.1867 1.07307,-1.28444 2.91843,-1.28444 1.84535,0 2.91843,1.26005 1.07307,1.25192 1.09746,3.12979 v 0.26827 q 0,1.91039 -1.0812,3.1867 -1.07307,1.27631 -2.91843,1.27631 -1.85349,0 -2.93469,-1.27631 -1.07308,-1.27631 -1.07308,-3.1867 z m 1.50393,0.18697 q 0,1.30882 0.61783,2.26809 0.62596,0.95925 1.88601,0.95925 1.22752,0 1.85348,-0.943 0.62596,-0.95113 0.6341,-2.25995 v -0.21136 q 0,-1.29257 -0.62596,-2.25996 -0.62596,-0.97552 -1.87788,-0.97552 -1.24379,0 -1.86975,0.97552 -0.61783,0.96739 -0.61783,2.25996 z m 10.02347,-8.18624 v 12.48665 h -1.51205 v -12.48665 z m 4.04841,0 v 12.48665 h -1.51206 v -12.48665 z m 9.37312,10.95022 q -0.43086,0.65034 -1.2194,1.17875 -0.78855,0.52028 -2.08923,0.52028 -1.83724,0 -2.94282,-1.19501 -1.09746,-1.19502 -1.09746,-3.05664 v -0.34143 q 0,-1.43889 0.54466,-2.44693 0.5528,-1.01616 1.43076,-1.54457 0.87797,-0.53654 1.86974,-0.53654 1.88602,0 2.74772,1.23566 0.86984,1.22753 0.86984,3.07289 v 0.67474 h -5.95067 q 0.0325,1.21126 0.71538,2.06485 0.691,0.84544 1.89413,0.84544 0.79668,0 1.34947,-0.32517 0.5528,-0.32517 0.96739,-0.86984 z m -3.50375,-6.18643 q -0.89422,0 -1.51205,0.65035 -0.61783,0.65035 -0.77228,1.86975 h 4.39797 v -0.11382 q -0.0569,-0.87796 -0.51215,-1.64212 -0.44712,-0.76416 -1.60149,-0.76416 z m 8.88537,0.21136 q -1.47141,0 -2.00794,1.26819 v 6.24331 h -1.50393 v -8.79593 h 1.46328 l 0.0325,1.00804 q 0.72351,-1.17063 2.08924,-1.17063 0.42273,0 0.66661,0.11381 l -0.008,1.39825 q -0.33331,-0.0651 -0.73165,-0.0651 z"
|
||||||
|
id="text2"
|
||||||
|
aria-label="Controller" /><g
|
||||||
|
id="g3"
|
||||||
|
transform="translate(-1.9438155)"><path
|
||||||
|
style="font-weight:bold;font-size:124.9px;font-family:Sans;-inkscape-font-specification:'Sans Bold';fill:#ffffff;stroke:#ffffff;stroke-width:0.751077"
|
||||||
|
d="M 64.68422,94.628369 V 112.71227 H 60.958142 V 94.628369 Z m 7.427314,0 V 112.71227 H 68.385456 V 94.628369 Z m 2.173546,18.083901 6.73178,-18.083901 h 3.452831 l 6.76905,18.083901 h -3.97449 l -1.24202,-3.72608 h -6.545487 l -1.242021,3.72608 z m 6.197711,-6.7442 h 4.5334 l -2.260495,-6.793888 z m 25.883829,1.4159 q 0,2.60826 -1.66432,3.96207 -1.66431,1.34139 -4.744537,1.36623 H 92.927901 V 94.628369 h 6.346742 q 3.142327,0 4.918427,1.204765 1.7761,1.204764 1.7761,3.738498 0,1.229608 -0.62102,2.260488 -0.62101,1.03088 -1.9624,1.56495 1.5898,0.39745 2.28533,1.54011 0.69554,1.14267 0.69554,2.44679 z m -9.700227,-9.737479 v 4.545819 h 2.60825 q 2.956027,0 2.956027,-2.235652 0,-2.260486 -2.831817,-2.310167 z m 5.974147,9.700229 q 0,-2.43438 -2.45922,-2.52132 h -3.514927 v 4.88116 h 3.17958 q 1.428337,0 2.111447,-0.67069 0.68312,-0.67069 0.68312,-1.68915 z"
|
||||||
|
id="text4"
|
||||||
|
aria-label="IIAB" /><path
|
||||||
|
id="path1"
|
||||||
|
style="fill:#ffffff;stroke:none;stroke-opacity:1;paint-order:stroke markers fill"
|
||||||
|
d="m 203.20824,-17.709513 a 65.463825,62.177783 0 0 0 -11.35899,0.982886 L 187.76371,2.4205246 A 46.925591,44.569562 0 0 0 172.59564,10.741464 L 153.09037,4.5268556 A 65.463825,62.177783 0 0 0 141.73034,23.215121 l 15.42283,12.940296 a 46.925591,44.569562 0 0 0 -0.85679,8.313698 46.925591,44.569562 0 0 0 0.85679,8.31319 l -15.42283,12.9403 a 65.463825,62.177783 0 0 0 11.36003,18.68826 l 19.50527,-6.21409 a 46.925591,44.569562 0 0 0 15.16807,8.32094 l 4.08554,19.147145 a 65.463825,62.177783 0 0 0 11.35899,0.98237 65.463825,62.177783 0 0 0 11.359,-0.98237 l 4.08295,-19.136295 a 46.925591,44.569562 0 0 0 15.19029,-8.32559 l 19.48512,6.20841 a 65.463825,62.177783 0 0 0 11.36003,-18.68827 l -15.39906,-12.92014 a 46.925591,44.569562 0 0 0 0.86093,-8.33334 46.925591,44.569562 0 0 0 -0.8351,-8.355038 L 264.71353,23.192383 A 65.463825,62.177783 0 0 0 253.36435,4.5149706 L 233.87304,10.725444 A 46.925591,44.569562 0 0 0 218.64296,2.3750486 l -4.08347,-19.1383656 a 65.463825,62.177783 0 0 0 -11.35125,-0.945679 z"
|
||||||
|
clip-path="url(#clipPath2)"
|
||||||
|
inkscape:path-effect="#path-effect2"
|
||||||
|
inkscape:original-d="m 203.20824,-17.709513 a 65.463825,62.177783 0 0 0 -11.35899,0.982886 L 187.76371,2.4205246 A 46.925591,44.569562 0 0 0 172.59564,10.741464 L 153.09037,4.5268556 A 65.463825,62.177783 0 0 0 141.73034,23.215121 l 15.42283,12.940296 a 46.925591,44.569562 0 0 0 -0.85679,8.313698 46.925591,44.569562 0 0 0 0.85679,8.31319 l -15.42283,12.9403 a 65.463825,62.177783 0 0 0 11.36003,18.68826 l 19.50527,-6.21409 a 46.925591,44.569562 0 0 0 15.16807,8.32094 l 4.08554,19.147145 a 65.463825,62.177783 0 0 0 11.35899,0.98237 65.463825,62.177783 0 0 0 11.359,-0.98237 l 4.08295,-19.136295 a 46.925591,44.569562 0 0 0 15.19029,-8.32559 l 19.48512,6.20841 a 65.463825,62.177783 0 0 0 11.36003,-18.68827 l -15.39906,-12.92014 a 46.925591,44.569562 0 0 0 0.86093,-8.33334 46.925591,44.569562 0 0 0 -0.8351,-8.355038 L 264.71353,23.192383 A 65.463825,62.177783 0 0 0 253.36435,4.5149706 L 233.87304,10.725444 A 46.925591,44.569562 0 0 0 218.64296,2.3750486 l -4.08347,-19.1383656 a 65.463825,62.177783 0 0 0 -11.35125,-0.945679 z"
|
||||||
|
transform="matrix(0.29688448,0,0,0.29688448,66.177687,89.523053)" /></g></g></svg>
|
||||||
|
After Width: | Height: | Size: 9.8 KiB |
|
|
@ -38,6 +38,7 @@ public class PortalActivity extends AppCompatActivity {
|
||||||
Button btnBack = findViewById(R.id.btnBack);
|
Button btnBack = findViewById(R.id.btnBack);
|
||||||
Button btnHome = findViewById(R.id.btnHome);
|
Button btnHome = findViewById(R.id.btnHome);
|
||||||
Button btnReload = findViewById(R.id.btnReload);
|
Button btnReload = findViewById(R.id.btnReload);
|
||||||
|
Button btnExit = findViewById(R.id.btnExit);
|
||||||
Button btnForward = findViewById(R.id.btnForward);
|
Button btnForward = findViewById(R.id.btnForward);
|
||||||
|
|
||||||
// Button actions
|
// Button actions
|
||||||
|
|
@ -111,33 +112,35 @@ public class PortalActivity extends AppCompatActivity {
|
||||||
bottomNav.setVisibility(View.VISIBLE); // Remove invisibility
|
bottomNav.setVisibility(View.VISIBLE); // Remove invisibility
|
||||||
});
|
});
|
||||||
|
|
||||||
// --- TEMPORIZADOR PARA AUTO-OCULTAR ---
|
// --- AUTO-HIDE TIMER ---
|
||||||
Handler hideHandler = new Handler(Looper.getMainLooper());
|
Handler hideHandler = new Handler(Looper.getMainLooper());
|
||||||
|
|
||||||
// Esta es la acción de ocultar empaquetada para usarla luego
|
// This is the hiding action packaged for later use
|
||||||
Runnable hideRunnable = () -> {
|
Runnable hideRunnable = () -> {
|
||||||
bottomNav.animate().translationY(bottomNav.getHeight()).setDuration(250);
|
bottomNav.animate().translationY(bottomNav.getHeight()).setDuration(250);
|
||||||
btnHandle.setVisibility(View.VISIBLE);
|
btnHandle.setVisibility(View.VISIBLE);
|
||||||
btnHandle.animate().alpha(1f).setDuration(150);
|
btnHandle.animate().alpha(1f).setDuration(150);
|
||||||
};
|
};
|
||||||
|
|
||||||
// --- LÓGICA DEL TIRADOR (Mostrar Barra) ---
|
// --- HANDLE LOGIC (Show Bar) ---
|
||||||
btnHandle.setOnClickListener(v -> {
|
btnHandle.setOnClickListener(v -> {
|
||||||
// 1. Animamos la entrada
|
// 1. Animate entry
|
||||||
btnHandle.animate().alpha(0f).setDuration(150).withEndAction(() -> btnHandle.setVisibility(View.GONE));
|
btnHandle.animate().alpha(0f).setDuration(150).withEndAction(() -> btnHandle.setVisibility(View.GONE));
|
||||||
bottomNav.animate().translationY(0).setDuration(250);
|
bottomNav.animate().translationY(0).setDuration(250);
|
||||||
|
|
||||||
// 2. Iniciamos la cuenta regresiva de 5 segundos (5000 ms)
|
// 2. Start 5-second countdown (5000 ms)
|
||||||
hideHandler.removeCallbacks(hideRunnable); // Cancelamos si había una cuenta anterior
|
hideHandler.removeCallbacks(hideRunnable); // Cancel if there was a previous countdown
|
||||||
hideHandler.postDelayed(hideRunnable, 5000); // <- Cambia el 5000 por 7000 si prefieres 7 segundos
|
hideHandler.postDelayed(hideRunnable, 5000); // Change 5000 to 7000 for 7 seconds
|
||||||
});
|
});
|
||||||
|
|
||||||
// --- LÓGICA DE CERRAR BARRA MANUALMENTE ---
|
// --- MANUALLY CLOSE BAR LOGIC ---
|
||||||
btnHideNav.setOnClickListener(v -> {
|
btnHideNav.setOnClickListener(v -> {
|
||||||
hideHandler.removeCallbacks(hideRunnable); // Cancelamos el temporizador para que no choque
|
hideHandler.removeCallbacks(hideRunnable); // Cancel the timer so it doesn't conflict
|
||||||
hideRunnable.run(); // Ejecutamos la acción de ocultar inmediatamente
|
hideRunnable.run(); // Execute hiding action immediately
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// <-- EXIT ACTION -->
|
||||||
|
btnExit.setOnClickListener(v -> finish());
|
||||||
webView.getSettings().setJavaScriptEnabled(true);
|
webView.getSettings().setJavaScriptEnabled(true);
|
||||||
webView.getSettings().setDomStorageEnabled(true);
|
webView.getSettings().setDomStorageEnabled(true);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,11 @@
|
||||||
<Button android:id="@+id/btnBack" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="◀" android:textSize="20sp" style="?android:attr/buttonBarButtonStyle"/>
|
<Button android:id="@+id/btnBack" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="◀" android:textSize="20sp" style="?android:attr/buttonBarButtonStyle"/>
|
||||||
<Button android:id="@+id/btnHome" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="🏠" android:textSize="20sp" style="?android:attr/buttonBarButtonStyle"/>
|
<Button android:id="@+id/btnHome" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="🏠" android:textSize="20sp" style="?android:attr/buttonBarButtonStyle"/>
|
||||||
<Button android:id="@+id/btnReload" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="↻" android:textSize="20sp" style="?android:attr/buttonBarButtonStyle"/>
|
<Button android:id="@+id/btnReload" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="↻" android:textSize="20sp" style="?android:attr/buttonBarButtonStyle"/>
|
||||||
|
|
||||||
|
<Button android:id="@+id/btnExit" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="✖" android:textSize="20sp" style="?android:attr/buttonBarButtonStyle" android:textColor="#D32F2F" />
|
||||||
|
|
||||||
<Button android:id="@+id/btnForward" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="▶" android:textSize="20sp" style="?android:attr/buttonBarButtonStyle"/>
|
<Button android:id="@+id/btnForward" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="▶" android:textSize="20sp" style="?android:attr/buttonBarButtonStyle"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
@ -112,8 +112,17 @@
|
||||||
<Button
|
<Button
|
||||||
android:id="@+id/btnBrowseContent"
|
android:id="@+id/btnBrowseContent"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="90dp"
|
||||||
android:text="Browse Content"
|
android:layout_marginTop="8dp"
|
||||||
|
android:layout_marginBottom="12dp"
|
||||||
|
android:text="@string/browse_content"
|
||||||
|
android:textSize="21sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:textColor="#FFFFFF"
|
||||||
|
android:background="@drawable/rounded_button"
|
||||||
|
android:backgroundTint="#F57C00"
|
||||||
|
android:textAllCaps="false"
|
||||||
|
android:elevation="4dp"
|
||||||
android:visibility="gone" />
|
android:visibility="gone" />
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@
|
||||||
<string name="log_warning_rapid_growth">El archivo de log está creciendo demasiado rápido, verifique si algo está fallando</string>
|
<string name="log_warning_rapid_growth">El archivo de log está creciendo demasiado rápido, verifique si algo está fallando</string>
|
||||||
|
|
||||||
<!-- New strings for translatability -->
|
<!-- New strings for translatability -->
|
||||||
|
<string name="browse_content">🚀 Explorar Contenido</string>
|
||||||
<string name="watchdog_description">Protege Termux del modo Doze y mantiene el Wi-Fi activo.</string>
|
<string name="watchdog_description">Protege Termux del modo Doze y mantiene el Wi-Fi activo.</string>
|
||||||
<string name="reset_log">Reiniciar Log</string>
|
<string name="reset_log">Reiniciar Log</string>
|
||||||
<string name="copy_all">Copiar Todo</string>
|
<string name="copy_all">Copiar Todo</string>
|
||||||
|
|
@ -76,4 +77,4 @@
|
||||||
<string name="termux_pulse_error">[Termux] Error de pulso (exit %1$d): %2$s</string>
|
<string name="termux_pulse_error">[Termux] Error de pulso (exit %1$d): %2$s</string>
|
||||||
|
|
||||||
<string name="log_size_format">Tamaño: %1$s / 10MB</string>
|
<string name="log_size_format">Tamaño: %1$s / 10MB</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
@ -25,6 +25,7 @@
|
||||||
<string name="log_warning_rapid_growth">The logging file is growing too rapidly, you might want to check if something is failing</string>
|
<string name="log_warning_rapid_growth">The logging file is growing too rapidly, you might want to check if something is failing</string>
|
||||||
|
|
||||||
<!-- New strings for translatability -->
|
<!-- New strings for translatability -->
|
||||||
|
<string name="browse_content">🚀 Explore Content</string>
|
||||||
<string name="watchdog_description">Protects Termux from Doze mode and keeps Wi-Fi active.</string>
|
<string name="watchdog_description">Protects Termux from Doze mode and keeps Wi-Fi active.</string>
|
||||||
<string name="reset_log">Reset Log</string>
|
<string name="reset_log">Reset Log</string>
|
||||||
<string name="copy_all">Copy All</string>
|
<string name="copy_all">Copy All</string>
|
||||||
|
|
@ -80,6 +81,6 @@
|
||||||
<!-- Brand specific battery warnings -->
|
<!-- Brand specific battery warnings -->
|
||||||
<string name="battery_opt_oppo_extra">\n\nOPPO/Realme detected: Please ensure you also enable \'Allow background activity\' in this app\'s settings.</string>
|
<string name="battery_opt_oppo_extra">\n\nOPPO/Realme detected: Please ensure you also enable \'Allow background activity\' in this app\'s settings.</string>
|
||||||
<string name="battery_opt_xiaomi_extra">\n\nXiaomi detected: Please set battery saver to \'No restrictions\' in settings.</string>
|
<string name="battery_opt_xiaomi_extra">\n\nXiaomi detected: Please set battery saver to \'No restrictions\' in settings.</string>
|
||||||
<string name="battery_opt_denied">Para que la app funcione al 100%, desactiva la optimización de batería.</string>
|
<string name="battery_opt_denied">For the app to work 100%, please disable battery optimization.</string>
|
||||||
<string name="fix_action">SOLUCIONAR</string>
|
<string name="fix_action">FIX</string>
|
||||||
</resources>
|
</resources>
|
||||||
Loading…
Reference in New Issue