This commit is contained in:
2026-04-30 10:42:47 +01:00
parent 9ff7b5c972
commit dd80c8d9bb
19 changed files with 851 additions and 600 deletions

3
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,3 @@
{
"java.configuration.updateBuildConfiguration": "interactive"
}

View File

@@ -19,6 +19,7 @@ import com.example.lifegrid.menu.AtivosFragment;
import com.example.lifegrid.menu.DefinicoesFragment;
import com.example.lifegrid.menu.DocumentosFragment;
import com.example.lifegrid.menu.GraficosFragment;
import com.example.lifegrid.menu.HomeFragment;
import com.example.lifegrid.menu.MetasFragment;
import com.example.lifegrid.menu.TransacoesFragment;
import com.example.lifegrid.models.Transacao;
@@ -48,16 +49,7 @@ import java.util.Locale;
*/
public class TelaInicialActivity extends AppCompatActivity {
private TextView tvValor;
private TextView tvTransacoes;
private TextView tvValor2;
private TextView tvTransacoes2;
private TextView tvValor3;
private TextView tvTransacoes3;
private TextView tvValor4;
private TextView tvTransacoes4;
private TextView tvTitulo;
private TextView tvTitulo2;
private ImageView ivHeaderProfilePicture;
private TextView tvHeaderUsername;
@@ -78,16 +70,6 @@ public class TelaInicialActivity extends AppCompatActivity {
return insets;
});
tvValor = findViewById(R.id.tvValor);
tvTransacoes = findViewById(R.id.tvTransacoes);
tvValor2 = findViewById(R.id.tvValor2);
tvTransacoes2 = findViewById(R.id.tvTransacoes2);
tvValor3 = findViewById(R.id.tvValor3);
tvTransacoes3 = findViewById(R.id.tvTransacoes3);
tvValor4 = findViewById(R.id.tvValor4);
tvTransacoes4 = findViewById(R.id.tvTransacoes4);
tvTitulo = findViewById(R.id.tvTitulo);
tvTitulo2 = findViewById(R.id.tvTitulo2);
ivHeaderProfilePicture = findViewById(R.id.ivHeaderProfilePicture);
tvHeaderUsername = findViewById(R.id.tvHeaderUsername);
@@ -97,50 +79,64 @@ public class TelaInicialActivity extends AppCompatActivity {
setupSpinners();
Fragment transacoesFragment2 = new TransacoesFragment();
Fragment homeFragment = new HomeFragment();
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragmentContainerView, transacoesFragment2)
.replace(R.id.fragmentContainerView, homeFragment)
.commit();
android.view.View.OnClickListener openTransacoesListener = v -> {
updateNavSelection(findViewById(R.id.carteiraImageView));
Fragment transacoesFragment = new TransacoesFragment();
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragmentContainerView, transacoesFragment)
.commit();
scrollToFragment();
};
findViewById(R.id.receitasCardView).setOnClickListener(openTransacoesListener);
findViewById(R.id.despesasCardView).setOnClickListener(openTransacoesListener);
android.view.View.OnClickListener openHomeListener = v -> {
updateNavSelection(findViewById(R.id.homeImageView));
Fragment newHomeFragment = new HomeFragment();
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragmentContainerView, newHomeFragment)
.commit();
};
ImageView homeImageView = findViewById(R.id.homeImageView);
homeImageView.setOnClickListener(openHomeListener);
ImageView carteiraImageView = findViewById(R.id.carteiraImageView);
carteiraImageView.setOnClickListener(openTransacoesListener);
ImageView setaImageView = findViewById(R.id.setaImageView);
setaImageView.setOnClickListener(v -> {
updateNavSelection(setaImageView);
Fragment ativosFragment = new AtivosFragment();
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragmentContainerView, ativosFragment)
.commit();
scrollToFragment();
});
ImageView graficoImageView = findViewById(R.id.graficoImageView);
graficoImageView.setOnClickListener(v -> {
updateNavSelection(graficoImageView);
Fragment graficosFragment = new GraficosFragment();
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragmentContainerView, graficosFragment)
.commit();
scrollToFragment();
});
ImageView alvoImageView = findViewById(R.id.alvoImageView);
alvoImageView.setOnClickListener(v -> {
updateNavSelection(alvoImageView);
Fragment metasFragment = new MetasFragment();
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragmentContainerView, metasFragment)
.commit();
scrollToFragment();
});
ImageView definicoesImageView = findViewById(R.id.definicoesImageView);
definicoesImageView.setOnClickListener(v -> {
updateNavSelection(definicoesImageView);
Intent intent = new Intent(TelaInicialActivity.this, DefinicoesActivity.class);
startActivity(intent);
});
@@ -204,7 +200,7 @@ public class TelaInicialActivity extends AppCompatActivity {
AdapterView.OnItemSelectedListener listener = new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, android.view.View view, int position, long id) {
carregarDados();
atualizarDadosHome();
}
@Override
@@ -215,75 +211,28 @@ public class TelaInicialActivity extends AppCompatActivity {
spinnerAno.setOnItemSelectedListener(listener);
}
private void carregarDados() {
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user == null) return;
int mesSelecionado = spinnerMes.getSelectedItemPosition() + 1; // 1 to 12
String anoSelecionado = spinnerAno.getSelectedItem().toString();
String mesNome = meses[spinnerMes.getSelectedItemPosition()];
tvTitulo.setText("Receitas (" + mesNome + " " + anoSelecionado + ")");
tvTitulo2.setText("Despesas (" + mesNome + " " + anoSelecionado + ")");
DatabaseReference transacoesRef = FirebaseDatabase.getInstance().getReference()
.child("users").child(user.getUid()).child("transacoes");
transacoesRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
double totalReceitas = 0;
double totalDespesas = 0;
int countReceitas = 0;
int countDespesas = 0;
for (DataSnapshot ds : snapshot.getChildren()) {
Transacao transacao = ds.getValue(Transacao.class);
if (transacao != null && transacao.getData() != null) {
String[] parts = transacao.getData().split("/");
if (parts.length == 3) {
try {
int mesTransacao = Integer.parseInt(parts[1]);
String anoTransacao = parts[2];
if (mesTransacao == mesSelecionado && anoTransacao.equals(anoSelecionado)) {
double valor = Double.parseDouble(transacao.getValor().replace(",", "."));
if ("Receita".equals(transacao.getTipo())) {
totalReceitas += valor;
countReceitas++;
} else if ("Despesa".equals(transacao.getTipo())) {
totalDespesas += valor;
countDespesas++;
}
}
} catch (NumberFormatException e) {
e.printStackTrace();
}
}
}
}
tvValor.setText(String.format(Locale.getDefault(), "%.2f€", totalReceitas));
tvTransacoes.setText(countReceitas + " transações");
tvValor2.setText(String.format(Locale.getDefault(), "%.2f€", totalDespesas));
tvTransacoes2.setText(countDespesas + " transações");
double saldo = totalReceitas - totalDespesas;
tvValor3.setText(String.format(Locale.getDefault(), "%.2f€", saldo));
if (saldo >= 0) {
tvTransacoes3.setText("Poupança positiva");
tvTransacoes3.setTextColor(android.graphics.Color.parseColor("#8E8E8E"));
} else {
tvTransacoes3.setText("Poupança negativa");
tvTransacoes3.setTextColor(android.graphics.Color.parseColor("#FF0000"));
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Toast.makeText(TelaInicialActivity.this, "Erro ao carregar dados", Toast.LENGTH_SHORT).show();
}
});
public void atualizarDadosHome() {
Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.fragmentContainerView);
if (currentFragment instanceof HomeFragment) {
int mesSelecionado = spinnerMes.getSelectedItemPosition() + 1; // 1 to 12
String anoSelecionado = spinnerAno.getSelectedItem().toString();
String mesNome = meses[spinnerMes.getSelectedItemPosition()];
((HomeFragment) currentFragment).carregarDados(mesSelecionado, anoSelecionado, mesNome);
}
}
private void updateNavSelection(android.widget.ImageView selectedItem) {
int[] ids = {R.id.homeImageView, R.id.carteiraImageView, R.id.setaImageView, R.id.graficoImageView, R.id.alvoImageView, R.id.definicoesImageView};
for (int id : ids) {
android.widget.ImageView iv = findViewById(id);
if (iv != null) {
if (iv == selectedItem) {
iv.setBackgroundResource(R.drawable.nav_item_selected_bg);
} else {
iv.setBackground(null);
}
}
}
}
}

