fiz um sistema de login simples so para testes, deu mts erros estoua tentar resolver, maior problema foi o nav bar sumiu.

main
230408 2025-12-03 10:34:03 +00:00
parent cd4ff307b7
commit 2cacb74626
55 changed files with 278 additions and 63 deletions

View File

@ -8,10 +8,10 @@
<InsightsFilterSettings>
<option name="connection">
<ConnectionSetting>
<option name="appId" value="PLACEHOLDER" />
<option name="mobileSdkAppId" value="" />
<option name="projectId" value="" />
<option name="projectNumber" value="" />
<option name="appId" value="com.example.pap_findu" />
<option name="mobileSdkAppId" value="1:484378399106:android:af0d3cf9792a6b347e3f9b" />
<option name="projectId" value="pap-findu" />
<option name="projectNumber" value="484378399106" />
</ConnectionSetting>
</option>
<option name="signal" value="SIGNAL_UNSPECIFIED" />

View File

@ -5,6 +5,9 @@
<SelectionState runConfigName="app">
<option name="selectionMode" value="DROPDOWN" />
</SelectionState>
<SelectionState runConfigName="login_activity">
<option name="selectionMode" value="DROPDOWN" />
</SelectionState>
</selectionStates>
</component>
</project>

View File

@ -1,5 +1,6 @@
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.google.gms.google.services)
}
android {
@ -44,6 +45,11 @@ dependencies {
implementation(libs.navigation.fragment)
implementation(libs.navigation.ui)
implementation(libs.activity)
implementation(libs.firebase.database)
implementation(libs.firebase.auth)
implementation(libs.credentials)
implementation(libs.credentials.play.services.auth)
implementation(libs.googleid)
testImplementation(libs.junit)
androidTestImplementation(libs.ext.junit)
androidTestImplementation(libs.espresso.core)

View File

@ -19,17 +19,19 @@
android:exported="false" />
<activity
android:name=".login_activity"
android:exported="false" />
<activity
android:name=".MainActivity"
android:exported="true"
android:label="@string/app_name">
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MainActivity"
android:exported="true"
android:label="@string/app_name">
</activity>
</application>
</manifest>

View File

@ -1,6 +1,12 @@
package com.example.pap_findu;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.Toast;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
@ -10,6 +16,12 @@ import androidx.core.view.WindowInsetsCompat;
public class login_activity extends AppCompatActivity {
private TextView emailInputEditText;
private TextView passwordEditText;
private CheckBox rememberMeCheckBox;
private Button btnLogin;
private TextView criarContaTextView;
private TextView esqueceuPasseTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@ -20,5 +32,25 @@ public class login_activity extends AppCompatActivity {
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
emailInputEditText = findViewById(R.id.emailEditText);
passwordEditText = findViewById(R.id.passwordEditText);
rememberMeCheckBox = findViewById(R.id.rememberMeCheckBox);
btnLogin = findViewById(R.id.btnLogin);
criarContaTextView = findViewById(R.id.criarContaTextView);
esqueceuPasseTextView = findViewById(R.id.esqueceuPasseTextView);
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (emailInputEditText.getText().toString().isEmpty() || passwordEditText.getText().toString().isEmpty()) {
Toast.makeText(login_activity.this, "Preencha todos os campos", Toast.LENGTH_SHORT).show();
} else {
Intent intent = new Intent(login_activity.this, MainActivity.class);
// Lógica de autenticação aqui
}
}
});
}
}

View File

@ -3,3 +3,7 @@
<item android:color="#1C6CFF" android:state_checked="true" />
<item android:color="#B0B7C3" />
</selector>

View File

@ -0,0 +1,11 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960"
android:tint="#7D9CA8"
android:alpha="0.8">
<path
android:fillColor="@android:color/white"
android:pathData="M440,600L520,600L520,520L600,520L600,440L520,440L520,360L440,360L440,440L360,440L360,520L440,520L440,600ZM160,760L160,680L240,680L240,400Q240,317 290,252.5Q340,188 420,168L420,140Q420,115 437.5,97.5Q455,80 480,80Q505,80 522.5,97.5Q540,115 540,140L540,168Q620,188 670,252.5Q720,317 720,400L720,680L800,680L800,760L160,760ZM480,460L480,460L480,460L480,460Q480,460 480,460Q480,460 480,460Q480,460 480,460Q480,460 480,460ZM480,880Q447,880 423.5,856.5Q400,833 400,800L560,800Q560,833 536.5,856.5Q513,880 480,880ZM320,680L640,680L640,400Q640,334 593,287Q546,240 480,240Q414,240 367,287Q320,334 320,400L320,680Z"/>
</vector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 571 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 346 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 580 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 920 B

