amigos melhora

This commit is contained in:
MeuNome
2026-04-30 10:38:13 +01:00
parent e38e791790
commit ba523f16ad
9 changed files with 667 additions and 324 deletions

View File

@@ -52,31 +52,33 @@
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
app:cardCornerRadius="16dp"
app:cardElevation="2dp">
android:layout_marginBottom="16dp"
app:cardCornerRadius="20dp"
app:cardBackgroundColor="@color/primary_purple"
app:cardElevation="4dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="20dp"
android:padding="24dp"
android:gravity="center">
<ImageView
android:id="@+id/ivLeagueBadge"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/ic_trophy_bronze"
android:layout_marginBottom="12dp"/>
android:layout_marginBottom="12dp"
app:tint="@color/white" />
<TextView
android:id="@+id/tvLeagueName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Divisão Bronze"
android:textColor="@color/text_primary"
android:textSize="22sp"
android:textColor="@color/white"
android:textSize="26sp"
android:textStyle="bold" />
<TextView
@@ -85,18 +87,19 @@
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="2 dias 14h restantes"
android:textColor="@color/text_secondary"
android:textColor="#E0E0E0"
android:textSize="14sp" />
<ProgressBar
android:id="@+id/pbWeeklyProgress"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="8dp"
android:layout_marginTop="16dp"
android:layout_height="12dp"
android:layout_marginTop="20dp"
android:max="100"
android:progress="60"
android:progressDrawable="@drawable/progress_bar_duo" />
android:progressTint="@color/reward_yellow"
android:progressBackgroundTint="#4DFFFFFF" />
</LinearLayout>
</androidx.cardview.widget.CardView>
@@ -105,59 +108,29 @@
android:id="@+id/tvLeagueObjective"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Fica no TOP 3 para subir para Prata"
android:text="🚀 Fica no TOP 3 para subir para Prata"
android:textAlignment="center"
android:textColor="@color/primary_purple"
android:textStyle="bold"
android:textSize="16sp"
android:layout_marginBottom="24dp"/>
<!-- 8. 👥 FILTRO DE RANKING -->
<com.google.android.material.button.MaterialButtonToggleGroup
android:id="@+id/toggleRankingFilter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="20dp"
app:singleSelection="true"
app:checkedButton="@+id/btnRankingGlobal">
<Button
android:id="@+id/btnRankingGlobal"
style="?attr/materialButtonOutlinedStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Global"
android:textSize="12sp"/>
<Button
android:id="@+id/btnRankingAmigos"
style="?attr/materialButtonOutlinedStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Amigos"
android:textSize="12sp"/>
</com.google.android.material.button.MaterialButtonToggleGroup>
<!-- 3. 📊 RANKING DA SEMANA -->
<LinearLayout
android:id="@+id/rankingContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:textSize="18sp"
android:layout_marginBottom="24dp"/>
<!-- 5. ⚡ PROGRESSO DO UTILIZADOR -->
<androidx.cardview.widget.CardView
android:id="@+id/cardUserProgress"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="24dp"
app:cardCornerRadius="16dp"
app:cardElevation="2dp">
app:cardElevation="2dp"
app:cardBackgroundColor="@color/white">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
android:padding="20dp"
android:gravity="center">
<TextView
android:id="@+id/tvUserRankingStatus"
@@ -166,19 +139,59 @@
android:text="Faltam 120 XP para entrares no TOP 3"
android:textColor="@color/text_primary"
android:textStyle="bold"
android:textSize="14sp"/>
android:textAlignment="center"
android:textSize="16sp"/>
<TextView
android:id="@+id/tvXPToNextPosition"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:layout_marginTop="8dp"
android:text="Diferença para o próximo: 45 XP"
android:textColor="@color/text_secondary"
android:textSize="12sp"/>
android:textAlignment="center"
android:textSize="14sp"/>
</LinearLayout>
</androidx.cardview.widget.CardView>
<!-- 8. 👥 FILTRO DE RANKING -->
<com.google.android.material.button.MaterialButtonToggleGroup
android:id="@+id/toggleRankingFilter"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="24dp"
app:singleSelection="true"
app:selectionRequired="true"
app:checkedButton="@+id/btnRankingGlobal">
<Button
android:id="@+id/btnRankingGlobal"
style="?attr/materialButtonOutlinedStyle"
android:layout_width="120dp"
android:layout_height="50dp"
android:text="Global"
android:textStyle="bold"
android:textSize="14sp"/>
<Button
android:id="@+id/btnRankingAmigos"
style="?attr/materialButtonOutlinedStyle"
android:layout_width="120dp"
android:layout_height="50dp"
android:text="Amigos"
android:textStyle="bold"
android:textSize="14sp"/>
</com.google.android.material.button.MaterialButtonToggleGroup>
<!-- 3. 📊 RANKING DA SEMANA -->
<LinearLayout
android:id="@+id/rankingContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginBottom="32dp"/>
<!-- 6. 🎁 RECOMPENSAS DA SEMANA -->
<TextView
android:layout_width="wrap_content"
@@ -187,40 +200,78 @@
android:textStyle="bold"
android:textSize="18sp"
android:textColor="@color/text_primary"
android:layout_marginBottom="12dp"/>
android:layout_marginBottom="16dp"/>
<androidx.cardview.widget.CardView
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="24dp"
app:cardCornerRadius="16dp"
app:cardElevation="1dp">
android:orientation="horizontal"
android:weightSum="3"
android:layout_marginBottom="32dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="12dp">
<TextView
<!-- 1º Lugar -->
<androidx.cardview.widget.CardView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginEnd="4dp"
app:cardCornerRadius="16dp"
app:cardBackgroundColor="#FFF8E1"
app:cardElevation="1dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="🥇 1º lugar: +300 XP + Badge Exclusiva"
android:padding="8dp"
android:textColor="@color/text_primary"/>
<TextView
android:orientation="vertical"
android:padding="16dp"
android:gravity="center">
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="🥇" android:textSize="32sp" android:layout_marginBottom="8dp"/>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="1º Lugar" android:textStyle="bold" android:textSize="14sp" android:textColor="#FF8F00"/>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="+300 XP\nBadge" android:textAlignment="center" android:textSize="12sp" android:textColor="#FF8F00"/>
</LinearLayout>
</androidx.cardview.widget.CardView>
<!-- 2º Lugar -->
<androidx.cardview.widget.CardView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginHorizontal="4dp"
app:cardCornerRadius="16dp"
app:cardBackgroundColor="#F5F5F5"
app:cardElevation="1dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="🥈 2º lugar: +200 XP"
android:padding="8dp"
android:textColor="@color/text_primary"/>
<TextView
android:orientation="vertical"
android:padding="16dp"
android:gravity="center">
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="🥈" android:textSize="28sp" android:layout_marginBottom="8dp"/>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="2º Lugar" android:textStyle="bold" android:textSize="14sp" android:textColor="#757575"/>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="+200 XP" android:textAlignment="center" android:textSize="12sp" android:textColor="#757575"/>
</LinearLayout>
</androidx.cardview.widget.CardView>
<!-- 3º Lugar -->
<androidx.cardview.widget.CardView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginStart="4dp"
app:cardCornerRadius="16dp"
app:cardBackgroundColor="#EFEBE9"
app:cardElevation="1dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="🥉 3º lugar: +100 XP"
android:padding="8dp"
android:textColor="@color/text_primary"/>
</LinearLayout>
</androidx.cardview.widget.CardView>
android:orientation="vertical"
android:padding="16dp"
android:gravity="center">
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="🥉" android:textSize="28sp" android:layout_marginBottom="8dp"/>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="3º Lugar" android:textStyle="bold" android:textSize="14sp" android:textColor="#8D6E63"/>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="+100 XP" android:textAlignment="center" android:textSize="12sp" android:textColor="#8D6E63"/>
</LinearLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>
<!-- 7. 📈 HISTÓRICO DE PERFORMANCE -->
<TextView
@@ -231,19 +282,21 @@
android:textAlignment="center"
android:textColor="@color/text_secondary"
android:textSize="14sp"
android:layout_marginBottom="32dp"/>
android:layout_marginBottom="32dp"
android:visibility="gone" />
<!-- 9. 🔘 BOTÃO DE ACÇÃO -->
<Button
android:id="@+id/btnEarnXpNow"
android:layout_width="match_parent"
android:layout_height="56dp"
android:text="Ganhar XP agora"
android:background="@drawable/button_primary"
android:layout_height="64dp"
android:text="Ganhar XP Agora"
android:backgroundTint="@color/primary_purple"
android:textColor="@color/white"
android:textSize="18sp"
android:textStyle="bold"
android:textAllCaps="false"
app:backgroundTint="@null"
app:cornerRadius="16dp"
android:layout_marginBottom="40dp"/>
</LinearLayout>