View File

@@ -3,31 +3,158 @@ package com.example.lifegrid.menu;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.annotation.NonNull;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import com.example.lifegrid.R;
import com.example.lifegrid.models.Transacao;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import java.util.Locale;
public class HomeFragment extends Fragment {
private TextView tvValor;
private TextView tvTransacoes;
private TextView tvValor2;
private TextView tvTransacoes2;
private TextView tvValor3;
private TextView tvTransacoes3;
private TextView tvValor4;
private TextView tvTransacoes4;
private TextView tvTitulo;
private TextView tvTitulo2;
public HomeFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View root = inflater.inflate(R.layout.fragment_home, container, false);
tvValor = root.findViewById(R.id.tvValor);
tvTransacoes = root.findViewById(R.id.tvTransacoes);
tvValor2 = root.findViewById(R.id.tvValor2);
tvTransacoes2 = root.findViewById(R.id.tvTransacoes2);
tvValor3 = root.findViewById(R.id.tvValor3);
tvTransacoes3 = root.findViewById(R.id.tvTransacoes3);
tvValor4 = root.findViewById(R.id.tvValor4);
tvTransacoes4 = root.findViewById(R.id.tvTransacoes4);
tvTitulo = root.findViewById(R.id.tvTitulo);
tvTitulo2 = root.findViewById(R.id.tvTitulo2);
// Se precisarmos que o fragmento carregue dados logo ao iniciar,
// a atividade vai chamar este método quando o fragmento estiver pronto.
root.findViewById(R.id.receitasCardView).setOnClickListener(v -> {
Fragment transacoesFragment = new TransacoesFragment();
requireActivity().getSupportFragmentManager().beginTransaction()
.replace(R.id.fragmentContainerView, transacoesFragment)
.commit();
});
root.findViewById(R.id.despesasCardView).setOnClickListener(v -> {
Fragment transacoesFragment = new TransacoesFragment();
requireActivity().getSupportFragmentManager().beginTransaction()
.replace(R.id.fragmentContainerView, transacoesFragment)
.commit();
});
return root;
}
@Override
public void onResume() {
super.onResume();
if (getActivity() instanceof com.example.lifegrid.TelaInicialActivity) {
((com.example.lifegrid.TelaInicialActivity) getActivity()).atualizarDadosHome();
}
}
public void carregarDados(int mesSelecionado, String anoSelecionado, String mesNome) {
if (tvTitulo == null) return;
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user == null) return;
tvTitulo.setText("Receitas (" + mesNome + " " + anoSelecionado + ")");
tvTitulo2.setText("Despesas (" + mesNome + " " + anoSelecionado + ")");
DatabaseReference transacoesRef = FirebaseDatabase.getInstance().getReference()
.child("users").child(user.getUid()).child("transacoes");
transacoesRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (!isAdded()) return;
double totalReceitas = 0;
double totalDespesas = 0;
int countReceitas = 0;
int countDespesas = 0;
for (DataSnapshot ds : snapshot.getChildren()) {
Transacao transacao = ds.getValue(Transacao.class);
if (transacao != null && transacao.getData() != null) {
String[] parts = transacao.getData().split("/");
if (parts.length == 3) {
try {
int mesTransacao = Integer.parseInt(parts[1]);
String anoTransacao = parts[2];
if (mesTransacao == mesSelecionado && anoTransacao.equals(anoSelecionado)) {
double valor = Double.parseDouble(transacao.getValor().replace(",", "."));
if ("Receita".equals(transacao.getTipo())) {
totalReceitas += valor;
countReceitas++;
} else if ("Despesa".equals(transacao.getTipo())) {
totalDespesas += valor;
countDespesas++;
}
}
} catch (NumberFormatException e) {
e.printStackTrace();
}
}
}
}
tvValor.setText(String.format(Locale.getDefault(), "%.2f€", totalReceitas));
tvTransacoes.setText(countReceitas + " transações");
tvValor2.setText(String.format(Locale.getDefault(), "%.2f€", totalDespesas));
tvTransacoes2.setText(countDespesas + " transações");
double saldo = totalReceitas - totalDespesas;
tvValor3.setText(String.format(Locale.getDefault(), "%.2f€", saldo));
if (saldo >= 0) {
tvTransacoes3.setText("Poupança positiva");
tvTransacoes3.setTextColor(android.graphics.Color.parseColor("#8E8E8E"));
} else {
tvTransacoes3.setText("Poupança negativa");
tvTransacoes3.setTextColor(android.graphics.Color.parseColor("#FF0000"));
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
if (isAdded()) {
Toast.makeText(getContext(), "Erro ao carregar dados", Toast.LENGTH_SHORT).show();
}
}
});
}
}