View File

@ -4,3 +4,7 @@
<size android:width="56dp" android:height="56dp" />
<solid android:color="#E0F2FF" />
</shape>

View File

@ -4,3 +4,7 @@
<size android:width="56dp" android:height="56dp" />
<solid android:color="#FFE8E8" />
</shape>

View File

@ -3,3 +3,7 @@
android:shape="oval">
<solid android:color="#E8EEFF" />
</shape>

View File

@ -3,3 +3,7 @@
android:shape="oval">
<solid android:color="#FF2F46" />
</shape>

View File

@ -1,16 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#FFFFFFFF" />
<corners
android:topLeftRadius="28dp"
android:topRightRadius="28dp" />
<solid android:color="#FFFFFF" />
<corners android:topLeftRadius="28dp"
android:topRightRadius="28dp"/>
<padding
android:left="8dp"
android:top="4dp"
android:right="8dp"
android:bottom="8dp" />
<stroke
android:width="1dp"
android:color="#E6EAF2" />
android:left="0dp"
android:top="6dp"
android:right="0dp"
android:bottom="0dp" />
</shape>

View File

@ -9,3 +9,7 @@
android:right="10dp"
android:bottom="5dp" />
</shape>

View File

@ -9,3 +9,7 @@
android:right="12dp"
android:bottom="6dp" />
</shape>

View File

@ -9,3 +9,7 @@
android:right="12dp"
android:bottom="6dp" />
</shape>

View File

@ -9,3 +9,7 @@
android:right="18dp"
android:bottom="8dp" />
</shape>

View File

@ -12,3 +12,7 @@
android:right="18dp"
android:bottom="8dp" />
</shape>

View File

@ -9,3 +9,7 @@
android:bottomLeftRadius="32dp"
android:bottomRightRadius="32dp" />
</shape>

View File

@ -16,3 +16,7 @@
</shape>
</item>
</layer-list>

View File

@ -4,3 +4,7 @@
<solid android:color="#F9FBFE" />
<corners android:radius="32dp" />
</shape>

View File

@ -8,3 +8,7 @@
android:color="#E0E7F1" />
<padding android:all="8dp" />
</shape>

View File

@ -12,3 +12,7 @@
android:right="16dp"
android:bottom="6dp" />
</shape>

View File

@ -7,3 +7,7 @@
android:width="2dp"
android:color="#FFFFFFFF" />
</shape>

View File

@ -1,14 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#E8F8ED" />
<corners android:radius="18dp" />
<stroke
android:width="1dp"
android:color="#B8E2C8" />
<padding
android:left="16dp"
android:top="16dp"
android:right="16dp"
android:bottom="16dp" />
<solid android:color="@android:color/holo_green_light" />
<corners android:radius="8dp" />
</shape>

View File

@ -4,3 +4,7 @@
<size android:width="36dp" android:height="36dp" />
<solid android:color="#E5F7ED" />
</shape>

View File

@ -6,3 +6,7 @@
android:width="2dp"
android:color="#AA6FDB92" />
</shape>

View File

@ -4,3 +4,7 @@
<size android:width="10dp" android:height="10dp" />
<solid android:color="#1AD873" />
</shape>

View File

@ -4,3 +4,7 @@
<size android:width="56dp" android:height="56dp" />
<solid android:color="#E4ECFF" />
</shape>

View File

@ -4,3 +4,7 @@
<size android:width="56dp" android:height="56dp" />
<solid android:color="#FFEFE3" />
</shape>

View File

@ -16,3 +16,7 @@
</shape>
</item>
</selector>

View File

@ -8,3 +8,7 @@
android:fillColor="#F97316"
android:pathData="M1,21h22L12,2 1,21zM13,18h-2v-2h2v2zm0,-4h-2v-4h2v4z" />
</vector>

View File

@ -11,3 +11,7 @@
android:fillColor="#1FB66F"
android:pathData="M10,11h4v4h-4z" />
</vector>

View File

@ -8,3 +8,7 @@
android:fillColor="#FFFFFFFF"
android:pathData="M20,2H4C2.9,2 2,2.9 2,4v18l4,-4h14c1.1,0 2,-0.9 2,-2V4C22,2.9 21.1,2 20,2z"/>
</vector>