View File

@@ -305,16 +305,23 @@
android:textSize="20sp"
android:textStyle="bold" />
<LinearLayout
android:id="@+id/progressPathContainer"
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/card_duo"
android:elevation="2dp"
android:gravity="center_horizontal"
android:orientation="vertical"
android:paddingVertical="32dp"
android:layout_marginBottom="24dp" />
android:scrollbars="none"
android:layout_marginBottom="24dp">
<LinearLayout
android:id="@+id/progressPathContainer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/card_duo"
android:elevation="2dp"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingHorizontal="24dp"
android:paddingVertical="16dp" />
</HorizontalScrollView>
<!-- 6. 👥 MINI RANKING -->
<androidx.cardview.widget.CardView

View File

@@ -9,186 +9,360 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="20dp">
android:orientation="vertical">
<!-- 👤 HEADER -->
<!-- 👤 HEADER DO PERFIL -->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="24dp">
<androidx.cardview.widget.CardView
android:id="@+id/cardAvatar"
android:layout_width="80dp"
android:layout_height="80dp"
app:cardCornerRadius="40dp"
app:cardElevation="2dp">
<ImageView
android:id="@+id/ivProfileAvatar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@drawable/ic_nav_profile" />
</androidx.cardview.widget.CardView>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toEndOf="@id/cardAvatar"
android:layout_marginStart="16dp"
android:layout_centerVertical="true"
android:orientation="vertical">
<TextView
android:id="@+id/tvProfileName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Carregando..."
android:textColor="@color/text_primary"
android:textSize="22sp"
android:textStyle="bold" />
<TextView
android:id="@+id/tvProfileTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Iniciante de Foco"
android:textColor="@color/primary_purple"
android:textSize="14sp"
android:textStyle="bold" />
<TextView
android:id="@+id/tvProfileBio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sem bio definida."
android:textColor="@color/text_secondary"
android:textSize="12sp"
android:layout_marginTop="4dp" />
</LinearLayout>
android:background="@color/primary_purple"
android:paddingTop="32dp"
android:paddingBottom="24dp"
android:paddingHorizontal="20dp"
android:clipToPadding="false">
<ImageButton
android:id="@+id/btnEditProfile"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentEnd="true"
android:layout_alignParentTop="true"
android:background="?attr/selectableItemBackgroundBorderless"
android:src="@drawable/ic_settings"
app:tint="@color/text_secondary" />
</RelativeLayout>
app:tint="@color/white" />
<!-- 📊 ESTATÍSTICAS PRINCIPAIS -->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Estatísticas"
android:textStyle="bold"
android:textSize="18sp" />
<TextView
android:id="@+id/btnViewStatsDetails"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:text="Ver detalhes"
android:textColor="@color/primary_purple"
android:textStyle="bold" />
</RelativeLayout>
<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="3"
android:layout_marginBottom="24dp">
<include layout="@layout/item_stat_small" android:id="@+id/statXP" />
<include layout="@layout/item_stat_small" android:id="@+id/statStreak" />
<include layout="@layout/item_stat_small" android:id="@+id/statLevel" />
<include layout="@layout/item_stat_small" android:id="@+id/statTasks" />
<include layout="@layout/item_stat_small" android:id="@+id/statFocusTime" />
<include layout="@layout/item_stat_small" android:id="@+id/statSessions" />
</GridLayout>
<!-- 🏆 CONQUISTAS (Badges) -->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Conquistas"
android:textStyle="bold"
android:textSize="18sp" />
<TextView
android:id="@+id/btnViewAllBadges"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:text="Ver todas"
android:textColor="@color/primary_purple"
android:textStyle="bold" />
</RelativeLayout>
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="24dp"
app:cardCornerRadius="16dp"
app:cardElevation="1dp">
<GridLayout
android:id="@+id/badgesGrid"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="4"
android:padding="16dp"
android:gravity="center">
<!-- Badges will be added here -->
</GridLayout>
</androidx.cardview.widget.CardView>
android:layout_marginTop="16dp"
android:gravity="center"
android:orientation="vertical">
<!-- 👥 AMIGOS -->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Amigos"
android:textStyle="bold"
android:textSize="18sp" />
<TextView
android:id="@+id/btnManageFriends"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:text="Gerir"
android:textColor="@color/primary_purple"
android:textStyle="bold" />
<androidx.cardview.widget.CardView
android:id="@+id/cardAvatar"
android:layout_width="100dp"
android:layout_height="100dp"
app:cardCornerRadius="50dp"
app:cardElevation="4dp"
android:layout_marginBottom="12dp">
<ImageView
android:id="@+id/ivProfileAvatar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@drawable/ic_nav_profile" />
</androidx.cardview.widget.CardView>
<TextView
android:id="@+id/tvProfileName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Carregando..."
android:textColor="@color/white"
android:textSize="24sp"
android:textStyle="bold" />
<TextView
android:id="@+id/tvProfileHandle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@username"
android:textColor="#E0E0E0"
android:textSize="14sp"
android:layout_marginTop="2dp"/>
<TextView
android:id="@+id/tvProfileSince"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Aqui desde 2024"
android:textColor="#C0C0C0"
android:textSize="12sp"
android:layout_marginTop="4dp"/>
<TextView
android:id="@+id/tvProfileBio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sem bio definida."
android:textColor="#E0E0E0"
android:textSize="14sp"
android:gravity="center"
android:layout_marginTop="8dp" />
</LinearLayout>
</RelativeLayout>
<!-- MAIN CONTENT AREA -->
<LinearLayout
android:id="@+id/friendsListContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginBottom="24dp"/>
android:padding="20dp">
<!-- 🔘 BOTÕES DE ACÇÃO -->
<Button
android:id="@+id/btnLogout"
android:layout_width="match_parent"
android:layout_height="56dp"
android:text="Terminar Sessão"
android:backgroundTint="@color/error_red"
android:textColor="@color/white"
android:layout_marginBottom="40dp"/>
<!-- 📊 ESTATÍSTICAS PRINCIPAIS (Em linha) -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="4"
android:layout_marginBottom="24dp">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"
android:gravity="center">
<TextView
android:id="@+id/tvStatTopXP"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:textStyle="bold"
android:textSize="18sp"
android:textColor="@color/text_primary"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="XP"
android:textSize="12sp"
android:textColor="@color/text_secondary"/>
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"
android:gravity="center">
<TextView
android:id="@+id/tvStatFollowing"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:textStyle="bold"
android:textSize="18sp"
android:textColor="@color/text_primary"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="A seguir"
android:textSize="12sp"
android:textColor="@color/text_secondary"/>
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"
android:gravity="center">
<TextView
android:id="@+id/tvStatFollowers"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:textStyle="bold"
android:textSize="18sp"
android:textColor="@color/text_primary"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Seguidores"
android:textSize="12sp"
android:textColor="@color/text_secondary"/>
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"
android:gravity="center">
<TextView
android:id="@+id/tvStatActiveDays"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:textStyle="bold"
android:textSize="18sp"
android:textColor="@color/text_primary"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Dias ativos"
android:textSize="12sp"
android:textColor="@color/text_secondary"/>
</LinearLayout>
</LinearLayout>
<!-- MAIN BUTTON -->
<Button
android:id="@+id/btnAddFriends"
android:layout_width="match_parent"
android:layout_height="56dp"
android:text="Adicionar Amigos"
android:backgroundTint="@color/primary_purple"
android:textColor="@color/white"
android:textStyle="bold"
app:cornerRadius="12dp"
android:layout_marginBottom="32dp"/>
<!-- VISÃO GERAL -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="VISÃO GERAL"
android:textStyle="bold"
android:textSize="16sp"
android:textColor="@color/text_secondary"
android:layout_marginBottom="12dp" />
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="none"
android:layout_marginBottom="32dp">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingEnd="20dp">
<include layout="@layout/item_stat_small"
android:id="@+id/statStreak"
android:layout_width="100dp"
android:layout_height="wrap_content" />
<include layout="@layout/item_stat_small"
android:id="@+id/statLeague"
android:layout_width="100dp"
android:layout_height="wrap_content" />
<include layout="@layout/item_stat_small"
android:id="@+id/statXP"
android:layout_width="100dp"
android:layout_height="wrap_content" />
<include layout="@layout/item_stat_small"
android:id="@+id/statFocusTime"
android:layout_width="100dp"
android:layout_height="wrap_content" />
</LinearLayout>
</HorizontalScrollView>
<!-- 👥 AMIGOS -->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="AMIGOS"
android:textStyle="bold"
android:textSize="16sp"
android:textColor="@color/text_secondary"
android:layout_centerVertical="true"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:orientation="horizontal"
android:gravity="center_vertical">
<TextView
android:id="@+id/btnViewAllFriends"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="VER TODOS"
android:textColor="@color/primary_purple"
android:textStyle="bold"
android:textSize="12sp"
android:padding="8dp"/>
<TextView
android:id="@+id/btnFindFriends"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="+"
android:textColor="@color/primary_purple"
android:textSize="24sp"
android:textStyle="bold"
android:padding="8dp"
android:layout_marginStart="8dp"
android:background="?attr/selectableItemBackgroundBorderless" />
</LinearLayout>
</RelativeLayout>
<LinearLayout
android:id="@+id/friendsListContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginBottom="32dp"/>
<!-- 🏆 MEDALHAS -->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="MEDALHAS"
android:textStyle="bold"
android:textSize="16sp"
android:textColor="@color/text_secondary"
android:layout_centerVertical="true"/>
<TextView
android:id="@+id/btnViewAllBadges"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:text="&gt;"
android:textColor="@color/text_secondary"
android:textSize="20sp"
android:textStyle="bold"
android:padding="8dp"
android:background="?attr/selectableItemBackgroundBorderless" />
</RelativeLayout>
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="32dp"
app:cardCornerRadius="16dp"
app:cardElevation="1dp"
app:cardBackgroundColor="@color/white">
<GridLayout
android:id="@+id/badgesGrid"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="4"
android:padding="16dp"
android:gravity="center">
<!-- Badges will be added here -->
</GridLayout>
</androidx.cardview.widget.CardView>
<!-- 🔘 BOTÕES DE ACÇÃO -->
<Button
android:id="@+id/btnLogout"
android:layout_width="match_parent"
android:layout_height="56dp"
android:text="Terminar Sessão"
android:backgroundTint="@color/background_light"
android:textColor="@color/error_red"
app:strokeColor="@color/error_red"
app:strokeWidth="1dp"
app:cornerRadius="12dp"
android:layout_marginBottom="40dp"/>
</LinearLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>