View File

@@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="#000000">
<path
android:fillColor="@android:color/white"
android:pathData="M10,20v-6h4v6h5v-8h3L12,3 2,12h3v8z"/>
</vector>

View File

@@ -0,0 +1,13 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M4,20H22 M4,20V4 M8,20V12 M13,20V6 M18,20V14"
android:strokeWidth="1.8"
android:strokeColor="#000000"
android:strokeLineCap="round"
android:strokeLineJoin="round"
android:fillColor="#00000000"/>
</vector>

View File

@@ -0,0 +1,20 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M3,9l9,-7l9,7v11a2,2 0,0 1,-2 2H5a2,2 0,0 1,-2 -2z"
android:strokeWidth="1.8"
android:strokeColor="#000000"
android:strokeLineCap="round"
android:strokeLineJoin="round"
android:fillColor="#00000000"/>
<path
android:pathData="M9,22V12h6v10"
android:strokeWidth="1.8"
android:strokeColor="#000000"
android:strokeLineCap="round"
android:strokeLineJoin="round"
android:fillColor="#00000000"/>
</vector>

View File

@@ -0,0 +1,20 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M12.22,2h-0.44a2,2 0,0 0,-2 2v0.18a2,2 0,0 1,-1 1.73l-0.43,0.25a2,2 0,0 1,-2 0l-0.15,-0.08a2,2 0,0 0,-2.73 0.73l-0.22,0.38a2,2 0,0 0,0.73 2.73l0.15,0.1a2,2 0,0 1,1 1.72v0.51a2,2 0,0 1,-1 1.74l-0.15,0.09a2,2 0,0 0,-0.73 2.73l0.22,0.38a2,2 0,0 0,2.73 0.73l0.15,-0.08a2,2 0,0 1,2 0l0.43,0.25a2,2 0,0 1,1 1.73V20a2,2 0,0 0,2 2h0.44a2,2 0,0 0,2 -2v-0.18a2,2 0,0 1,1 -1.73l0.43,-0.25a2,2 0,0 1,2 0l0.15,0.08a2,2 0,0 0,2.73 -0.73l0.22,-0.39a2,2 0,0 0,-0.73 -2.73l-0.15,-0.08a2,2 0,0 1,-1 -1.74v-0.5a2,2 0,0 1,1 -1.74l0.15,-0.09a2,2 0,0 0,0.73 -2.73l-0.22,-0.38a2,2 0,0 0,-2.73 -0.73l-0.15,0.08a2,2 0,0 1,-2 0l-0.43,-0.25a2,2 0,0 1,-1 -1.73V4a2,2 0,0 0,-2 -2z"
android:strokeWidth="1.8"
android:strokeColor="#000000"
android:strokeLineCap="round"
android:strokeLineJoin="round"
android:fillColor="#00000000"/>
<path
android:pathData="M12,12m-3,0a3,3 0,1 1,6 0a3,3 0,1 1,-6 0"
android:strokeWidth="1.8"
android:strokeColor="#000000"
android:strokeLineCap="round"
android:strokeLineJoin="round"
android:fillColor="#00000000"/>
</vector>

