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:
92
apk_decompiled/resources/res/layout-land/fragment_about.xml
Normal file
92
apk_decompiled/resources/res/layout-land/fragment_about.xml
Normal 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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
120
apk_decompiled/resources/res/layout-land/fragment_contact.xml
Normal file
120
apk_decompiled/resources/res/layout-land/fragment_contact.xml
Normal 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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user