Primer paso de la investigacion. Se aportan el .apk, las carpetas con el apk extraido y el apk descompilado. El archivo API_DOCUMENTATION.md es un archivo donde se anotaran los descubrimientos del funcionamiento de la API, y los .py son scripts para probar la funcionalidad de la API con los métodos que vayamos encontrando. Finalmente, los archivos .js son scripts de Frida para extraer informacion de la APP durante la ejecucion.

This commit is contained in:
2025-12-04 13:59:54 +01:00
parent f2fd1c3bf5
commit e0133d2ca2
10432 changed files with 1019085 additions and 1 deletions

View File

@@ -0,0 +1,92 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView 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_height="match_parent">
<LinearLayout
android:orientation="vertical"
android:background="@color/black"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginBottom="@dimen/extra_vertical_margin">
<com.adif.elcanomovil.commonViews.HeaderView
android:id="@+id/header_view_about"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:paddingHorizontal="20dp">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/extra_vertical_margin"
android:src="@drawable/ic_adif_logo"
android:contentDescription="@string/content_description_logo"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<TextView
android:textAppearance="@style/TextMoreAdifTitle"
android:id="@+id/header_textview_about"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/extra_vertical_margin"
android:text="@string/about_header"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView"/>
<TextView
android:textAppearance="@style/TextMoreAdifMessage"
android:gravity="center_horizontal"
android:id="@+id/message_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/big_vertical_margin"
android:text="@string/about_message"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/header_textview_about"/>
<TextView
android:textColor="@color/colorAccent"
android:id="@+id/version_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/giant_vertical_margin"
android:layout_marginBottom="@dimen/extra_vertical_margin"
android:text="@string/about_version"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/conditions_button"/>
<TextView
android:id="@+id/terms_button"
android:layout_marginTop="@dimen/giant_vertical_margin"
android:text="@string/about_terms"
android:textAlignment="center"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/message_textview"
style="@style/MoreAdifButton"/>
<TextView
android:id="@+id/conditions_button"
android:layout_marginTop="@dimen/big_vertical_margin"
android:text="@string/about_conditions"
android:textAlignment="center"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/terms_button"
style="@style/MoreAdifButton"/>
<androidx.constraintlayout.widget.Guideline
android:orientation="vertical"
android:id="@+id/guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintGuide_percent="0.5"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>

View File

@@ -0,0 +1,89 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView 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_height="match_parent">
<LinearLayout
android:orientation="vertical"
android:background="@color/black"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/giant_vertical_margin">
<com.adif.elcanomovil.commonViews.HeaderView
android:id="@+id/header_view_about"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:paddingHorizontal="20dp">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/extra_vertical_margin"
android:src="@drawable/ic_adif_logo"
android:contentDescription="@string/content_description_logo"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<TextView
android:textAppearance="@style/TextMoreAdifTitle"
android:id="@+id/header_textview_about"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/extra_vertical_margin"
android:text="@string/accessibility_header"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView"/>
<TextView
android:textAppearance="@style/TextMoreAdifMessage"
android:gravity="center_horizontal"
android:id="@+id/message_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/big_vertical_margin"
android:text="@string/accessibility_message"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/header_textview_about"/>
<TextView
android:id="@+id/acerca_button"
android:layout_marginTop="@dimen/giant_vertical_margin"
android:text="@string/accessibility_acerca"
android:hint="@string/content_description_station_hint"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/message_textview"
style="@style/MoreAdifButton"/>
<TextView
android:id="@+id/declaration_button"
android:layout_marginTop="@dimen/giant_vertical_margin"
android:text="@string/accessibility_declaration"
android:textAlignment="center"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/acerca_button"
style="@style/MoreAdifButton"/>
<TextView
android:id="@+id/communications_button"
android:layout_marginTop="@dimen/big_vertical_margin"
android:text="@string/accessibility_communications"
android:textAlignment="center"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/declaration_button"
style="@style/MoreAdifButton"/>
<androidx.constraintlayout.widget.Guideline
android:orientation="vertical"
android:id="@+id/guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintGuide_percent="0.5"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
</androidx.core.widget.NestedScrollView>

