Skip to content

Commit

Permalink
Improvements for SemiTransparentFragment.
Browse files Browse the repository at this point in the history
  • Loading branch information
terrakok committed Jul 20, 2021
1 parent 701feee commit b37a6c9
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import androidx.fragment.app.Fragment
import moxy.MvpAppCompatFragment
import java.lang.ref.WeakReference

abstract class BaseFragment : MvpAppCompatFragment() {
abstract class BaseFragment : MvpAppCompatFragment(), ChainScreen {
override fun onAttach(context: Context) {
super.onAttach(context)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,9 @@ import java.lang.ref.WeakReference

interface ChainHolder {
val chain: MutableList<WeakReference<Fragment>>
}

interface ChainScreen {
val name: String
val creationTime: Long
}
Original file line number Diff line number Diff line change
Expand Up @@ -75,20 +75,20 @@ class MainActivity : MvpAppCompatActivity(), ChainHolder {
}

private fun printScreensScheme() {
val fragments = ArrayList<SampleFragment>()
val fragments = ArrayList<ChainScreen>()
for (fragmentReference in chain) {
val fragment = fragmentReference.get()
if (fragment != null && fragment is SampleFragment) {
if (fragment != null && fragment is ChainScreen) {
fragments.add(fragment)
}
}
fragments.sortWith { f1, f2 ->
val t = f1.creationTime - f2.creationTime
if (t > 0) 1 else if (t < 0) -1 else 0
}
val keys = ArrayList<Int>()
val keys = ArrayList<String>()
for (fragment in fragments) {
keys.add(fragment.number)
keys.add(fragment.name)
}
screensSchemeTV.text = "Chain: $keys"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@ class SampleFragment : BaseFragment(), SampleView, BackButtonListener {
@ProvidePresenter
fun createSamplePresenter() = SamplePresenter(router, arguments!!.getInt(EXTRA_NUMBER))

val number: Int
get() = arguments!!.getInt(EXTRA_NUMBER)
val creationTime: Long
override val name: String
get() = arguments!!.getInt(EXTRA_NUMBER).toString()
override val creationTime: Long
get() = arguments!!.getLong(EXTRA_TIME, 0L)

override fun onCreate(savedInstanceState: Bundle?) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,29 +1,42 @@
package com.github.terrakok.cicerone.sample.ui.main

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import com.github.terrakok.cicerone.Router
import com.github.terrakok.cicerone.sample.R
import com.github.terrakok.cicerone.sample.SampleApplication
import com.github.terrakok.cicerone.sample.databinding.FragmentSampleBinding
import com.github.terrakok.cicerone.sample.databinding.FragmentSemitransparentBinding
import com.github.terrakok.cicerone.sample.ui.common.BackButtonListener
import moxy.MvpAppCompatFragment
import javax.inject.Inject

class SemiTransparentFragment : MvpAppCompatFragment(R.layout.fragment_semitransparent),
BackButtonListener {
class SemiTransparentFragment : BaseFragment(), BackButtonListener {
lateinit var binding: FragmentSemitransparentBinding

@Inject
lateinit var router: Router

override val name: String = "D"
override val creationTime: Long = System.currentTimeMillis()

override fun onCreate(savedInstanceState: Bundle?) {
SampleApplication.INSTANCE.appComponent.inject(this)
super.onCreate(savedInstanceState)
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
view.findViewById<Button>(R.id.back_button).setOnClickListener { onBackPressed() }
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
binding = FragmentSemitransparentBinding.inflate(inflater)
return binding.root
}

override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
binding.background.setOnClickListener { onBackPressed() }
binding.backButton.setOnClickListener { onBackPressed() }
}

override fun onBackPressed(): Boolean {
Expand Down
23 changes: 14 additions & 9 deletions sample/src/main/res/layout/fragment_semitransparent.xml
Original file line number Diff line number Diff line change
@@ -1,35 +1,40 @@
<?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:id="@+id/background"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/semitransparent"
tools:ignore="HardcodedText" >
android:clickable="true"
android:focusable="true"
tools:ignore="HardcodedText">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="40dp"
android:background="@color/accent"
android:orientation="vertical"
android:layout_margin="40dp">
android:padding="16dp">

<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="16dp"
android:textColor="@android:color/white"
android:textSize="16sp"
android:text="This is not a dialog.\n This is a regular screen."
/>
android:textColor="@android:color/white"
android:textSize="16sp" />

<Button
android:id="@+id/back_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="16dp"
android:minWidth="100dp"
android:text="Back"
android:textAllCaps="false"
android:textSize="20sp"/>
android:textSize="20sp" />
</LinearLayout>
</FrameLayout>

0 comments on commit b37a6c9

Please sign in to comment.