View File

@ -9,3 +9,7 @@
android:pathData="M12,4a8,8 0 1,1 -8,8H2a10,10 0 1,0 3,-7.32V4H3v5h5V7H5.26A8,8 0 0,1 12,4Zm-1,3v6h5v-2h-3V7h-2Z"
android:fillType="evenOdd" />
</vector>

View File

@ -9,3 +9,7 @@
android:pathData="M12,2a7,7 0 0,1 7,7c0,5 -7,13 -7,13S5,14 5,9a7,7 0 0,1 7,-7Zm0,9.5a2.5,2.5 0 1,0 0,-5 2.5,2.5 0 0,0 0,5Z"
android:fillType="evenOdd" />
</vector>

View File

@ -8,3 +8,7 @@
android:fillColor="#000000"
android:pathData="M12,22a2,2 0 0,0 2,-2h-4a2,2 0 0,0 2,2zm6,-6v-5a6,6 0 0,0 -5,-5.91V4a1,1 0 1,0 -2,0v1.09A6,6 0 0,0 6,11v5l-2,2v1h16v-1z" />
</vector>

View File

@ -9,3 +9,7 @@
android:pathData="M3,10.25L12,3l9,7.25V20a1,1 0 0,1 -1,1h-5v-5h-6v5H4a1,1 0 0,1 -1,-1z"
android:fillType="evenOdd" />
</vector>

View File

@ -9,3 +9,7 @@
android:pathData="M12,2a7,7 0 0,1 7,7c0,5 -7,13 -7,13S5,14 5,9a7,7 0 0,1 7,-7zm0,9.5a2.5,2.5 0 1,0 0,-5 2.5,2.5 0 0,0 0,5z"
android:fillType="evenOdd" />
</vector>

View File

@ -8,3 +8,7 @@
android:fillColor="#FFFFFFFF"
android:pathData="M2.01,21L23,12 2.01,3 2,10l15,2 -15,2z" />
</vector>

View File

@ -9,3 +9,7 @@
android:pathData="M12,12a4,4 0 1,0 0,-8 4,4 0 0,0 0,8Zm0,2c-3.33,0 -8,1.67 -8,5v2h16v-2c0,-3.33 -4.67,-5 -8,-5Z"
android:fillType="evenOdd" />
</vector>

View File

@ -11,3 +11,7 @@
android:fillColor="#2F6BFF"
android:pathData="M12,4a8,8 0 0,0 -7.75,6H2v4h2.25A8,8 0 1,0 12,4Zm0,14a6,6 0 0,1 -5.65,-4h11.3A6,6 0 0,1 12,18Z" />
</vector>

View File

@ -8,3 +8,7 @@
android:fillColor="#1F2A37"
android:pathData="M5,11h14v2H5z" />
</vector>

View File

@ -8,3 +8,7 @@
android:fillColor="#1F2A37"
android:pathData="M11,5h2v6h6v2h-6v6h-2v-6H5v-2h6Z" />
</vector>

View File

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/azulClaro">
@ -90,7 +91,7 @@
android:layout_marginTop="12dp">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/inputEmail"
android:id="@+id/emailEditText"
android:hint="Email"
android:inputType="textEmailAddress"
android:layout_width="match_parent"
@ -105,7 +106,7 @@
app:endIconMode="password_toggle">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/inputPassword"
android:id="@+id/passwordEditText"
android:hint="Palavra-passe"
android:inputType="textPassword"
android:layout_width="match_parent"

View File

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/azulClaro">

View File

@ -208,7 +208,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="14dp"
android:gravity="space_between"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
@ -259,7 +259,7 @@
android:layout_height="match_parent"
android:padding="14dp"
android:src="@android:drawable/ic_dialog_info"
android:tint="#1F6AEF" />
app:tint="#1F6AEF" />
</FrameLayout>
<LinearLayout
@ -298,7 +298,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="14dp"
android:gravity="space_between"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView

View File

@ -6,7 +6,11 @@
android:layout_height="match_parent"
android:background="#F3F6FB"
android:paddingBottom="90dp"
tools:context=".ui.map.MapFragment">
tools:context=".ui.map.MapFragment"
android:id="@+id/bottomNavigation"
android:layout_gravity="bottom"
app:labelVisibilityMode="labeled"
app:menu="@menu/bottom_nav_menu">
<LinearLayout
android:layout_width="match_parent"

