Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/navigation component #9

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -103,4 +103,8 @@ dependencies {

// Logging
implementation Deps.timber

// Navigation
implementation Deps.navigationFragment
implementation Deps.navigationUI
}
33 changes: 33 additions & 0 deletions app/src/main/java/pl/makimo/androidtemplate/ui/ConfirmFragment.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package pl.makimo.androidtemplate.ui

import android.content.Context
import android.net.Uri
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.navigation.findNavController
import kotlinx.android.synthetic.main.fragment_confirm.*

import pl.makimo.androidtemplate.R

class ConfirmFragment : Fragment() {

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? = inflater.inflate(R.layout.fragment_confirm, container, false)

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

initListeners()
}

private fun initListeners() {
done_btn.setOnClickListener {
it.findNavController().navigate(R.id.action_confirm_to_main)
}
}
}
18 changes: 18 additions & 0 deletions app/src/main/java/pl/makimo/androidtemplate/ui/HelpFragment.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package pl.makimo.androidtemplate.ui


import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup

import pl.makimo.androidtemplate.R

class HelpFragment : Fragment() {

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? = inflater.inflate(R.layout.fragment_help, container, false)
}
35 changes: 35 additions & 0 deletions app/src/main/java/pl/makimo/androidtemplate/ui/MainFragment.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package pl.makimo.androidtemplate.ui

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.navigation.findNavController
import kotlinx.android.synthetic.main.fragment_main.*
import pl.makimo.androidtemplate.R

class MainFragment : Fragment() {

override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) : View? = inflater.inflate(R.layout.fragment_main, container, false)

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

initListeners()
}

private fun initListeners() {
help_btn.setOnClickListener {
it.findNavController().navigate(R.id.action_main_to_help)
}

register_btn.setOnClickListener {
it.findNavController().navigate(R.id.action_main_to_register)
}
}
}
32 changes: 32 additions & 0 deletions app/src/main/java/pl/makimo/androidtemplate/ui/RegisterFragment.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package pl.makimo.androidtemplate.ui


import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.navigation.findNavController
import kotlinx.android.synthetic.main.fragment_register.*

import pl.makimo.androidtemplate.R

class RegisterFragment : Fragment() {

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? = inflater.inflate(R.layout.fragment_register, container, false)

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

initListeners()
}

private fun initListeners() {
next_btn.setOnClickListener {
it.findNavController().navigate(R.id.action_register_to_confirm)
}
}
}
6 changes: 6 additions & 0 deletions app/src/main/res/anim/slide_in_left.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="-100%" android:toXDelta="0%"
android:fromYDelta="0%" android:toYDelta="0%"
android:duration="100"/>
</set>
6 changes: 6 additions & 0 deletions app/src/main/res/anim/slide_in_right.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="100%" android:toXDelta="0%"
android:fromYDelta="0%" android:toYDelta="0%"
android:duration="100"/>
</set>
6 changes: 6 additions & 0 deletions app/src/main/res/anim/slide_out_left.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0%" android:toXDelta="-100%"
android:fromYDelta="0%" android:toYDelta="0%"
android:duration="100"/>
</set>
6 changes: 6 additions & 0 deletions app/src/main/res/anim/slide_out_right.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0%" android:toXDelta="100%"
android:fromYDelta="0%" android:toYDelta="0%"
android:duration="100"/>
</set>
31 changes: 18 additions & 13 deletions app/src/main/res/layout/activity_main.xml
Original file line number Diff line number Diff line change
@@ -1,16 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
tools:context=".MainActivity">

<TextView
android:text="@string/lorem"
android:layout_width="wrap_content"
android:id="@+id/lorem"
android:layout_height="wrap_content"/>
<fragment
android:id="@+id/navigation_host"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:navGraph="@navigation/navigation_graph">
</fragment>

</FrameLayout>

</androidx.constraintlayout.widget.ConstraintLayout>
15 changes: 15 additions & 0 deletions app/src/main/res/layout/fragment_confirm.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.ConfirmFragment">

<Button
android:id="@+id/done_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/done"/>

</FrameLayout>
14 changes: 14 additions & 0 deletions app/src/main/res/layout/fragment_help.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.HelpFragment">

<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/lorem"/>

</FrameLayout>
30 changes: 30 additions & 0 deletions app/src/main/res/layout/fragment_main.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.MainFragment">

<Button
android:id="@+id/help_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/help"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toTopOf="@+id/register_btn"/>

<Button
android:id="@+id/register_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/register"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/help_btn"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"/>

