Skip to content

Commit b8caddb

Browse files
anhanh11001iamareebjamal
authored andcommitted
fix: about event view on collapsing layout (#1490)
* Summary Change: fix about event view on collapsing layout Details: - Load event image into the view - Set title bar to event name or "" when appBarLayout is collapsed or expaned Fixes: #1488 * Small Change: Reduce thisActivity variable cast Details: - Reduce thisActivity variable cast - Remove unused code - Set fitSystemWindows to avoid making extra white space above action bar and below status bar
1 parent 90c96bf commit b8caddb

File tree

4 files changed

+45
-43
lines changed

4 files changed

+45
-43
lines changed

app/src/main/java/org/fossasia/openevent/general/about/AboutEventFragment.kt

Lines changed: 21 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,21 @@ import android.view.LayoutInflater
55
import android.view.MenuItem
66
import android.view.View
77
import android.view.ViewGroup
8+
import androidx.appcompat.app.AppCompatActivity
89
import androidx.core.view.isVisible
910
import androidx.fragment.app.Fragment
1011
import androidx.lifecycle.Observer
1112
import androidx.navigation.fragment.navArgs
1213
import com.google.android.material.appbar.AppBarLayout
1314
import com.google.android.material.snackbar.Snackbar
15+
import com.squareup.picasso.Picasso
1416
import kotlinx.android.synthetic.main.fragment_about_event.view.appBar
1517
import kotlinx.android.synthetic.main.fragment_about_event.view.progressBarAbout
1618
import kotlinx.android.synthetic.main.fragment_about_event.view.aboutEventContent
1719
import kotlinx.android.synthetic.main.fragment_about_event.view.aboutEventDetails
1820
import kotlinx.android.synthetic.main.fragment_about_event.view.eventName
1921
import kotlinx.android.synthetic.main.fragment_about_event.view.detailsHeader
20-
import kotlinx.android.synthetic.main.fragment_about_event.view.aboutEventCollapsingLayout
22+
import kotlinx.android.synthetic.main.fragment_about_event.view.aboutEventImage
2123
import org.fossasia.openevent.general.R
2224
import org.fossasia.openevent.general.event.Event
2325
import org.fossasia.openevent.general.event.EventUtils
@@ -26,12 +28,10 @@ import org.fossasia.openevent.general.utils.stripHtml
2628
import org.koin.androidx.viewmodel.ext.android.viewModel
2729
import org.fossasia.openevent.general.utils.Utils.setToolbar
2830

29-
class AboutEventFragment : Fragment(), AppBarLayout.OnOffsetChangedListener {
31+
class AboutEventFragment : Fragment() {
3032
private lateinit var rootView: View
3133
private val aboutEventViewModel by viewModel<AboutEventViewModel>()
32-
private var isHideToolbarView: Boolean = false
3334
private lateinit var eventExtra: Event
34-
private var title: String = ""
3535
private val safeArgs: AboutEventFragmentArgs by navArgs()
3636

3737
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
@@ -46,8 +46,6 @@ class AboutEventFragment : Fragment(), AppBarLayout.OnOffsetChangedListener {
4646
loadEvent(it)
4747
})
4848

49-
rootView.appBar.addOnOffsetChangedListener(this)
50-
5149
aboutEventViewModel.error
5250
.nonNull()
5351
.observe(viewLifecycleOwner, Observer {
@@ -67,30 +65,29 @@ class AboutEventFragment : Fragment(), AppBarLayout.OnOffsetChangedListener {
6765

6866
private fun loadEvent(event: Event) {
6967
eventExtra = event
70-
title = eventExtra.name
7168
rootView.aboutEventContent.text = event.description?.stripHtml()
7269
val startsAt = EventUtils.getEventDateTime(event.startsAt, event.timezone)
7370
val endsAt = EventUtils.getEventDateTime(event.endsAt, event.timezone)
71+
7472
rootView.aboutEventDetails.text = EventUtils.getFormattedDateTimeRangeBulleted(startsAt, endsAt)
7573
rootView.eventName.text = event.name
76-
}
77-
78-
override fun onOffsetChanged(appBarLayout: AppBarLayout, verticalOffset: Int) {
79-
val maxScroll = appBarLayout.totalScrollRange
80-
val percentage = Math.abs(verticalOffset).toFloat() / maxScroll.toFloat()
74+
Picasso.get()
75+
.load(event.originalImageUrl)
76+
.placeholder(R.drawable.header)
77+
.into(rootView.aboutEventImage)
8178

82-
if (percentage == 1f && isHideToolbarView) {
83-
// Collapsed
84-
rootView.detailsHeader.visibility = View.GONE
85-
rootView.aboutEventCollapsingLayout.title = title
86-
isHideToolbarView = !isHideToolbarView
87-
}
88-
if (percentage < 1f && !isHideToolbarView) {
89-
// Not Collapsed
90-
rootView.detailsHeader.visibility = View.VISIBLE
91-
rootView.aboutEventCollapsingLayout.title = " "
92-
isHideToolbarView = !isHideToolbarView
93-
}
79+
rootView.appBar.addOnOffsetChangedListener(AppBarLayout.OnOffsetChangedListener { appBarLayout, offset ->
80+
val thisActivity = activity
81+
if (thisActivity is AppCompatActivity) {
82+
if (Math.abs(offset) == appBarLayout.getTotalScrollRange()) {
83+
rootView.detailsHeader.isVisible = false
84+
thisActivity.supportActionBar?.title = event.name
85+
} else {
86+
rootView.detailsHeader.isVisible = true
87+
thisActivity.supportActionBar?.title = ""
88+
}
89+
}
90+
})
9491
}
9592

9693
override fun onOptionsItemSelected(item: MenuItem): Boolean {
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<shape xmlns:android="http://schemas.android.com/apk/res/android">
3+
<gradient
4+
android:angle="90"
5+
android:endColor="#00000000"
6+
android:startColor="#FF000000"/>
7+
</shape>

app/src/main/res/layout/fragment_about_event.xml

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
1+
<androidx.coordinatorlayout.widget.CoordinatorLayout
2+
xmlns:android="http://schemas.android.com/apk/res/android"
23
xmlns:app="http://schemas.android.com/apk/res-auto"
34
xmlns:tools="http://schemas.android.com/tools"
4-
android:id="@+id/aboutEventCoordLayout"
55
android:layout_width="match_parent"
66
android:layout_height="match_parent"
7-
android:orientation="vertical"
8-
android:fitsSystemWindows="true">
7+
android:fitsSystemWindows="false">
98

109
<com.google.android.material.appbar.AppBarLayout
1110
android:id="@+id/appBar"
@@ -28,15 +27,14 @@
2827
android:layout_height="wrap_content"
2928
android:layout_gravity="center" />
3029

31-
<FrameLayout
30+
<androidx.appcompat.widget.AppCompatImageView
31+
android:id="@+id/aboutEventImage"
3232
android:layout_width="match_parent"
33-
android:layout_height="@dimen/collapsing_toolbar_height">
34-
35-
<View
36-
android:layout_width="match_parent"
37-
android:layout_height="match_parent"
38-
android:background="@android:color/white" />
39-
</FrameLayout>
33+
android:layout_height="match_parent"
34+
android:scaleType="centerCrop"
35+
android:foreground="@drawable/scrim_shape"
36+
app:layout_collapseMode="parallax"
37+
app:srcCompat="@drawable/header" />
4038

4139
<LinearLayout
4240
android:id="@+id/detailsHeader"
@@ -51,7 +49,7 @@
5149
android:id="@+id/eventName"
5250
android:layout_width="wrap_content"
5351
android:layout_height="wrap_content"
54-
android:textColor="@android:color/black"
52+
android:textColor="@android:color/white"
5553
android:textSize="@dimen/text_size_extra_large"
5654
tools:text="New York Event" />
5755

@@ -60,7 +58,7 @@
6058
android:layout_width="wrap_content"
6159
android:layout_height="wrap_content"
6260
android:paddingBottom="@dimen/padding_small"
63-
android:textColor="@android:color/black"
61+
android:textColor="@android:color/white"
6462
android:textSize="@dimen/text_size_large"
6563
tools:text="Thu, Jun 14 - Sat, Jun 23 | 8:00 AM" />
6664

@@ -90,14 +88,14 @@
9088

9189
<TextView
9290
android:id="@+id/aboutEventContent"
93-
android:layout_width="wrap_content"
91+
android:layout_width="match_parent"
9492
android:layout_height="wrap_content"
9593
android:layout_marginTop="@dimen/layout_margin_medium"
9694
android:padding="@dimen/padding_medium"
9795
android:textColor="@color/black"
96+
android:textSize="@dimen/text_size_medium"
9897
tools:text="Lorem ipsum ipsum ipsum " />
9998

10099
</androidx.cardview.widget.CardView>
101-
102100
</androidx.core.widget.NestedScrollView>
103-
</LinearLayout>
101+
</androidx.coordinatorlayout.widget.CoordinatorLayout>

app/src/main/res/values/dimens.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,8 @@
7575
<dimen name="event_details_divider">1.2dp</dimen>
7676
<dimen name="divider_margin_bottom">20dp</dimen>
7777
<dimen name="divider_margin_top">12dp</dimen>
78-
<dimen name="collapsing_toolbar_height">220dp</dimen>
79-
<dimen name="details_header_margin_top">40dp</dimen>
78+
<dimen name="collapsing_toolbar_height">320dp</dimen>
79+
<dimen name="details_header_margin_top">100dp</dimen>
8080
<dimen name="event_name_divider_height">2dp</dimen>
8181
<dimen name="event_name_divider_width">200dp</dimen>
8282
<dimen name="logo_icon_width">40dp</dimen>

0 commit comments

Comments
 (0)