View File

@@ -0,0 +1,21 @@
<?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:orientation="vertical"
android:id="@+id/bottom_nav_root"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.fragment.app.FragmentContainerView
android:id="@+id/bottom_nav_host_fragment"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottom_navigation_view"
android:background="@color/darkLight"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:itemIconTint="@color/bottom_nav_color"
app:itemTextColor="@color/bottom_nav_color"
app:menu="@menu/tabs_menu"/>
</LinearLayout>

View File

@@ -0,0 +1,78 @@
<?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:orientation="vertical"
android:background="@color/black"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.adif.elcanomovil.uiDepartures.views.StationHeaderView
android:id="@+id/station_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:isCercanias="true"
app:observation="false"
app:observationMessage=""
app:observationTitle=""
app:station=""/>
<androidx.core.widget.NestedScrollView
android:id="@+id/scrollable"
android:layout_width="match_parent"
android:layout_height="0dp"
android:fillViewport="true"
android:layout_weight="1">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.adif.elcanomovil.uiDepartures.views.OneWayCirculationHeaderView
android:gravity="center_vertical"
android:id="@+id/circulation_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/circulation_header_marginTop"
app:isCercanias="true"
app:isDepartures="true"/>
<FrameLayout
android:id="@+id/circulationsContainer"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/circulations"
android:background="@android:color/transparent"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:nestedScrollingEnabled="false"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/>
<TextView
android:textColor="@color/white"
android:gravity="center_vertical"
android:layout_gravity="bottom"
android:id="@+id/loadingMore"
android:background="@color/black"
android:padding="@dimen/big_horizontal_padding"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/circulation_loading_more"
style="@style/TextCirculationHeaderRegular"/>
</FrameLayout>
<com.adif.elcanomovil.commonViews.EmptyCirculationsView
android:id="@+id/empty"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:header="@string/circulation_no_results_title"
app:icon="@drawable/ic_search"
app:isLoading="false"
app:message="@string/circulation_no_results_message"/>
<com.adif.elcanomovil.commonViews.EmptyCirculationsView
android:id="@+id/loadingView"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:header="@string/circulation_loading_more"
app:icon="@drawable/ic_search"
app:isLoading="true"/>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</LinearLayout>

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView 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_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:background="@color/black"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.adif.elcanomovil.commonViews.HeaderView
android:id="@+id/header_view_contact"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/extra_vertical_margin"
android:src="@drawable/ic_adif_logo"
android:scaleType="fitCenter"
android:contentDescription="@string/content_description_logo"
android:layout_marginStart="48dp"
android:layout_marginEnd="48dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/header_view_contact"/>
<TextView
android:textAppearance="@style/TextMoreAdifTitle"
android:id="@+id/header_textview_contact"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/extra_vertical_margin"
android:text="@string/contact_info_message"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView"/>
<TextView
android:textAppearance="@style/TextMoreAdifSubTitle"
android:id="@+id/hours"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/big_vertical_margin"
android:text="@string/contact_info_24_hours"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/header_textview_contact"/>
<TextView
android:textColor="@color/white"
android:gravity="center_horizontal"
android:id="@+id/tv_web"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:text="@string/contact_web_label"
android:drawableTop="@drawable/ic_web"
android:drawablePadding="16dp"
android:scaleX="0.8"
android:scaleY="0.8"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/hours"
style="@style/TextMoreAdifMessage"/>
<TextView
android:id="@+id/tv_follow_us"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/giant_vertical_margin"
android:text="@string/contact_follow_label"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_web"
style="@style/TextMoreAdifSecondaryTitle"/>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/big_vertical_margin"
android:layout_marginBottom="@dimen/giant_vertical_margin"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_follow_us">
<ImageView
android:gravity="center_horizontal"
android:orientation="vertical"
android:id="@+id/iv_facebook"
android:layout_margin="8dp"
android:layout_marginTop="24dp"
android:src="@drawable/facebook"
app:layout_constraintEnd_toStartOf="@+id/iv_instagram"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
style="@style/MoreAdifImageButton"/>
<ImageView
android:gravity="center_horizontal"
android:orientation="vertical"
android:id="@+id/iv_instagram"
android:layout_margin="8dp"
android:layout_marginTop="24dp"
android:src="@drawable/instagram"
app:layout_constraintEnd_toStartOf="@+id/iv_twitter"
app:layout_constraintStart_toEndOf="@+id/iv_facebook"
app:layout_constraintTop_toTopOf="parent"
style="@style/MoreAdifImageButton"/>
<ImageView
android:gravity="center_horizontal"
android:orientation="vertical"
android:id="@+id/iv_twitter"
android:layout_margin="8dp"
android:layout_marginTop="24dp"
android:src="@drawable/twitter"
android:layout_marginEnd="40dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/iv_instagram"
app:layout_constraintTop_toTopOf="parent"
style="@style/MoreAdifImageButton"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>