View File

@@ -0,0 +1,21 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M12,2A10,10 0,1 1,2 12A10,10 0,0 1,12 2"
android:strokeWidth="1.8"
android:strokeColor="#000000"
android:fillColor="#00000000"/>
<path
android:pathData="M12,6A6,6 0,1 1,6 12A6,6 0,0 1,12 6"
android:strokeWidth="1.8"
android:strokeColor="#000000"
android:fillColor="#00000000"/>
<path
android:pathData="M12,10A2,2 0,1 1,10 12A2,2 0,0 1,12 10"
android:strokeWidth="1.8"
android:strokeColor="#000000"
android:fillColor="#00000000"/>
</vector>

View File

@@ -0,0 +1,13 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M23,6l-9.5,9.5l-5,-5L2,17 M17,6h6v6"
android:strokeWidth="1.8"
android:strokeColor="#000000"
android:strokeLineCap="round"
android:strokeLineJoin="round"
android:fillColor="#00000000"/>
</vector>

View File

@@ -0,0 +1,29 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<!-- Wallet body -->
<path
android:pathData="M21,6H5a2,2 0,0 0,-2 2v10a2,2 0,0 0,2 2h16a2,2 0,0 0,2 -2V8a2,2 0,0 0,-2 -2z"
android:strokeWidth="1.8"
android:strokeColor="#000000"
android:strokeLineCap="round"
android:strokeLineJoin="round"
android:fillColor="#00000000"/>
<!-- Wallet inner flap -->
<path
android:pathData="M23,10H18a2,2 0,0 0,0 4h5"
android:strokeWidth="1.8"
android:strokeColor="#000000"
android:strokeLineCap="round"
android:strokeLineJoin="round"
android:fillColor="#00000000"/>
<path
android:pathData="M20,12h0.01"
android:strokeWidth="2.5"
android:strokeColor="#000000"
android:strokeLineCap="round"
android:strokeLineJoin="round"
android:fillColor="#00000000"/>
</vector>

View File

@@ -1,9 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@color/cinzaescuro"/>
<corners android:radius="15dp"/>
</shape>
</item>
</selector>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#F1F2F6"/>
<corners android:radius="25dp"/>
</shape>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#FFFFFF"/>
<corners android:radius="20dp"/>
</shape>

View File

@@ -53,7 +53,7 @@
android:layout_height="50dp"
android:layout_marginTop="28dp"
android:backgroundTint="#050505"
android:text="Entrar ->"
android:text="Entrar"
app:cornerRadius="10dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"

View File

@@ -14,7 +14,7 @@
android:layout_height="50dp"
android:layout_marginTop="24dp"
android:backgroundTint="#050505"
android:text="Entrar ->"
android:text="Enviar email"
app:cornerRadius="10dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"

View File