</androidx.constraintlayout.widget.ConstraintLayout>
15 changes: 15 additions & 0 deletions app/src/main/res/layout/fragment_register.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.RegisterFragment">

<Button
android:id="@+id/next_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/next"/>

</FrameLayout>
55 changes: 55 additions & 0 deletions app/src/main/res/navigation/navigation_graph.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="utf-8"?>
<navigation
android:id="@+id/nav_graph"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
app:startDestination="@id/destination_main">


<fragment
android:id="@+id/destination_main"
android:name="pl.makimo.androidtemplate.ui.MainFragment"
tools:layout="@layout/fragment_main">
<action
android:id="@+id/action_main_to_help"
app:destination="@id/destination_help"/>
<action
android:id="@+id/action_main_to_register"
app:destination="@id/destination_register"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"/>
</fragment>

<fragment
android:id="@+id/destination_help"
android:name="pl.makimo.androidtemplate.ui.HelpFragment"
android:label="fragment_help">
</fragment>

<fragment
android:id="@+id/destination_register"
android:name="pl.makimo.androidtemplate.ui.RegisterFragment"
android:label="fragment_register"
tools:layout="@layout/fragment_register">
<action
android:id="@+id/action_register_to_confirm"
app:destination="@id/destination_confirm"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"/>
</fragment>

<fragment
android:id="@+id/destination_confirm"
android:name="pl.makimo.androidtemplate.ui.ConfirmFragment"
android:label="fragment_confirm" tools:layout="@layout/fragment_confirm">
<action
android:id="@+id/action_confirm_to_main"
app:destination="@id/destination_main"
app:popUpTo="@+id/destination_main"
app:popUpToInclusive="true"
app:enterAnim="@anim/slide_in_left"
app:exitAnim="@anim/slide_out_right"/>
</fragment>

</navigation>
51 changes: 47 additions & 4 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,52 @@
<string name="app_name">Ponycorn</string>