View File

@@ -0,0 +1,24 @@
<?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:orientation="vertical"
android:background="@color/black"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.tabs.TabLayout
android:id="@+id/tab_layout"
android:visibility="gone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/default_padding"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
style="@style/TabLayout"/>
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/pager"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,26 @@
<?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:orientation="vertical"
android:background="@color/black"
android:paddingTop="@dimen/default_padding"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingStart="@dimen/default_padding"
android:paddingEnd="@dimen/default_padding">
<ImageView
android:layout_gravity="center_horizontal"
android:id="@+id/stationOptionIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/big_vertical_padding"
android:layout_marginBottom="@dimen/big_vertical_padding"
android:src="@drawable/ic_adif_logo"
android:contentDescription="@null"/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/options_recyclerView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="@dimen/big_vertical_padding"
android:layout_weight="1"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/>
</LinearLayout>

View File

@@ -0,0 +1,63 @@
<?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:orientation="vertical"
android:background="@color/black"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.tabs.TabLayout
android:id="@+id/tab_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/default_padding"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
style="@style/TabLayout"/>
<View
android:id="@+id/separator"
android:background="@color/lightGrey"
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_marginHorizontal="@dimen/small_padding"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tab_layout"/>
<TextView
android:ellipsize="end"
android:id="@+id/stations_station_name"
android:background="@color/darkLight"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_marginTop="@dimen/circulation_station_header_marginTop"
android:text="@string/select_station"
android:maxLines="1"
android:paddingHorizontal="@dimen/small_padding"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/separator"
style="@style/TextCirculationHeader.Station"/>
<ImageView
android:id="@+id/search"
android:background="@color/darkLight"
android:padding="8dp"
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/ic_search"
android:contentDescription="@string/content_description_icon_search_station"
app:layout_constraintBottom_toBottomOf="@+id/stations_station_name"
app:layout_constraintEnd_toEndOf="@+id/stations_station_name"
app:layout_constraintTop_toTopOf="@+id/stations_station_name"/>
<LinearLayout
android:orientation="vertical"
android:layout_width="0dp"
android:layout_height="0dp"
android:fillViewport="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/separator">
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.button.MaterialButtonToggleGroup xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="horizontal"
android:id="@+id/material_clock_period_toggle"
android:visibility="gone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:checkedButton="@+id/material_clock_period_am_button"
app:selectionRequired="true"
app:singleSelection="true">
<Button
android:id="@+id/material_clock_period_am_button"
android:layout_width="0dp"
android:text="@string/material_timepicker_am"
android:layout_weight="1"
android:insetTop="4dp"
android:insetBottom="4dp"
style="?attr/materialButtonOutlinedStyle"/>
<Button
android:id="@+id/material_clock_period_pm_button"
android:layout_width="0dp"
android:text="@string/material_timepicker_pm"
android:layout_weight="1"
android:insetTop="4dp"
android:insetBottom="4dp"
style="?attr/materialButtonOutlinedStyle"/>
</com.google.android.material.button.MaterialButtonToggleGroup>