@@ -12,481 +12,221 @@
android:id="@+id/mainScrollView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/cinza">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/cinza"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/receitasCardView"
android:layout_width="379dp"
android:layout_height="175dp"
android:layout_margin="16dp"
android:background="@drawable/cardview_background"
android:padding="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.51"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/fragmentContainerView">
<!-- TRANSAÇÕES -->
<TextView
android:id="@+id/tvTitulo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="7dp"
android:layout_marginTop="12dp"
android:text="Receitas (Mês Atual)"
android:textColor="#3A3A3A"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/ivArrow"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="12dp"
android:layout_marginEnd="7dp"
android:src="@drawable/diagonalarrowrightup_110941"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:tint="#2ECC71" />
<TextView
android:id="@+id/tvValor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tvTitulo"
android:layout_marginStart="7dp"
android:layout_marginTop="40dp"
android:text="0.00€"
android:textColor="#000000"
android:textSize="23sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvTitulo" />
<TextView
android:id="@+id/tvTransacoes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tvValor"
android:layout_marginStart="7dp"
android:text="0 transações"
android:textColor="#8E8E8E"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvValor"
app:layout_constraintVertical_bias="0.277" />
</androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout
android:id="@+id/llProfileHeader"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="32dp"
app:layout_constraintTop_toTopOf="parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
app:layout_constraintTop_toTopOf="parent">
<androidx.cardview.widget.CardView
android:layout_width="50dp"
android:layout_height="50dp"
app:cardCornerRadius="25dp"
app:cardElevation="0dp"
app:cardBackgroundColor="@color/cinzaescuro">
<ImageView
android:id="@+id/ivHeaderProfilePicture"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@drawable/ic_launcher_foreground" />
</androidx.cardview.widget.CardView>
<LinearLayout
android:layout_width="wrap_content"
android:id="@+id/llProfileHeader"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginStart="16dp">
android:layout_marginHorizontal="24dp"
android:layout_marginTop="32dp"
android:gravity="center_vertical"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/tvGreeting"
<androidx.cardview.widget.CardView
android:layout_width="50dp"
android:layout_height="50dp"
app:cardBackgroundColor="@color/cinzaescuro"
app:cardCornerRadius="25dp"
app:cardElevation="0dp">
<ImageView
android:id="@+id/ivHeaderProfilePicture"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@drawable/ic_launcher_foreground" />
</androidx.cardview.widget.CardView>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bem-vindo(a),"
android:textColor="#8E8E8E"
android:textSize="14sp" />
android:layout_marginStart="16dp"
android:orientation="vertical">
<TextView
android:id="@+id/tvHeaderUsername"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Utilizador"
android:textColor="@color/preto"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:id="@+id/tvGreeting"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bem-vindo(a),"
android:textColor="#8E8E8E"
android:textSize="14sp" />
<TextView
android:id="@+id/tvHeaderUsername"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Utilizador"
android:textColor="@color/preto"
android:textSize="18sp"
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<TextView
android:id="@+id/textView10"
android:layout_width="339dp"
android:layout_height="32dp"
android:layout_marginTop="24dp"
android:text="Plataforma de Gestão Financeira"
android:textSize="23sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.375"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/llProfileHeader" />
<TextView
android:id="@+id/textView10"
android:layout_width="339dp"
android:layout_height="32dp"
android:layout_marginTop="24dp"
android:text="Plataforma de Gestão Financeira"
android:textSize="23sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.375"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/llProfileHeader" />
<TextView
android:id="@+id/textView11"
android:layout_width="338dp"
android:layout_height="49dp"
android:layout_marginTop="15dp"
android:text="Transparência completa sobre o seu fluxo de caixa"
android:textSize="16sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.369"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView10" />
<TextView
android:id="@+id/textView11"
android:layout_width="338dp"
android:layout_height="49dp"
android:layout_marginTop="15dp"
android:text="Transparência completa sobre o seu fluxo de caixa"
android:textSize="16sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.369"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView10" />
<LinearLayout
android:id="@+id/llFiltros"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="20dp"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView11">
<Spinner
android:id="@+id/spinnerMes"
<LinearLayout
android:id="@+id/llFiltros"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="16dp"
android:layout_marginTop="20dp"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/barraCardView">
<Spinner
android:id="@+id/spinnerMes"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_marginEnd="8dp"
android:layout_weight="1"
android:background="@drawable/spinner_border_bg"
android:paddingStart="12dp"
android:paddingEnd="36dp"
android:spinnerMode="dropdown" />
<Spinner
android:id="@+id/spinnerAno"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_marginStart="8dp"
android:layout_weight="1"
android:background="@drawable/spinner_border_bg"
android:paddingStart="12dp"
android:paddingEnd="36dp"
android:spinnerMode="dropdown" />
</LinearLayout>
<androidx.fragment.app.FragmentContainerView
android:id="@+id/fragmentContainerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
app:layout_constraintTop_toBottomOf="@+id/llFiltros" />
<LinearLayout
android:id="@+id/barraCardView"
android:layout_width="380dp"
android:layout_height="50dp"
android:layout_weight="1"
android:layout_marginEnd="8dp"
android:background="@drawable/spinner_border_bg"
android:paddingStart="12dp"
android:paddingEnd="36dp"
android:spinnerMode="dropdown" />
<Spinner
android:id="@+id/spinnerAno"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="1"
android:layout_marginStart="8dp"
android:background="@drawable/spinner_border_bg"
android:paddingStart="12dp"
android:paddingEnd="36dp"
android:spinnerMode="dropdown" />
</LinearLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/despesasCardView"
android:layout_width="379dp"
android:layout_height="175dp"
android:layout_margin="16dp"
android:background="@drawable/cardview_background"
android:padding="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/receitasCardView">
<!-- TRANSAÇÕES -->
<TextView
android:id="@+id/tvTitulo2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="7dp"
android:layout_marginTop="12dp"
android:text="Despesas (Mês Atual)"
android:textColor="#3A3A3A"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/ivArrow2"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="12dp"
android:layout_marginEnd="7dp"
android:src="@drawable/diagonalarrowleftdownoutline_110924"
android:layout_marginTop="16dp"
android:background="@drawable/linear_backgound"
android:gravity="center"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:tint="#FF0000" />
<TextView
android:id="@+id/tvValor2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tvTitulo2"
android:layout_marginStart="7dp"
android:layout_marginTop="40dp"
android:text="0.00€"
android:textColor="#000000"
android:textSize="23sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvTitulo2" />
app:layout_constraintTop_toBottomOf="@+id/textView11">
<TextView
android:id="@+id/tvTransacoes2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tvValor2"
android:layout_marginStart="7dp"
android:text="0 transações"
android:textColor="#8E8E8E"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvValor2"
app:layout_constraintVertical_bias="0.277" />
<ImageView
android:id="@+id/homeImageView"
android:layout_width="0dp"
android:layout_height="match_parent"
android:background="@drawable/nav_item_selected_bg"
android:padding="11dp"
android:layout_marginVertical="6dp"
android:layout_marginHorizontal="4dp"
android:layout_weight="1"
app:tint="@color/preto"
app:srcCompat="@drawable/ic_nav_home" />
<ImageView
android:id="@+id/carteiraImageView"
android:layout_width="0dp"
android:layout_height="match_parent"
android:padding="11dp"
android:layout_marginVertical="6dp"
android:layout_marginHorizontal="4dp"
android:layout_weight="1"
app:tint="@color/preto"
app:srcCompat="@drawable/ic_nav_wallet" />
<ImageView
android:id="@+id/setaImageView"
android:layout_width="0dp"
android:layout_height="match_parent"
android:padding="11dp"
android:layout_marginVertical="6dp"
android:layout_marginHorizontal="4dp"
android:layout_weight="1"
app:tint="@color/preto"
app:srcCompat="@drawable/ic_nav_trending" />
<ImageView
android:id="@+id/graficoImageView"
android:layout_width="0dp"
android:layout_height="match_parent"
android:padding="11dp"
android:layout_marginVertical="6dp"
android:layout_marginHorizontal="4dp"
android:layout_weight="1"
app:tint="@color/preto"
app:srcCompat="@drawable/ic_nav_chart" />
<ImageView
android:id="@+id/alvoImageView"
android:layout_width="0dp"
android:layout_height="match_parent"
android:padding="11dp"
android:layout_marginVertical="6dp"
android:layout_marginHorizontal="4dp"
android:layout_weight="1"
app:tint="@color/preto"
app:srcCompat="@drawable/ic_nav_target" />
<ImageView
android:id="@+id/definicoesImageView"
android:layout_width="0dp"
android:layout_height="match_parent"
android:padding="11dp"
android:layout_marginVertical="6dp"
android:layout_marginHorizontal="4dp"
android:layout_weight="1"
app:tint="@color/preto"
app:srcCompat="@drawable/ic_nav_settings" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/saldoCardView"
android:layout_width="379dp"
android:layout_height="175dp"
android:layout_margin="16dp"
android:background="@drawable/cardview_background"
android:padding="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/despesasCardView">
<!-- TRANSAÇÕES -->
<TextView
android:id="@+id/tvTitulo3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="7dp"
android:layout_marginTop="12dp"
android:text="Saldo do Mês"
android:textColor="#3A3A3A"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/ivArrow3"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="12dp"
android:layout_marginEnd="7dp"
android:src="@drawable/carteira"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:tint="#0000FF" />
<TextView
android:id="@+id/tvValor3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tvTitulo3"
android:layout_marginStart="7dp"
android:layout_marginTop="40dp"
android:text="0.00€"
android:textColor="#000000"
android:textSize="23sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvTitulo3" />
<TextView
android:id="@+id/tvTransacoes3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tvValor3"
android:layout_marginStart="7dp"
android:text="Poupança positiva"
android:textColor="#8E8E8E"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvValor3"
app:layout_constraintVertical_bias="0.277" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/ativosCardView"
android:layout_width="379dp"
android:layout_height="175dp"
android:layout_margin="16dp"
android:background="@drawable/cardview_background"
android:padding="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/saldoCardView">
<!-- TRANSAÇÕES -->
<TextView
android:id="@+id/tvTitulo4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="7dp"
android:layout_marginTop="12dp"
android:text="Valor do Ativos"
android:textColor="#3A3A3A"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/ivArrow4"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="12dp"
android:layout_marginEnd="7dp"
android:src="@drawable/diagonalarrowrightup_110941"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:tint="#2ECC71" />
<TextView
android:id="@+id/tvValor4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tvTitulo4"
android:layout_marginStart="7dp"
android:layout_marginTop="40dp"
android:text="0.00€"
android:textColor="#000000"
android:textSize="23sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvTitulo4" />
<TextView
android:id="@+id/tvTransacoes4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tvValor4"
android:layout_marginStart="7dp"
android:text="+0.00% ROI"
android:textColor="#8E8E8E"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvValor4"
app:layout_constraintVertical_bias="0.277" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.fragment.app.FragmentContainerView
android:id="@+id/fragmentContainerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
app:layout_constraintTop_toBottomOf="@+id/barraCardView" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/barraCardView"
android:layout_width="380dp"
android:layout_height="39dp"
android:layout_marginTop="16dp"
android:background="@drawable/linear_backgound"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/llFiltros">
<ImageView
android:id="@+id/alvoImageView"
android:layout_width="20dp"
android:layout_height="20dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.263"
app:srcCompat="@drawable/alvo"
tools:layout_editor_absoluteX="293dp" />
<ImageView
android:id="@+id/carteiraImageView"
android:layout_width="20dp"
android:layout_height="20dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.263"
app:srcCompat="@drawable/carteira"
tools:layout_editor_absoluteX="132dp" />
<ImageView
android:id="@+id/definicoesImageView"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_marginEnd="24dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/engrenaje" />
<ImageView
android:id="@+id/graficoImageView"
android:layout_width="20dp"
android:layout_height="20dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.473"
app:srcCompat="@drawable/grafico"
tools:layout_editor_absoluteX="231dp" />
<ImageView
android:id="@+id/setaImageView"
android:layout_width="25dp"
android:layout_height="25dp"
app:srcCompat="@drawable/diagonalarrowrightup_110941"
tools:layout_editor_absoluteX="169dp"
tools:layout_editor_absoluteY="5dp" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>