View File

@ -1,19 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/azulClaro">
<!-- GRADIENTE AZUL DO TOPO -->
<View
android:id="@+id/topGradient"
android:layout_width="0dp"
android:layout_height="280dp"
android:background="@drawable/bg_gradient_top"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<!-- LOGO ÍCONE -->
<ImageView
@ -74,16 +67,17 @@
android:orientation="vertical">
<!-- EMAIL -->
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/emailEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/inputEmail"
android:hint="Email"
android:inputType="textEmailAddress"
android:id="@+id/emailInputEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
android:layout_height="wrap_content"
android:hint="Email"
android:inputType="textEmailAddress" />
</com.google.android.material.textfield.TextInputLayout>
<!-- PASSWORD -->
@ -94,7 +88,7 @@
app:endIconMode="password_toggle">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/inputPassword"
android:id="@+id/passwordEditText"
android:hint="Palavra-passe"
android:inputType="textPassword"
android:layout_width="match_parent"
@ -109,6 +103,7 @@
android:orientation="horizontal">
<CheckBox
android:id="@+id/rememberMeCheckBox"
android:layout_width="123dp"
android:layout_height="wrap_content"
android:text="Lembrar-me" />
@ -140,16 +135,17 @@
<!-- CRIAR CONTA -->
<TextView
android:id="@+id/criarContaTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:gravity="center"
android:text="Ainda não tem conta? Criar conta"
android:textColor="#1E52FF"
android:gravity="center"
android:layout_marginTop="10dp"
android:textSize="14sp"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
android:textSize="14sp" />
<TextView
android:id="@+id/textView"
android:id="@+id/esqueceuPasseTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Esqueceu a passe?"

View File

@ -1,17 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/navigation_map"
android:id="@+id/nav_home"
android:icon="@drawable/ic_nav_home"
android:title="Mapa" />
<item
android:id="@+id/navigation_zones"
android:icon="@drawable/ic_nav_zones"
android:id="@+id/nav_zones"
android:icon="@drawable/ic_location_pin"
android:title="Zonas" />
<item
android:id="@+id/navigation_alerts"
android:icon="@drawable/ic_nav_alerts"
android:id="@+id/nav_alerts"
android:icon="@drawable/ic_bell"
android:title="Alertas" />
<item
android:id="@+id/nav_history"
android:icon="@drawable/ic_history"
android:title="Histórico" />
<item
android:id="@+id/nav_profile"
android:icon="@drawable/ic_profile"
android:title="Perfil" />
</menu>

View File

@ -1,4 +1,5 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
alias(libs.plugins.android.application) apply false
alias(libs.plugins.google.gms.google.services) apply false
}

View File

@ -11,6 +11,12 @@ lifecycleViewmodelKtx = "2.9.4"
navigationFragment = "2.6.0"
navigationUi = "2.6.0"
activity = "1.11.0"
googleGmsGoogleServices = "4.4.4"
firebaseDatabase = "22.0.1"
firebaseAuth = "24.0.1"
credentials = "1.5.0"
credentialsPlayServicesAuth = "1.5.0"
googleid = "1.1.1"
[libraries]
junit = { group = "junit", name = "junit", version.ref = "junit" }
@ -24,7 +30,13 @@ lifecycle-viewmodel-ktx = { group = "androidx.lifecycle", name = "lifecycle-view
navigation-fragment = { group = "androidx.navigation", name = "navigation-fragment", version.ref = "navigationFragment" }
navigation-ui = { group = "androidx.navigation", name = "navigation-ui", version.ref = "navigationUi" }
activity = { group = "androidx.activity", name = "activity", version.ref = "activity" }
firebase-database = { group = "com.google.firebase", name = "firebase-database", version.ref = "firebaseDatabase" }
firebase-auth = { group = "com.google.firebase", name = "firebase-auth", version.ref = "firebaseAuth" }
credentials = { group = "androidx.credentials", name = "credentials", version.ref = "credentials" }
credentials-play-services-auth = { group = "androidx.credentials", name = "credentials-play-services-auth", version.ref = "credentialsPlayServicesAuth" }
googleid = { group = "com.google.android.libraries.identity.googleid", name = "googleid", version.ref = "googleid" }
[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }
google-gms-google-services = { id = "com.google.gms.google-services", version.ref = "googleGmsGoogleServices" }