<string name="lorem">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla in sodales est. Nam eget vehicula erat. Nulla nec nulla rhoncus, feugiat odio ut, pharetra elit. Donec laoreet lobortis metus, sit amet auctor sem volutpat ut. Nullam quis nunc sit amet lectus interdum luctus at eget neque. Cras dictum tristique commodo. Etiam et efficitur magna. Nulla consectetur id nunc mattis consequat. Nulla sollicitudin semper arcu eget sagittis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In hac habitasse platea dictumst. Praesent sit amet velit sed quam facilisis porta quis ac libero. Integer ultricies quam at sem venenatis, placerat dignissim enim efficitur. Vivamus volutpat eleifend purus at eleifend. Aliquam gravida ac libero posuere vestibulum. Donec tortor odio, dignissim vitae tincidunt eu, molestie ac libero.
Sed placerat ligula et nisl dignissim accumsan. Ut dui dui, ultricies a erat at, egestas commodo orci. Nullam fermentum dictum auctor. Proin orci lectus, pharetra et velit pretium, egestas egestas tortor. Duis gravida suscipit tempor. Nunc nec velit posuere, hendrerit sapien in, faucibus ligula. Fusce non est eget tellus vehicula tristique et sit amet metus. Praesent ante augue, commodo vitae pellentesque vel, semper sed felis. Suspendisse eget blandit leo. Ut interdum orci orci, ac finibus ipsum elementum at. Curabitur fringilla quam a nibh euismod euismod. Aliquam bibendum massa pretium eros venenatis, quis mollis tellus elementum. Nulla a nibh mi. Pellentesque sed ultrices odio. Vivamus auctor, ligula lobortis lacinia porta, sem quam maximus enim, eu euismod felis tortor sed est. Proin aliquet nibh eget auctor lacinia.
Fusce eget enim commodo, eleifend tortor non, fringilla lacus. Maecenas ex arcu, porttitor eget porta in, maximus eget diam. Fusce ipsum nunc, efficitur eget lorem ac, convallis hendrerit ex. Donec at eleifend leo, ac malesuada nisl. Vivamus sollicitudin arcu risus, ut mollis dui rhoncus eu. Cras suscipit odio diam, at suscipit purus ornare sit amet. Integer volutpat nunc nec leo mattis, id feugiat odio aliquam. Suspendisse mattis magna at mi mattis aliquet. Aliquam elementum ante at ex laoreet, in rhoncus tortor pretium. Ut feugiat, risus eget euismod aliquam, eros nibh aliquam mauris, sit amet dictum nisl magna in enim. Nam scelerisque ligula ante. Etiam a ultricies purus. Pellentesque scelerisque vehicula urna at tempus. Pellentesque erat elit, scelerisque sit amet nibh non, sagittis imperdiet nisl. Mauris magna tellus, placerat et risus quis, viverra vulputate enim. Proin convallis nulla a est tristique, in eleifend augue vehicula.
Mauris aliquet, elit eget vulputate tempor, quam tellus volutpat dui, id bibendum lectus nibh sed ipsum. Vivamus porttitor commodo dictum. Integer finibus viverra velit, eu laoreet metus tempor ut. Fusce gravida, arcu ut tincidunt mattis, eros dui facilisis tortor, in efficitur purus elit porttitor odio. Praesent ex dolor, mattis vitae diam sed, vulputate tempus neque. Maecenas ornare nisl metus. Cras ut varius urna, et malesuada leo."
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla in sodales est.
Nam eget vehicula erat. Nulla nec nulla rhoncus, feugiat odio ut, pharetra elit.
Donec laoreet lobortis metus, sit amet auctor sem volutpat ut. Nullam quis nunc
sit amet lectus interdum luctus at eget neque. Cras dictum tristique commodo.
Etiam et efficitur magna. Nulla consectetur id nunc mattis consequat. Nulla
sollicitudin semper arcu eget sagittis. Orci varius natoque penatibus et magnis
dis parturient montes, nascetur ridiculus mus. In hac habitasse platea dictumst.
Praesent sit amet velit sed quam facilisis porta quis ac libero. Integer
ultricies quam at sem venenatis, placerat dignissim enim efficitur. Vivamus
volutpat eleifend purus at eleifend. Aliquam gravida ac libero posuere
vestibulum. Donec tortor odio, dignissim vitae tincidunt eu, molestie ac libero.
Sed placerat ligula et nisl dignissim accumsan. Ut dui dui, ultricies a erat at,
egestas commodo orci. Nullam fermentum dictum auctor. Proin orci lectus, pharetra
et velit pretium, egestas egestas tortor. Duis gravida suscipit tempor. Nunc nec
velit posuere, hendrerit sapien in, faucibus ligula. Fusce non est eget tellus
vehicula tristique et sit amet metus. Praesent ante augue, commodo vitae
pellentesque vel, semper sed felis. Suspendisse eget blandit leo. Ut interdum
orci orci, ac finibus ipsum elementum at. Curabitur fringilla quam a nibh euismod
euismod. Aliquam bibendum massa pretium eros venenatis, quis mollis tellus
elementum. Nulla a nibh mi. Pellentesque sed ultrices odio. Vivamus auctor,
ligula lobortis lacinia porta, sem quam maximus enim, eu euismod felis tortor sed
est. Proin aliquet nibh eget auctor lacinia.
Fusce eget enim commodo, eleifend tortor non, fringilla lacus. Maecenas ex arcu,
porttitor eget porta in, maximus eget diam. Fusce ipsum nunc, efficitur eget
lorem ac, convallis hendrerit ex. Donec at eleifend leo, ac malesuada nisl.
Vivamus sollicitudin arcu risus, ut mollis dui rhoncus eu. Cras suscipit odio
diam, at suscipit purus ornare sit amet. Integer volutpat nunc nec leo mattis, id
feugiat odio aliquam. Suspendisse mattis magna at mi mattis aliquet. Aliquam
elementum ante at ex laoreet, in rhoncus tortor pretium. Ut feugiat, risus eget
euismod aliquam, eros nibh aliquam mauris, sit amet dictum nisl magna in enim.
Nam scelerisque ligula ante. Etiam a ultricies purus. Pellentesque scelerisque
vehicula urna at tempus. Pellentesque erat elit, scelerisque sit amet nibh non,
sagittis imperdiet nisl. Mauris magna tellus, placerat et risus quis, viverra
vulputate enim. Proin convallis nulla a est tristique, in eleifend augue
vehicula.
Mauris aliquet, elit eget vulputate tempor, quam tellus volutpat dui, id bibendum
lectus nibh sed ipsum. Vivamus porttitor commodo dictum. Integer finibus viverra
velit, eu laoreet metus tempor ut. Fusce gravida, arcu ut tincidunt mattis, eros
dui facilisis tortor, in efficitur purus elit porttitor odio. Praesent ex dolor,
mattis vitae diam sed, vulputate tempus neque. Maecenas ornare nisl metus. Cras
ut varius urna, et malesuada leo."
</string>

<string name="hello_blank_fragment">Hello blank fragment</string>
<string name="help">help</string>
<string name="next">next</string>
<string name="done">done</string>
<string name="register">register</string>
</resources>
Loading