En este sitio va a haber el proceso explicado de cada versión del diseño creado, cualquier tipo de cambio se agregará en cada sprint.
Table of Contents
Para tener una idea base y poder empezar a desarrollar la parte de diseño hice un mockups, el programa que se utilizó fue mockups.
![Captura de pantalla a 2022-04-01 15-27-53](https://user-images.githubusercontent.com/95090891/161273005-2d663585-1562-4db3-a21d-2b0c5bde4706.png)
Una vez terminado el mockups nos encargamos de pasarlo a la app y también se está intentando agregar la versión noche y día.
El logo fue buscado por medio de un creador de logos de la página llamada hatchful que es totalmente gratis que da archivo .zip de varias medidas del logo.
![Captura de pantalla de 2022-03-23 23-34-28](https://user-images.githubusercontent.com/71900639/159809976-41cb2b1c-f25e-4e44-bab5-b6030de85eab.png)
![Screenshot_20220505_211810_com neuro simplev6](https://user-images.githubusercontent.com/71900639/167031107-69adb4b8-3530-4713-9355-cd36e072d3bd.jpg)
![Screenshot_20220505_211814_com neuro simplev6](https://user-images.githubusercontent.com/71900639/167031133-b60385bf-f513-4bf7-bec2-bf76208a889d.jpg)
![Screenshot_20220505_211829_com neuro simplev6](https://user-images.githubusercontent.com/71900639/167030825-33a5c84c-6806-427d-a59d-f02d42b8cb6f.jpg)
Este en el diseño que tenemos para el modo nocturno. El cual se adaptará en conjunto con el modo nocturno del móvil
![Screenshot_20220505_211747_com neuro simplev6](https://user-images.githubusercontent.com/71900639/167031148-d076654f-82c9-4fc1-a32e-94a16cfb497a.jpg)
![Screenshot_20220505_211751_com neuro simplev6](https://user-images.githubusercontent.com/71900639/167031159-183bc91d-78ce-43b5-8592-ce062b03ac8a.jpg)
![Screenshot_20220505_211755_com neuro simplev6](https://user-images.githubusercontent.com/71900639/167031223-4930f406-47a6-4b7f-bfc3-81d1952de53f.jpg)
En este apartado quise ya empezar hacer el diseño base verdadero que se utilizara en la aplicación, este diseño se agregará entre el sprint 4 y 5.
La app se le cambió el color, entonces hemos tenido que cambiar el color del logo.
![logo_transparent](https://user-images.githubusercontent.com/95090891/161074122-50fb3fe9-ac8d-4278-8f7e-a7a8144ef811.png)
Charlando con mi compañero, me enseño un diseño de colores variados y me recordó a Instagram, entonces quisimos hacer algo similar basándonos en los colores.
![Captura de pantalla a 2022-03-31 16-10-42](https://user-images.githubusercontent.com/95090891/161075680-9a1c291a-f2de-4c56-a17b-b647b2dfc4e6.png)
En esta zona estará la información de los contenidos que está conformado por: Alarmas, Notas, Control, Parental, Mapa.
En este apartado ya se está intentando agregar la base de datos de la aplicación.
![Captura de pantalla a 2022-03-31 16-37-37](https://user-images.githubusercontent.com/95090891/161081472-22a25885-3936-4275-861f-7b2f0b2876d1.png)
En este apartado ya se ha podido agregar la base de datos de la aplicación.
Actualización, ya se ha agregado.
Ya tenemos un código encontrado para poder agregar el Google Maps, pero todavía seguimos avanzando en otros apartados.
![Captura de pantalla a 2022-03-31 16-44-53](https://user-images.githubusercontent.com/95090891/161083119-fe414669-d738-406c-8c96-3423f11852c0.png)
![Captura de pantalla a 2022-03-31 16-37-37](https://user-images.githubusercontent.com/95090891/161082524-7fdeb2c8-3bd0-4fe5-a138-f719fd138f72.png)
Tenemos dos apartados en los que estarán los apartados de direcciones de Google y contactos de emergencia en los cuales se guardaran contactos
![image](https://user-images.githubusercontent.com/102673066/166142746-f27e5879-027c-4804-b5e2-327f7c9d7198.png)
En este apartado se recreó un Google Maps con geo localizador incluido, donde puedes poner una ubicación fija de tu vivienda. En caso de que la persona se pierda, le da donde sale el logo de ubicación y saldrá una opción abajo a la derecha de redirigir a Google Maps con la ruta de su vivienda directamente, donde ya le saldrá todas las formas de llegar a su propiedad.
![Screenshot_20220429-160718_Mapa](https://user-images.githubusercontent.com/95090891/166143274-1dba37c8-7452-4ec3-bb6b-55a802aa9ef1.png)
![Screenshot_20220429-160701_Maps](https://user-images.githubusercontent.com/95090891/166143279-a44b6d67-a149-4393-9b9a-7872939f48f6.png)
este es el trozo de código es el encargado de configurar los distintos fragmentos que contiene esta sección, si quisiéramos crear otro solo tendríamos que
|
AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder( |
|
R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_notifications) |
|
.build(); |
|
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_activity_main); |
|
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration); |
|
NavigationUI.setupWithNavController(binding.navView, navController); |
Si quisiéramos crear otro fragmento solo tendríamos poner:
- En MainActivity otro R.id."el nuevo fragmento" en esta línea
|
R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_notifications) |
- En el mobile_navigation.xml poner otro fragmento parecido a este, pero con el ID y las otras características modificadas, aunque lo segundo no es totalmente necesario:
|
<fragment |
|
android:id="@+id/navigation_notifications" |
|
android:name="com.neuro.simplev6.ui.notifications.NotificationsFragment" |
|
android:label="@string/title_notifications" |
|
tools:layout="@layout/fragment_notifications" /> |
- I por último en bottom_nav_menu.xml poner un ítem más para que se vea en el Bottom Navigation Drawer. Como este:
|
<item |
|
android:id="@+id/navigation_notifications" |
|
android:icon="@drawable/ic_baseline_accessibility_new_24" |
|
android:title="@string/title_notifications" /> |
|
public class HomeFragment extends Fragment implements View.OnClickListener { |
Este es el fragmento principal de la aplicación, contiene las alarmas programadas.
|
private FragmentHomeBinding binding; |
Si nos fijamos bien poder ver una línea de código que nos otorga la posibilidad de encontrar objetos sin tener que usar FindViewById(), es más rápido y no gasta tanta memoria.
En el siguiente ejemplo podemos ver el uso de binding.
|
recyclerview = binding.recyclerview; |
En el HomeFragment también podemos ver que la opción de eliminar una alarma solo se puede utilizar para eliminar una alarma con el nombre test. Es motivo, no pude implementar la opción de getId en el EntityClass, y no hubiese dado error, únicamente habría sido necesario poner otro Queri en el DAO y ya habríamos podido implementar esta opción, sin embargo, si se puede eliminar directamente toda la lista, con el botón naranja.
De lo que hemos hablado aparece en esta sección de código.
|
private void goToCreateEventActivity() { |
|
Intent intent = new Intent(getContext(), CreateEvent.class); |
|
startActivity(intent); |
|
} |
Este es el segundo fragmento, principalmente es el encargado de mostrar las notas.
Las notas se almacenan si una base de datos, si no que se utiliza un SharedPreferences, que es un documento privado usado para almacenar pequeñas cuantidades de texto.
|
SharedPreferences sharedPref = getContext().getSharedPreferences("com.neuro.simplev6", Context.MODE_PRIVATE); |
|
|
|
HashSet<String> set = (HashSet<String>) sharedPref.getStringSet("notes", null); |
|
if (set == null){ |
|
notes.add("escrive aqui"); |
|
} else { |
|
notes = new ArrayList<>(set); |
|
} |
|
|
Este es el código que uso para poner todas las lasta de notas en el ListView. Como podemos ver, cuando no hay ningún elemento en la lista se crea uno automáticamente para que la persona sepa lo que puede hacer.
Estas son las líneas de código encajadas de hacer un Intent con Información, y permiten editar una nota.
|
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { |
|
|
|
@Override |
|
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { |
|
Intent intent = new Intent(getContext(), NotesActivity.class); // posible error |
|
intent.putExtra("noteId", i); |
|
startActivity(intent); |
|
} |
|
}); |
Estas son las líneas de código encargar de escucha cuando un elemento de la línea esta siento presionado por más de un momento.
|
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { |
|
|
|
@Override |
|
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) { |
|
final int itemToDelete= i; |
|
new AlertDialog.Builder(getContext()) |
|
.setTitle("Quieres borrar la nota?") |
|
.setIcon(R.drawable.ic_baseline_delete_sweep_24) |
|
.setPositiveButton("Si", new DialogInterface.OnClickListener() { |
|
public void onClick (DialogInterface dialog,int i){ |
|
notes.remove(itemToDelete); |
|
arrayAdapter.notifyDataSetChanged(); |
|
SharedPreferences sharedPref = getContext().getSharedPreferences("com.neuro.simplev6", Context.MODE_PRIVATE); |
|
HashSet<String> set = new HashSet<>(DashboardFragment.notes); |
|
sharedPref.edit().putStringSet("notes", set).apply(); |
|
} |
|
}) |
|
|
|
.setNegativeButton("No",null) |
|
.show(); |
|
return true; |
|
|
|
} |
|
}); |
Estas líneas generan un AlertDialog, que se encarga de hacer salir una pantalla encima, con dos botones, que especifican sí que queremos o no eliminar la nota. Esto ofrece que si escogemos que sí, elimina del SharedPreferences este ítem de la Array, si, por otro lado, nos arrepentimos, podemos presionar no, y no hace nada.
Este trozo de código se encarga de hacer un Intent a una nueva activity, donde podemos originar la nota.
|
floating = binding.floatingActionButton2; |
|
floating.setOnClickListener(new View.OnClickListener(){ |
|
@Override |
|
public void onClick(View v) { |
|
Toast.makeText(getActivity(), "Accediendo a \n Añadir notas", Toast.LENGTH_LONG).show(); |
|
Intent intent2 = new Intent(getContext(), NotesActivity.class); |
|
startActivity(intent2); |
|
// notes.add("escrive aqui"); |
|
// ((BaseAdapter) listView.getAdapter()).notifyDataSetChanged(); |
|
} |
|
}); |
Esta activity está relacionada con DashboardFragment, es la que se encarga de editar las notas creadas y de editar las antiguas.
Este trozo es usado para esconder el Toolbar predefinido
|
if (getSupportActionBar() != null) { |
|
getSupportActionBar().hide(); |
|
} |
Este es el fratment que su documento principal tiene mas funciones, como por ejemplo:
este trozo de codigo, busca las la variable de el primer contacto:
|
// conacto 1 |
|
// nombre |
|
SharedPreferences name = requireContext().getSharedPreferences("com.neuro.simplev6", MODE_PRIVATE); |
|
String nom = name.getString("nom", "Contacto"); |
|
// telefono |
|
SharedPreferences sp = requireContext().getSharedPreferences("com.neuro.simplev6", MODE_PRIVATE); |
|
tel = sp.getString("tel", ""); |
Posteriormente este trozo de codigo
|
cardView5.setOnClickListener(v -> { |
|
// contacte emergencia |
|
if (nom.equals("Contacto") || tel.equals("")){ |
|
Intent intent2 = new Intent(getContext(), contactoemergencia.class); |
|
intent2.putExtra("contacto",1); |
|
startActivity(intent2); |
|
} else { |
|
Intent contactcall = new Intent(Intent.ACTION_DIAL); |
|
|
|
contactcall.setData(Uri.parse("tel:"+tel)); |
|
startActivity(contactcall); |
|
} |
|
|
|
}); |