Skip to content

Commit fdf92cf

Browse files
Spotlight added for homefragment
Solves #30: spotlight added for home fragment
2 parents 762ee9b + 4ae1d83 commit fdf92cf

File tree

14 files changed

+402
-3
lines changed

14 files changed

+402
-3
lines changed

app/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,4 +86,6 @@ dependencies {
8686
annotationProcessor "com.github.bumptech.glide:compiler:$versions.glide"
8787

8888
implementation "com.facebook.shimmer:shimmer:$versions.shimmer"
89+
90+
implementation "com.github.takusemba:spotlight:$versions.spotlight"
8991
}

app/src/main/java/com/github/code/gambit/ui/MainActivity.kt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ package com.github.code.gambit.ui
22

33
import android.os.Bundle
44
import android.util.Log
5+
import android.view.View
56
import androidx.appcompat.app.AppCompatActivity
7+
import androidx.core.view.get
68
import androidx.navigation.NavController
79
import androidx.navigation.fragment.NavHostFragment
810
import androidx.navigation.ui.NavigationUI
@@ -113,6 +115,22 @@ class MainActivity : AppCompatActivity() {
113115
}
114116
}
115117

118+
fun getHomeView(): View {
119+
// return binding.addFileButton
120+
val item = binding.bottomNavigation.menu.get(0)
121+
return item.actionView
122+
}
123+
124+
fun getAddFab(): View {
125+
return binding.addFileButton
126+
}
127+
128+
fun getProfileView(): View {
129+
// return binding.addFileButton
130+
val item = binding.bottomNavigation.menu.get(2)
131+
return item.actionView
132+
}
133+
116134
fun animateBottomNav(offset: Float) {
117135
if (this::_binding.isInitialized && offset.isFinite()) {
118136
binding.bottomLayout.animate().alpha(offset).scaleX(offset).scaleY(offset)

app/src/main/java/com/github/code/gambit/ui/fragment/HomeFragment.kt

Lines changed: 66 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ package com.github.code.gambit.ui.fragment
33
import android.os.Bundle
44
import android.os.Handler
55
import android.view.View
6+
import android.view.animation.DecelerateInterpolator
7+
import android.widget.FrameLayout
8+
import android.widget.TextView
69
import androidx.core.view.isVisible
710
import androidx.fragment.app.Fragment
811
import com.github.code.gambit.PreferenceManager
@@ -16,6 +19,11 @@ import com.github.code.gambit.utility.hide
1619
import com.github.code.gambit.utility.show
1720
import com.google.android.material.bottomsheet.BottomSheetBehavior
1821
import com.google.android.material.bottomsheet.BottomSheetBehavior.BottomSheetCallback
22+
import com.takusemba.spotlight.OnSpotlightListener
23+
import com.takusemba.spotlight.OnTargetListener
24+
import com.takusemba.spotlight.Spotlight
25+
import com.takusemba.spotlight.Target
26+
import com.takusemba.spotlight.shape.Circle
1927
import dagger.hilt.android.AndroidEntryPoint
2028
import javax.inject.Inject
2129

@@ -62,12 +70,15 @@ class HomeFragment : Fragment(R.layout.fragment_home) {
6270
{
6371
requireMainActivity().showBottomNav()
6472
binding.shimmerLayout.stopShimmer()
65-
binding.shimmerLayout.visibility = View.GONE
66-
binding.topContainer.visibility = View.VISIBLE
67-
binding.swipeRefresh.visibility = View.VISIBLE
73+
binding.shimmerLayout.hide()
74+
binding.topContainer.show()
75+
binding.swipeRefresh.show()
76+
binding.noFileIllustrationContainer.show()
6877
},
6978
5000
7079
)
80+
81+
Handler().postDelayed({ spotlight() }, 6000)
7182
}
7283

7384
private fun registerFilterComponents() {
@@ -89,6 +100,58 @@ class HomeFragment : Fragment(R.layout.fragment_home) {
89100
})
90101
}
91102