View File

@@ -9,7 +9,7 @@
android:id="@+id/adicionarCardView"
android:layout_width="376dp"
android:layout_height="match_parent"
android:layout_marginTop="624dp"
android:layout_marginTop="604dp"
android:background="@drawable/cardview_background"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.492"
@@ -23,6 +23,7 @@
android:layout_marginTop="32dp"
android:text="Ativos e Investimentos"
android:textSize="25sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.501"
app:layout_constraintStart_toStartOf="parent"
@@ -36,7 +37,7 @@
android:backgroundTint="@color/preto"
android:text=" + Novo Ativo"
android:textSize="15sp"
app:cornerRadius="14sp"
app:cornerRadius="10sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.502"
app:layout_constraintStart_toStartOf="parent"
@@ -57,8 +58,8 @@
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/ativosRecyclerView"
android:layout_width="match_parent"
android:layout_height="211dp"
android:layout_width="346dp"
android:layout_height="645dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
@@ -72,7 +73,7 @@
android:id="@+id/constraintLayout"
android:layout_width="379dp"
android:layout_height="175dp"
android:layout_marginTop="24dp"
android:layout_marginTop="16dp"
android:background="@drawable/cardview_background"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
@@ -85,7 +86,9 @@
android:layout_marginStart="36dp"
android:layout_marginTop="36dp"
android:text="Valor Total do Portfólio"
android:textSize="18sp"
android:textSize="16sp"
android:textColor="#3A3A3A"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@@ -96,7 +99,9 @@
android:layout_marginStart="36dp"
android:layout_marginBottom="36dp"
android:text="0,00€"
android:textSize="18sp"
android:textColor="#000000"
android:textSize="23sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
@@ -106,7 +111,7 @@
android:id="@+id/constraintLayout2"
android:layout_width="379dp"
android:layout_height="175dp"
android:layout_marginTop="24dp"
android:layout_marginTop="16dp"
android:background="@drawable/cardview_background"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
@@ -119,7 +124,9 @@
android:layout_marginStart="36dp"
android:layout_marginTop="36dp"
android:text="Total Investido"
android:textSize="18sp"
android:textColor="#3A3A3A"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@@ -130,7 +137,9 @@
android:layout_marginStart="36dp"
android:layout_marginBottom="36dp"
android:text="0,00€"
android:textSize="18sp"
android:textColor="#000000"
android:textSize="23sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
@@ -140,7 +149,7 @@
android:id="@+id/constraintLayout3"
android:layout_width="379dp"
android:layout_height="175dp"
android:layout_marginTop="24dp"
android:layout_marginTop="16dp"
android:background="@drawable/button_background"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
@@ -153,7 +162,9 @@
android:layout_marginStart="32dp"
android:layout_marginTop="32dp"
android:text="ROI Total"
android:textSize="18sp"
android:textColor="#3A3A3A"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@@ -164,7 +175,9 @@
android:layout_marginStart="36dp"
android:layout_marginBottom="36dp"
android:text="0,00€"
android:textSize="18sp"
android:textColor="#000000"
android:textSize="23sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -1,9 +1,296 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="900dp"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".menu.HomeFragment">
</FrameLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/receitasCardView"
android:layout_width="379dp"
android:layout_height="175dp"
android:layout_margin="16dp"
android:background="@drawable/cardview_background"
android:padding="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<!-- TRANSAÇÕES -->
<TextView
android:id="@+id/tvTitulo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="7dp"
android:layout_marginTop="12dp"
android:text="Receitas (Mês Atual)"
android:textColor="#3A3A3A"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/ivArrow"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="12dp"
android:layout_marginEnd="7dp"
android:src="@drawable/diagonalarrowrightup_110941"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:tint="#2ECC71" />
<TextView
android:id="@+id/tvValor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tvTitulo"
android:layout_marginStart="7dp"
android:layout_marginTop="40dp"
android:text="0.00€"
android:textColor="#000000"
android:textSize="23sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvTitulo" />
<TextView
android:id="@+id/tvTransacoes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tvValor"
android:layout_marginStart="7dp"
android:text="0 transações"
android:textColor="#8E8E8E"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvValor"
app:layout_constraintVertical_bias="0.277" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/despesasCardView"
android:layout_width="379dp"
android:layout_height="175dp"
android:layout_margin="16dp"
android:background="@drawable/cardview_background"
android:padding="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/receitasCardView">
<!-- TRANSAÇÕES -->
<TextView
android:id="@+id/tvTitulo2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="7dp"
android:layout_marginTop="12dp"
android:text="Despesas (Mês Atual)"
android:textColor="#3A3A3A"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/ivArrow2"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="12dp"
android:layout_marginEnd="7dp"
android:src="@drawable/diagonalarrowleftdownoutline_110924"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:tint="#FF0000" />
<TextView
android:id="@+id/tvValor2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tvTitulo2"
android:layout_marginStart="7dp"
android:layout_marginTop="40dp"
android:text="0.00€"
android:textColor="#000000"
android:textSize="23sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvTitulo2" />
<TextView
android:id="@+id/tvTransacoes2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tvValor2"
android:layout_marginStart="7dp"
android:text="0 transações"
android:textColor="#8E8E8E"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvValor2"
app:layout_constraintVertical_bias="0.277" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/saldoCardView"
android:layout_width="379dp"
android:layout_height="175dp"
android:layout_margin="16dp"
android:background="@drawable/cardview_background"
android:padding="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/despesasCardView">
<!-- TRANSAÇÕES -->
<TextView
android:id="@+id/tvTitulo3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="7dp"
android:layout_marginTop="12dp"
android:text="Saldo do Mês"
android:textColor="#3A3A3A"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/ivArrow3"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="12dp"
android:layout_marginEnd="7dp"
android:src="@drawable/carteira"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:tint="#0000FF" />
<TextView
android:id="@+id/tvValor3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tvTitulo3"
android:layout_marginStart="7dp"
android:layout_marginTop="40dp"
android:text="0.00€"
android:textColor="#000000"
android:textSize="23sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvTitulo3" />
<TextView
android:id="@+id/tvTransacoes3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tvValor3"
android:layout_marginStart="7dp"
android:text="Poupança positiva"
android:textColor="#8E8E8E"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvValor3"
app:layout_constraintVertical_bias="0.277" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/ativosCardView"
android:layout_width="379dp"
android:layout_height="175dp"
android:layout_margin="16dp"
android:layout_marginBottom="16dp"
android:background="@drawable/cardview_background"
android:padding="16dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/saldoCardView"
app:layout_constraintVertical_bias="0.119">
<!-- TRANSAÇÕES -->
<TextView
android:id="@+id/tvTitulo4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="7dp"
android:layout_marginTop="12dp"
android:text="Valor do Ativos"
android:textColor="#3A3A3A"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/ivArrow4"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_marginTop="12dp"
android:layout_marginEnd="7dp"
android:src="@drawable/diagonalarrowrightup_110941"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:tint="#2ECC71" />
<TextView
android:id="@+id/tvValor4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tvTitulo4"
android:layout_marginStart="7dp"
android:layout_marginTop="40dp"
android:text="0.00€"
android:textColor="#000000"
android:textSize="23sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvTitulo4" />
<TextView
android:id="@+id/tvTransacoes4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tvValor4"
android:layout_marginStart="7dp"
android:text="+0.00% ROI"
android:textColor="#8E8E8E"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvValor4"
app:layout_constraintVertical_bias="0.277" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -13,7 +13,7 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/adicionarCardView"
android:layout_width="374dp"
android:layout_height="379dp"
android:layout_height="match_parent"
android:layout_marginTop="24dp"
android:background="@drawable/cardview_background"
app:layout_constraintEnd_toEndOf="parent"
@@ -25,9 +25,10 @@
android:id="@+id/textView12"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="52dp"
android:layout_marginTop="50dp"
android:text="Metas Financeiras"
android:textSize="16sp"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.147"
app:layout_constraintStart_toStartOf="parent"
@@ -42,7 +43,7 @@
android:backgroundTint="@color/preto"
android:text="+ Nova Meta"
android:textSize="16sp"
app:cornerRadius="14sp"
app:cornerRadius="10sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.718"
app:layout_constraintStart_toEndOf="@+id/textView12"
@@ -63,12 +64,13 @@
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvMetas"
android:layout_width="match_parent"
android:layout_height="211dp"
android:layout_width="327dp"
android:layout_height="880dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/novaTransacaoButton" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="412dp"
android:layout_height="match_parent"
tools:context=".menu.TransacoesFragment">
<androidx.cardview.widget.CardView
@@ -32,6 +32,7 @@
android:layout_marginTop="32dp"
android:text="Transações"
android:textSize="25sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.501"
app:layout_constraintStart_toStartOf="parent"
@@ -39,25 +40,25 @@
<Button
android:id="@+id/novaTransacaoButton"
android:layout_width="120dp"
android:layout_height="54dp"
android:layout_marginStart="55dp"
android:layout_marginTop="10dp"
android:layout_width="160dp"
android:layout_height="55dp"
android:layout_marginStart="25sp"
android:layout_marginTop="20dp"
android:backgroundTint="@color/preto"
android:text="Nova Transação"
app:cornerRadius="14sp"
app:cornerRadius="10sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView12" />
<Button
android:id="@+id/escanearTransacaoButton"
android:layout_width="120dp"
android:layout_height="54dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="55dp"
android:layout_width="160dp"
android:layout_height="55dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="25dp"
android:backgroundTint="@color/preto"
android:text="Escanear Fatura"
app:cornerRadius="14sp"
app:cornerRadius="10sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView12" />
@@ -76,8 +77,8 @@
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvTransacoes"
android:layout_width="match_parent"
android:layout_height="211dp"
android:layout_width="378dp"
android:layout_height="863dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"