View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/material_timepicker_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<androidx.constraintlayout.helper.widget.Flow
android:orientation="vertical"
android:id="@+id/material_clock_display_and_toggle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
app:constraint_referenced_ids="material_clock_display,material_clock_period_toggle"
app:flow_verticalGap="@dimen/material_clock_period_toggle_vertical_gap"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<include
android:id="@+id/material_clock_display"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
layout="@layout/material_clock_display"/>
<include
android:id="@+id/material_clock_period_toggle"
android:layout_width="0dp"
android:layout_height="wrap_content"
layout="@layout/material_clock_period_toggle_land"/>
<com.google.android.material.timepicker.ClockFaceView
android:id="@+id/material_clock_face"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/clock_face_margin_start"
app:layout_constraintStart_toEndOf="@+id/material_clock_display_and_toggle"
app:layout_constraintTop_toTopOf="parent"/>
</merge>

View File

@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent">
<LinearLayout
android:layout_gravity="start"
android:orientation="vertical"
android:id="@+id/mtrl_picker_header"
android:paddingLeft="@dimen/mtrl_calendar_header_content_padding"
android:paddingRight="@dimen/mtrl_calendar_header_content_padding"
android:paddingBottom="@dimen/mtrl_calendar_header_content_padding"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:paddingStart="@dimen/mtrl_calendar_header_content_padding"
android:paddingEnd="@dimen/mtrl_calendar_header_content_padding"
style="?attr/materialCalendarHeaderLayout">
<FrameLayout
android:id="@+id/mtrl_picker_header_title_and_selection"
android:paddingLeft="@dimen/mtrl_calendar_header_text_padding"
android:focusable="true"
android:focusableInTouchMode="true"
android:layout_width="@dimen/mtrl_calendar_landscape_header_width"
android:layout_height="0dp"
android:layout_weight="1"
android:paddingStart="@dimen/mtrl_calendar_header_text_padding">
<include layout="@layout/mtrl_picker_header_title_text"/>
<include layout="@layout/mtrl_picker_header_selection_text"/>
</FrameLayout>
<include layout="@layout/mtrl_picker_header_toggle"/>
</LinearLayout>
<View
android:layout_gravity="end"
android:layout_width="@dimen/mtrl_calendar_header_divider_thickness"
android:layout_height="match_parent"
style="?attr/materialCalendarHeaderDivider"/>
</merge>

View File

@@ -0,0 +1,87 @@
<?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:gravity="center_vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingEnd="@dimen/small_padding">
<androidx.constraintlayout.widget.Guideline
android:orientation="vertical"
android:id="@+id/guideline20"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintGuide_percent="@dimen/circulation_first_column_and_header_width_percentage"/>
<TextView
android:textSize="@dimen/default_text_size"
android:textColor="@color/yellow"
android:gravity="center"
android:id="@+id/circulationType"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="@string/departures_title"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/guideline20"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
style="@style/TextCirculationHeaderAccent"/>
<View
android:background="@color/yellow"
android:layout_width="0dp"
android:layout_height="4dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@+id/circulationType"
app:layout_constraintStart_toStartOf="@+id/circulationType"/>
<LinearLayout
android:gravity="center_vertical"
android:orientation="horizontal"
android:id="@+id/stations"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/small_padding"
android:layout_marginEnd="@dimen/small_padding"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/adif"
app:layout_constraintStart_toEndOf="@+id/guideline20"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:ellipsize="end"
android:id="@+id/station"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:maxLines="1"
android:layout_weight="1"
style="@style/TextCirculationHeader.Station"/>
<ImageView
android:id="@+id/indicator"
android:tag="indicator"
android:paddingLeft="@dimen/small_padding"
android:paddingRight="@dimen/small_padding"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_arrow_right"/>
<TextView
android:ellipsize="end"
android:id="@+id/station_to"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:maxLines="1"
android:layout_weight="1"
style="@style/TextCirculationHeader.Station"/>
</LinearLayout>
<ImageView
android:id="@+id/adif"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_adif_logo_completo"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/stations"
app:layout_constraintTop_toTopOf="parent"/>
<View
android:id="@+id/separator"
android:background="@color/lightGrey"
android:layout_width="0dp"
android:layout_height="1dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>