103+
private fun spotlight() {
104+
val targets = ArrayList<Target>()
105+
106+
val firstRoot = FrameLayout(requireContext())
107+
val first = layoutInflater.inflate(R.layout.home_first_spot, firstRoot)
108+
val firstTarget = Target.Builder()
109+
.setAnchor(requireMainActivity().getAddFab())
110+
.setShape(Circle(120f))
111+
.setOverlay(first)
112+
.setOnTargetListener(object : OnTargetListener { override fun onEnded() {} override fun onStarted() {} })
113+
.build()
114+
115+
val secondRoot = FrameLayout(requireContext())
116+
val second = layoutInflater.inflate(R.layout.home_second_spot, secondRoot)
117+
val secondTarget = Target.Builder()
118+
.setAnchor(binding.searchButton)
119+
.setShape(Circle(50f))
120+
.setOverlay(second)
121+
.setOnTargetListener(object : OnTargetListener { override fun onEnded() {} override fun onStarted() {} }).build()
122+
123+
val thirdTarget = Target.Builder()
124+
.setAnchor(binding.filterButton)
125+
.setShape(Circle(50f))
126+
.setOverlay(second)
127+
.setOnTargetListener(object : OnTargetListener { override fun onEnded() {} override fun onStarted() {} }).build()
128+
129+
targets.add(firstTarget)
130+
targets.add(secondTarget)
131+
targets.add(thirdTarget)
132+
133+
val spotlight = Spotlight.Builder(requireActivity())
134+
.setTargets(targets)
135+
.setBackgroundColorRes(R.color.spotlightBackground)
136+
.setDuration(1000L)
137+
.setAnimation(DecelerateInterpolator(2f))
138+
.setOnSpotlightListener(object : OnSpotlightListener { override fun onStarted() {} override fun onEnded() {} }).build()
139+
140+
spotlight.start()
141+
142+
val nextTarget = View.OnClickListener { spotlight.next() }
143+
144+
// val closeSpotlight = View.OnClickListener { spotlight.finish() }
145+
146+
first.findViewById<View>(R.id.next_button).setOnClickListener(nextTarget)
147+
second.findViewById<View>(R.id.next_button).setOnClickListener {
148+
spotlight.next()
149+
second.findViewById<TextView>(R.id.title_text).text = getString(R.string.use_filters)
150+
second.findViewById<TextView>(R.id.info_text).text = getString(R.string.or_you_can_filter_files_based_on_dates_they_were_uploaded)
151+
second.findViewById<View>(R.id.arrow).animate().rotation(105f).setDuration(500).start()
152+
}
153+
}
154+
92155
private fun showFilter() {
93156
requireMainActivity().animateBottomNav(0f)
94157
binding.overlay.show()
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="512dp"
3+
android:height="512dp"
4+
android:viewportWidth="362.044"
5+
android:viewportHeight="362.044">
6+
<path
7+
android:pathData="M193.626,3.672c-2.448,-4.896 -10.404,-4.896 -12.852,0c-20.808,37.944 -39.78,76.5 -50.796,118.116c-1.224,6.12 5.508,12.24 11.016,8.568c12.24,-8.568 22.644,-18.972 31.824,-31.212c-2.448,85.68 -14.076,174.42 6.12,258.876c1.224,6.12 11.627,4.896 11.015,-1.225c-11.015,-87.516 -2.447,-174.42 -1.224,-261.936c10.404,9.18 20.808,18.36 30.6,27.54c4.284,4.284 13.465,1.836 12.853,-5.508C227.285,76.5 213.821,38.556 193.626,3.672zM186.894,76.5c-3.672,-5.508 -14.076,-4.284 -14.076,4.284c0,0.612 0,1.224 0,1.224c-7.344,7.344 -14.076,14.688 -22.032,22.032c9.792,-28.152 22.032,-54.468 36.107,-80.784c12.24,23.868 21.42,48.348 26.316,74.664c-6.732,-6.12 -14.076,-12.24 -20.809,-18.972C191.178,76.5 188.729,75.888 186.894,76.5z"
8+
android:fillColor="#ffffff"/>
9+
</vector>
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="482.04443dp"
3+
android:height="401.88dp"
4+
android:viewportWidth="782.04443"
5+
android:viewportHeight="701.88">
6+
<path
7+
android:pathData="M400.51,1.53l-25.446,6.562L61.56,88.939 36.113,95.501A48.179,48.179 0,0 0,1.53 154.119L111.871,581.996a48.179,48.179 0,0 0,58.618 34.583l0.066,-0.017 364.265,-93.937 0.066,-0.017a48.179,48.179 0,0 0,34.583 -58.618l-110.341,-427.877A48.179,48.179 0,0 0,400.51 1.53Z"
8+
android:fillColor="#f2f2f2"/>
9+
<path
10+
android:pathData="M403.97,14.945l-30.139,7.772L69.712,101.144l-30.139,7.772a34.309,34.309 0,0 0,-24.628 41.743l110.341,427.877a34.309,34.309 0,0 0,41.743 24.627l0.066,-0.017 364.265,-93.937 0.066,-0.017a34.309,34.309 0,0 0,24.627 -41.743l-110.341,-427.877A34.309,34.309 0,0 0,403.97 14.945Z"
11+
android:fillColor="#fff"/>
12+
<path
13+
android:pathData="M381.212,153.503 L196.939,201.024a8.014,8.014 0,0 1,-4.002 -15.52l184.273,-47.52A8.014,8.014 0,0 1,381.212 153.503Z"
14+
android:fillColor="#f2f2f2"/>
15+
<path
16+
android:pathData="M419.977,171.439 L203.693,227.214a8.014,8.014 0,1 1,-4.002 -15.52l216.284,-55.775a8.014,8.014 0,0 1,4.002 15.52Z"
17+
android:fillColor="#f2f2f2"/>
18+
<path
19+
android:pathData="M411.48,270.877l-184.273,47.52a8.014,8.014 0,1 1,-4.002 -15.52l184.273,-47.52a8.014,8.014 0,1 1,4.002 15.52Z"
20+
android:fillColor="#f2f2f2"/>
21+
<path
22+
android:pathData="M450.245,288.813l-216.284,55.775a8.014,8.014 0,1 1,-4.002 -15.52l216.284,-55.775a8.014,8.014 0,0 1,4.002 15.52Z"
23+
android:fillColor="#f2f2f2"/>
24+
<path
25+
android:pathData="M441.749,388.25l-184.273,47.52a8.014,8.014 0,0 1,-4.002 -15.52l184.273,-47.52a8.014,8.014 0,0 1,4.002 15.52Z"
26+
android:fillColor="#f2f2f2"/>
27+
<path
28+
android:pathData="M480.514,406.186l-216.284,55.775a8.014,8.014 0,1 1,-4.002 -15.52l216.284,-55.775a8.014,8.014 0,0 1,4.002 15.52Z"
29+
android:fillColor="#f2f2f2"/>
30+
<path
31+
android:pathData="M165.481,249.749l-65.212,16.817a3.847,3.847 0,0 1,-4.681 -2.761L80.619,205.756a3.847,3.847 0,0 1,2.761 -4.681l65.212,-16.817a3.847,3.847 0,0 1,4.681 2.761l14.969,58.048A3.847,3.847 0,0 1,165.481 249.749Z"
32+
android:fillColor="#e6e6e6"/>
33+
<path
34+
android:pathData="M195.749,367.122l-65.212,16.817a3.847,3.847 0,0 1,-4.681 -2.761l-14.969,-58.048A3.847,3.847 0,0 1,113.648 318.449l65.212,-16.817a3.847,3.847 0,0 1,4.681 2.761l14.969,58.048A3.847,3.847 0,0 1,195.749 367.122Z"
35+
android:fillColor="#e6e6e6"/>
36+
<path
37+
android:pathData="M226.018,484.496l-65.212,16.817a3.847,3.847 0,0 1,-4.681 -2.761l-14.969,-58.048a3.847,3.847 0,0 1,2.761 -4.681l65.212,-16.817a3.847,3.847 0,0 1,4.681 2.761l14.969,58.048A3.847,3.847 0,0 1,226.018 484.496Z"
38+
android:fillColor="#e6e6e6"/>
39+
<path
40+
android:pathData="M654.659,109.992L278.34,109.992a48.179,48.179 0,0 0,-48.125 48.125L230.215,599.993a48.179,48.179 0,0 0,48.125 48.125L654.659,648.118a48.179,48.179 0,0 0,48.125 -48.125L702.784,158.117A48.179,48.179 0,0 0,654.659 109.992Z"
41+
android:fillColor="#e6e6e6"/>
42+
<path
43+
android:pathData="M654.659,123.846L278.34,123.846a34.309,34.309 0,0 0,-34.271 34.271L244.069,599.993a34.309,34.309 0,0 0,34.271 34.271L654.659,634.263a34.309,34.309 0,0 0,34.271 -34.271L688.93,158.117A34.309,34.309 0,0 0,654.659 123.846Z"
44+
android:fillColor="#fff"/>
45+
<path
46+
android:pathData="M694.194,614.03m-87.85,0a87.85,87.85 0,1 1,175.701 0a87.85,87.85 0,1 1,-175.701 0"
47+
android:fillColor="@color/secondary"/>
48+
<path
49+
android:pathData="M736.209,602.571L705.653,602.571L705.653,572.014a11.459,11.459 0,0 0,-22.917 0v30.557L652.179,602.571a11.459,11.459 0,0 0,0 22.917h30.557L682.735,656.045a11.459,11.459 0,1 0,22.917 0L705.653,625.488h30.557a11.459,11.459 0,0 0,0 -22.917Z"
50+
android:fillColor="#fff"/>
51+
<path
52+
android:pathData="M598.023,366.656L407.721,366.656a8.014,8.014 0,1 1,0 -16.028L598.023,350.627a8.014,8.014 0,0 1,0 16.028Z"
53+
android:fillColor="#e6e6e6"/>
54+
<path
55+
android:pathData="M631.081,393.703L407.721,393.703a8.014,8.014 0,1 1,0 -16.028L631.081,377.675a8.014,8.014 0,1 1,0 16.028Z"
56+
android:fillColor="#e6e6e6"/>
57+
<path
58+
android:pathData="M598.023,487.869L407.721,487.869a8.014,8.014 0,1 1,0 -16.028L598.023,471.841a8.014,8.014 0,0 1,0 16.028Z"
59+
android:fillColor="#e6e6e6"/>
60+
<path
61+
android:pathData="M631.081,514.917L407.721,514.917a8.014,8.014 0,1 1,0 -16.028L631.081,498.888a8.014,8.014 0,1 1,0 16.028Z"
62+
android:fillColor="#e6e6e6"/>
63+
<path
64+
android:pathData="M365.092,405.982L297.747,405.982a3.847,3.847 0,0 1,-3.843 -3.843L293.904,342.192a3.847,3.847 0,0 1,3.843 -3.843h67.346a3.847,3.847 0,0 1,3.843 3.843v59.947A3.847,3.847 0,0 1,365.092 405.982Z"
65+
android:fillColor="#e6e6e6"/>
66+
<path
67+
android:pathData="M365.092,527.195L297.747,527.195a3.847,3.847 0,0 1,-3.843 -3.843L293.904,463.405a3.847,3.847 0,0 1,3.843 -3.843h67.346a3.847,3.847 0,0 1,3.843 3.843v59.947A3.847,3.847 0,0 1,365.092 527.195Z"
68+
android:fillColor="#e6e6e6"/>
69+
<path
70+
android:pathData="M598.234,231.721L457.932,231.721a8.014,8.014 0,0 1,0 -16.028L598.234,215.693a8.014,8.014 0,0 1,0 16.028Z"
71+
android:fillColor="#ccc"/>
72+
<path
73+
android:pathData="M631.292,258.769L457.932,258.769a8.014,8.014 0,1 1,0 -16.028h173.36a8.014,8.014 0,0 1,0 16.028Z"
74+
android:fillColor="#ccc"/>
75+
<path
76+
android:pathData="M426.881,291.547L297.535,291.547a3.847,3.847 0,0 1,-3.843 -3.843L293.693,186.757a3.847,3.847 0,0 1,3.843 -3.843L426.881,182.914a3.847,3.847 0,0 1,3.843 3.843L430.724,287.704A3.847,3.847 0,0 1,426.881 291.547Z"
77+
android:fillColor="@color/secondary"/>
78+
</vector>
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="790dp"
3+
android:height="512.20807dp"
4+
android:viewportWidth="790"
5+
android:viewportHeight="512.20807">
6+
<path
7+
android:pathData="M720.563,510.693 L698,442.602s24.818,24.818 24.818,45.182l-4.455,-47.091s12.727,17.182 11.455,43.273S720.563,510.693 720.563,510.693Z"
8+
android:fillColor="#ccc"/>
9+
<path
10+
android:pathData="M236.021,448.693 L214,382.239s24.222,24.222 24.222,44.096l-4.347,-45.959s12.421,16.769 11.179,42.232S236.021,448.693 236.021,448.693Z"
11+
android:fillColor="#ccc"/>
12+
<path
13+
android:pathData="M579.726,479.359c0.038,43.715 -86.665,30.268 -192.809,30.36s-191.536,13.687 -191.573,-30.028 86.633,-53.297 192.777,-53.389S579.688,435.644 579.726,479.359Z"
14+
android:fillColor="#ccc"/>
15+
<path
16+
android:pathData="M0,509.693h790v2h-790z"
17+
android:fillColor="#3f3d56"/>
18+
<path
19+
android:pathData="M505.336,420.322l-13.877,0l-6.604,-53.525l20.481,0l0,53.525z"
20+
android:fillColor="#a0616a"/>
21+
<path
22+
android:pathData="M480.006,416.357H508.31a0,0 0,0 1,0 0V433.208a0,0 0,0 1,0 0H464.697a0,0 0,0 1,0 0v-1.541A15.309,15.309 0,0 1,480.006 416.357Z"
23+
android:fillColor="#2f2e41"/>
24+
<path
25+
android:pathData="M607.336,499.322l-13.877,0l-6.604,-53.525l20.481,0l0,53.525z"
26+
android:fillColor="#a0616a"/>
27+
<path
28+
android:pathData="M582.006,495.357H610.31a0,0 0,0 1,0 0V512.208a0,0 0,0 1,0 0H566.697a0,0 0,0 1,0 0v-1.541A15.309,15.309 0,0 1,582.006 495.357Z"
29+
android:fillColor="#2f2e41"/>
30+
<path
31+
android:pathData="M671.345,340.309A10.316,10.316 0,0 0,668.449 324.758l-32.23,-131.293L615.611,202.332l38.335,126.949a10.372,10.372 0,0 0,17.398 11.028Z"
32+
android:fillColor="#a0616a"/>
33+
<path
34+
android:pathData="M646.208,74.964a11.382,11.382 0,0 0,-17.415 1.152l-49.885,5.727 7.589,19.241 45.368,-8.491a11.444,11.444 0,0 0,14.344 -17.63Z"
35+
android:fillColor="#a0616a"/>
36+
<path
37+
android:pathData="M564,326.693l21.768,163.374 27.093,-5.578s-3.984,-118.982 9.562,-133.325S605,311.693 605,311.693Z"
38+
android:fillColor="#2f2e41"/>
39+
<path
40+
android:pathData="M573,281.693l-10,15s-77,-31.999 -77,19 -4.406,85.609 -6,88 18.438,8.594 28,7c0,0 11.797,-82.219 11,-87 0,0 75.534,37.033 89.877,33.846S626.609,343.068 629,336.693s-1,-57 -1,-57l-47.81,-14.59Z"
41+
android:fillColor="#2f2e41"/>
42+
<path
43+
android:pathData="M574.349,191.633l-2.85,-3.42s-31.924,-71.828 -19.382,-91.21 67.268,-22.233 68.978,-21.092 -4.085,15.943 -0.094,22.784c0,0 -42.394,9.191 -45.244,10.331s21.966,43.274 21.966,43.274l-2.85,25.653Z"
44+
android:fillColor="#575a89"/>
45+
<path
46+
android:pathData="M630.216,156.289S600.572,159.709 599.432,159.709s-1.71,-7.411 -1.71,-7.411l-26.223,35.914S558.58,292.403 562,290.693s66.505,8.112 67.075,3.551 -0.57,-27.363 1.14,-28.503 29.643,-71.828 29.643,-71.828 -2.85,-14.822 -12.541,-19.952S630.216,156.289 630.216,156.289Z"
47+
android:fillColor="#575a89"/>
48+
<path
49+
android:pathData="M650.738,184.222l9.121,9.691S673.411,305.273 666,308.693s-22,3 -22,3l-14.355,-52.793Z"
50+
android:fillColor="#575a89"/>
51+
<path
52+
android:pathData="M601.73,122.998m-26.239,0a26.239,26.239 0,1 1,52.478 0a26.239,26.239 0,1 1,-52.478 0"
53+
android:fillColor="#a0616a"/>
54+
<path
55+
android:pathData="M595.573,127.092c-0.354,-5.444 -7.223,-5.631 -12.679,-5.683s-11.978,0.143 -15.065,-4.355c-2.04,-2.973 -1.65,-7.1 0.035,-10.288s4.458,-5.639 7.185,-7.997c7.041,-6.089 14.298,-12.129 22.752,-16.027s18.36,-5.472 27.128,-2.343c10.77,3.843 25.329,23.626 26.587,34.992s-3.285,22.953 -10.942,31.446 -25.182,5.067 -36.211,8.088c6.705,-9.49 2.285,-26.733 -8.456,-31.164Z"
56+
android:fillColor="#2f2e41"/>
57+
<path
58+
android:pathData="M361.722,403.505m-62.989,0a62.989,62.989 0,1 1,125.979 0a62.989,62.989 0,1 1,-125.979 0"
59+
android:fillColor="@color/secondary"/>
60+
<path
61+
android:pathData="M319.656,336.039a45.159,45.159 0,0 1,-41.255 -26.786L178.449,84.162a59.83,59.83 0,1 1,111.87 -41.864l72.377,235.412a45.08,45.08 0,0 1,-43.04 58.33Z"
62+
android:fillColor="@color/secondary"/>
63+
</vector>
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:app="http://schemas.android.com/apk/res-auto"
4+
android:layout_width="match_parent"
5+
android:layout_height="match_parent">
6+
7+
<ImageView
8+
android:layout_width="wrap_content"
9+
android:layout_height="wrap_content"
10+
android:layout_marginBottom="104dp"
11+
android:src="@drawable/illus_add_file"
12+
app:layout_constraintBottom_toBottomOf="parent"
13+
app:layout_constraintEnd_toEndOf="parent"
14+
app:layout_constraintStart_toStartOf="parent"
15+
app:layout_constraintTop_toTopOf="parent"
16+
android:scaleX="0.6"
17+
android:scaleY="0.6"/>
18+
19+
</androidx.constraintlayout.widget.ConstraintLayout>

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

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,35 @@
8080

8181
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
8282

83+
<LinearLayout
84+
android:id="@+id/no_file_illustration_container"
85+
android:layout_width="wrap_content"
86+
android:layout_height="wrap_content"
87+
android:orientation="vertical"
88+
android:layout_centerInParent="true"
89+
android:visibility="gone">
90+
91+
<ImageView
92+
android:layout_width="200dp"
93+
android:layout_height="200dp"
94+
android:src="@drawable/illus_add_file"
95+
android:scaleType="fitXY"
96+
android:layout_gravity="center_horizontal"
97+
android:contentDescription="@string/illustration" />
98+
99+
<TextView
100+
android:layout_width="wrap_content"
101+
android:layout_height="wrap_content"
102+
android:text="@string/currently_you_dont_have_any_file_add_file"
103+
android:layout_gravity="center_horizontal"
104+
android:textAlignment="center"
105+
android:textSize="22sp"
106+
android:fontFamily="sans-serif"
107+
android:textColor="@color/black"
108+
android:layout_marginTop="@dimen/root_side_margin"/>
109+
110+
</LinearLayout>
111+
83112
<com.facebook.shimmer.ShimmerFrameLayout
84113
android:id="@+id/shimmer_layout"
85114
android:layout_width="match_parent"

0 commit comments

Comments
 (0)