View File

@@ -1,67 +1,71 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="vertical">
android:gravity="center_vertical"
android:orientation="horizontal">
<View
android:id="@+id/topConnector"
android:layout_width="4dp"
android:layout_height="20dp"
android:id="@+id/leftConnector"
android:layout_width="16dp"
android:layout_height="4dp"
android:background="@color/border_color" />
<FrameLayout
android:id="@+id/nodeContainer"
android:layout_width="80dp"
android:layout_height="80dp">
<!-- Progress Ring (Outer) -->
<ProgressBar
android:id="@+id/nodeProgress"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:max="100"
android:progress="0"
android:progressDrawable="@drawable/node_progress_ring" />
<!-- Base Circle (Inner) -->
<View
android:id="@+id/nodeCircle"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="center"
android:background="@drawable/node_circle_bg" />
<!-- Icon or Initial (Optional) -->
<TextView
android:id="@+id/nodeDayInitial"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="S"
android:textColor="@color/text_secondary"
android:textSize="18sp"
android:textStyle="bold" />
</FrameLayout>
<TextView
android:id="@+id/nodeDayLabel"
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="SEG"
android:textColor="@color/text_secondary"
android:textSize="12sp"
android:textStyle="bold" />
android:gravity="center"
android:orientation="vertical">
<FrameLayout
android:id="@+id/nodeContainer"
android:layout_width="48dp"
android:layout_height="48dp">
<ProgressBar
android:id="@+id/nodeProgress"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:max="100"
android:progress="0"
android:visibility="gone"
android:progressDrawable="@drawable/node_progress_ring" />
<View
android:id="@+id/nodeCircle"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="center"
android:background="@drawable/node_circle_bg" />
<TextView
android:id="@+id/nodeDayInitial"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="S"
android:textColor="@color/text_secondary"
android:textSize="16sp"
android:textStyle="bold" />
</FrameLayout>
<TextView
android:id="@+id/nodeDayLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:text="SEG"
android:visibility="gone"
android:textColor="@color/text_secondary"
android:textSize="10sp"
android:textStyle="bold" />
</LinearLayout>
<View
android:id="@+id/bottomConnector"
android:layout_width="4dp"
android:layout_height="20dp"
android:id="@+id/rightConnector"
android:layout_width="16dp"
android:layout_height="4dp"
android:background="@color/border_color" />
</LinearLayout>