Skip to content

Commit 09ed722

Browse files
committed
add shimmering
Signed-off-by: alperozturk <[email protected]>
1 parent 64b8778 commit 09ed722

File tree

2 files changed

+184
-143
lines changed

2 files changed

+184
-143
lines changed

app/src/main/java/com/owncloud/android/ui/fragment/FileDetailSharingFragment.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,8 +158,12 @@ public void onCreate(@Nullable Bundle savedInstanceState) {
158158
shareRepository.refreshSharesForFile(file.getRemotePath(), () -> {
159159
refreshCapabilitiesFromDB();
160160
refreshSharesFromDB();
161+
binding.shimmerLayout.setVisibility(View.GONE);
162+
binding.shareContainer.setVisibility(View.VISIBLE);
161163
return Unit.INSTANCE;
162164
}, () -> {
165+
binding.shimmerLayout.setVisibility(View.GONE);
166+
binding.shareContainer.setVisibility(View.VISIBLE);
163167
DisplayUtils.showSnackMessage(getView(), R.string.error_fetching_sharees);
164168
return Unit.INSTANCE;
165169
});

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

Lines changed: 180 additions & 143 deletions
Original file line numberDiff line numberDiff line change
@@ -12,182 +12,219 @@
1212
android:layout_height="match_parent"
1313
android:paddingTop="@dimen/standard_eight_padding">
1414

15-
<LinearLayout
16-
android:id="@+id/shareContainer"
15+
<FrameLayout
1716
android:layout_width="match_parent"
18-
android:layout_height="wrap_content"
19-
android:orientation="vertical">
17+
android:layout_height="match_parent"
18+
android:layout_below="@id/appbar">
2019

2120
<LinearLayout
22-
android:id="@+id/shared_with_you_container"
21+
android:id="@+id/shareContainer"
2322
android:layout_width="match_parent"
2423
android:layout_height="wrap_content"
25-
android:layout_marginBottom="@dimen/standard_half_margin"
26-
android:orientation="horizontal"
27-
android:paddingLeft="@dimen/standard_padding"
28-
android:paddingTop="@dimen/standard_padding"
29-
android:paddingRight="@dimen/standard_padding">
30-
31-
<ImageView
32-
android:id="@+id/shared_with_you_avatar"
33-
android:layout_width="@dimen/user_icon_size"
34-
android:layout_height="@dimen/user_icon_size"
35-
android:contentDescription="@string/avatar"
36-
android:src="@drawable/ic_user" />
24+
android:visibility="gone"
25+
android:orientation="vertical">
3726

3827
<LinearLayout
28+
android:id="@+id/shared_with_you_container"
3929
android:layout_width="match_parent"
4030
android:layout_height="wrap_content"
41-
android:orientation="vertical"
31+
android:layout_marginBottom="@dimen/standard_half_margin"
32+
android:orientation="horizontal"
4233
android:paddingLeft="@dimen/standard_padding"
43-
android:paddingTop="@dimen/standard_half_padding"
34+
android:paddingTop="@dimen/standard_padding"
4435
android:paddingRight="@dimen/standard_padding">
4536

46-
<TextView
47-
android:id="@+id/shared_with_you_username"
48-
android:layout_width="match_parent"
49-
android:layout_height="wrap_content"
50-
android:text="@string/shared_with_you_by"
51-
android:textSize="@dimen/two_line_primary_text_size" />
37+
<ImageView
38+
android:id="@+id/shared_with_you_avatar"
39+
android:layout_width="@dimen/user_icon_size"
40+
android:layout_height="@dimen/user_icon_size"
41+
android:contentDescription="@string/avatar"
42+
android:src="@drawable/ic_user" />
5243

5344
<LinearLayout
54-
android:id="@+id/shared_with_you_note_container"
5545
android:layout_width="match_parent"
56-
android:layout_height="match_parent"
57-
android:orientation="horizontal"
46+
android:layout_height="wrap_content"
47+
android:orientation="vertical"
48+
android:paddingLeft="@dimen/standard_padding"
5849
android:paddingTop="@dimen/standard_half_padding"
59-
tools:ignore="UseCompoundDrawables">
60-
61-
<ImageView
62-
android:layout_width="16dp"
63-
android:layout_height="16dp"
64-
android:contentDescription="@string/note_icon_hint"
65-
android:src="@drawable/file_text" />
50+
android:paddingRight="@dimen/standard_padding">
6651

6752
<TextView
68-
android:id="@+id/shared_with_you_note"
69-
android:layout_width="0dp"
53+
android:id="@+id/shared_with_you_username"
54+
android:layout_width="match_parent"
7055
android:layout_height="wrap_content"
71-
android:layout_weight="1"
72-
android:paddingStart="@dimen/standard_half_padding"
73-
android:paddingEnd="@dimen/standard_half_padding"
74-
android:textSize="16sp" />
56+
android:text="@string/shared_with_you_by"
57+
android:textSize="@dimen/two_line_primary_text_size" />
58+
59+
<LinearLayout
60+
android:id="@+id/shared_with_you_note_container"
61+
android:layout_width="match_parent"
62+
android:layout_height="match_parent"
63+
android:orientation="horizontal"
64+
android:paddingTop="@dimen/standard_half_padding"
65+
tools:ignore="UseCompoundDrawables">
66+
67+
<ImageView
68+
android:layout_width="16dp"
69+
android:layout_height="16dp"
70+
android:contentDescription="@string/note_icon_hint"
71+
android:src="@drawable/file_text" />
72+
73+
<TextView
74+
android:id="@+id/shared_with_you_note"
75+
android:layout_width="0dp"
76+
android:layout_height="wrap_content"
77+
android:layout_weight="1"
78+
android:paddingStart="@dimen/standard_half_padding"
79+
android:paddingEnd="@dimen/standard_half_padding"
80+
android:textSize="16sp" />
81+
</LinearLayout>
82+
7583
</LinearLayout>
84+
</LinearLayout>
85+
86+
<LinearLayout
87+
android:id="@+id/search_container"
88+
android:layout_width="match_parent"
89+
android:layout_height="wrap_content"
90+
android:orientation="horizontal"
91+
android:paddingStart="@dimen/standard_padding"
92+
android:paddingEnd="@dimen/zero">
93+
94+
<ImageView
95+
android:id="@+id/searchViewIcon"
96+
android:layout_width="@dimen/user_icon_size"
97+
android:layout_height="@dimen/user_icon_size"
98+
android:layout_gravity="center_vertical"
99+
android:contentDescription="@string/avatar"
100+
android:padding="@dimen/standard_half_padding"
101+
android:src="@drawable/ic_search_grey" />
102+
103+
<androidx.appcompat.widget.SearchView
104+
android:id="@+id/searchView"
105+
style="@style/ownCloud.SearchView"
106+
android:layout_width="0dp"
107+
android:layout_height="wrap_content"
108+
android:layout_marginStart="@dimen/zero"
109+
android:layout_marginEnd="@dimen/standard_quarter_margin"
110+
android:layout_weight="1"
111+
android:hint="@string/share_search"
112+
app:searchIcon="@null" />
113+
114+
<androidx.appcompat.widget.AppCompatImageView
115+
android:id="@+id/pick_contact_email_btn"
116+
android:layout_width="@dimen/minimum_size_for_touchable_area"
117+
android:layout_height="@dimen/minimum_size_for_touchable_area"
118+
android:layout_gravity="center_vertical"
119+
android:layout_marginEnd="@dimen/standard_quarter_margin"
120+
android:contentDescription="@string/pick_contact_to_share_with"
121+
android:padding="12dp"
122+
android:src="@drawable/ic_contact_book" />
76123

77124
</LinearLayout>
78-
</LinearLayout>
79125

80-
<LinearLayout
81-
android:id="@+id/search_container"
82-
android:layout_width="match_parent"
83-
android:layout_height="wrap_content"
84-
android:orientation="horizontal"
85-
android:paddingStart="@dimen/standard_padding"
86-
android:paddingEnd="@dimen/zero">
87-
88-
<ImageView
89-
android:id="@+id/searchViewIcon"
90-
android:layout_width="@dimen/user_icon_size"
91-
android:layout_height="@dimen/user_icon_size"
92-
android:layout_gravity="center_vertical"
93-
android:contentDescription="@string/avatar"
94-
android:padding="@dimen/standard_half_padding"
95-
android:src="@drawable/ic_search_grey" />
96-
97-
<androidx.appcompat.widget.SearchView
98-
android:id="@+id/searchView"
99-
style="@style/ownCloud.SearchView"
100-
android:layout_width="0dp"
126+
<TextView
127+
android:paddingStart="@dimen/standard_padding"
128+
android:paddingEnd="@dimen/zero"
129+
android:paddingTop="@dimen/standard_half_padding"
130+
android:paddingBottom="@dimen/standard_half_padding"
131+
android:layout_width="wrap_content"
101132
android:layout_height="wrap_content"
102-
android:layout_marginStart="@dimen/zero"
103-
android:layout_marginEnd="@dimen/standard_quarter_margin"
104-
android:layout_weight="1"
105-
android:hint="@string/share_search"
106-
app:searchIcon="@null" />
107-
108-
<androidx.appcompat.widget.AppCompatImageView
109-
android:id="@+id/pick_contact_email_btn"
110-
android:layout_width="@dimen/minimum_size_for_touchable_area"
111-
android:layout_height="@dimen/minimum_size_for_touchable_area"
112-
android:layout_gravity="center_vertical"
113-
android:layout_marginEnd="@dimen/standard_quarter_margin"
114-
android:contentDescription="@string/pick_contact_to_share_with"
115-
android:padding="12dp"
116-
android:src="@drawable/ic_contact_book" />
133+
android:text="@string/internal_shares"
134+
android:textAppearance="?android:attr/textAppearanceMedium" />
117135

118-
</LinearLayout>
136+
<androidx.recyclerview.widget.RecyclerView
137+
android:id="@+id/sharesList_internal"
138+
android:layout_width="match_parent"
139+
android:layout_height="wrap_content"
140+
android:divider="@drawable/divider"
141+
android:dividerHeight="1dp"
142+
tools:listitem="@layout/file_details_share_link_share_item">
119143

120-
<TextView
121-
android:paddingStart="@dimen/standard_padding"
122-
android:paddingEnd="@dimen/zero"
123-
android:paddingTop="@dimen/standard_half_padding"
124-
android:paddingBottom="@dimen/standard_half_padding"
125-
android:layout_width="wrap_content"
126-
android:layout_height="wrap_content"
127-
android:text="@string/internal_shares"
128-
android:textAppearance="?android:attr/textAppearanceMedium" />
144+
</androidx.recyclerview.widget.RecyclerView>
129145

130-
<androidx.recyclerview.widget.RecyclerView
131-
android:id="@+id/sharesList_internal"
132-
android:layout_width="match_parent"
133-
android:layout_height="wrap_content"
134-
android:divider="@drawable/divider"
135-
android:dividerHeight="1dp"
136-
tools:listitem="@layout/file_details_share_link_share_item">
146+
<com.google.android.material.button.MaterialButton
147+
android:id="@+id/sharesList_internal_show_all"
148+
style="@style/Nextcloud.Material.TextButton"
149+
android:layout_width="match_parent"
150+
android:layout_height="wrap_content"
151+
android:text="@string/show_all" />
137152

138-
</androidx.recyclerview.widget.RecyclerView>
153+
<View
154+
android:id="@+id/divider2"
155+
android:layout_width="match_parent"
156+
android:layout_height="1dp"
157+
android:background="?android:attr/listDivider" />
139158

140-
<com.google.android.material.button.MaterialButton
141-
android:id="@+id/sharesList_internal_show_all"
142-
style="@style/Nextcloud.Material.TextButton"
143-
android:layout_width="match_parent"
144-
android:layout_height="wrap_content"
145-
android:text="@string/show_all" />
159+
<TextView
160+
android:id="@+id/external_shares_headline"
161+
android:paddingStart="@dimen/standard_padding"
162+
android:paddingEnd="@dimen/zero"
163+
android:paddingTop="@dimen/standard_half_padding"
164+
android:paddingBottom="@dimen/standard_half_padding"
165+
android:layout_width="match_parent"
166+
android:layout_height="wrap_content"
167+
android:text="@string/external_shares"
168+
android:textAppearance="?android:attr/textAppearanceMedium" />
146169

147-
<View
148-
android:id="@+id/divider2"
149-
android:layout_width="match_parent"
150-
android:layout_height="1dp"
151-
android:background="?android:attr/listDivider" />
152-
153-
<TextView
154-
android:id="@+id/external_shares_headline"
155-
android:paddingStart="@dimen/standard_padding"
156-
android:paddingEnd="@dimen/zero"
157-
android:paddingTop="@dimen/standard_half_padding"
158-
android:paddingBottom="@dimen/standard_half_padding"
159-
android:layout_width="match_parent"
160-
android:layout_height="wrap_content"
161-
android:text="@string/external_shares"
162-
android:textAppearance="?android:attr/textAppearanceMedium" />
170+
<com.google.android.material.button.MaterialButton
171+
android:id="@+id/create_link"
172+
style="@style/Widget.Material3.Button.OutlinedButton"
173+
android:layout_width="match_parent"
174+
android:layout_height="wrap_content"
175+
android:layout_marginStart="@dimen/standard_double_margin"
176+
android:layout_marginEnd="@dimen/standard_double_margin"
177+
app:icon="@drawable/file_link"
178+
app:iconGravity="textStart"
179+
android:text="@string/create_link" />
180+
181+
<androidx.recyclerview.widget.RecyclerView
182+
android:id="@+id/sharesList_external"
183+
android:layout_width="match_parent"
184+
android:layout_height="wrap_content"
185+
android:divider="@drawable/divider"
186+
android:dividerHeight="1dp"
187+
tools:listitem="@layout/file_details_share_link_share_item">
163188

164-
<com.google.android.material.button.MaterialButton
165-
android:id="@+id/create_link"
166-
style="@style/Widget.Material3.Button.OutlinedButton"
167-
android:layout_width="match_parent"
168-
android:layout_height="wrap_content"
169-
android:layout_marginStart="@dimen/standard_double_margin"
170-
android:layout_marginEnd="@dimen/standard_double_margin"
171-
app:icon="@drawable/file_link"
172-
app:iconGravity="textStart"
173-
android:text="@string/create_link" />
174-
175-
<androidx.recyclerview.widget.RecyclerView
176-
android:id="@+id/sharesList_external"
177-
android:layout_width="match_parent"
178-
android:layout_height="wrap_content"
179-
android:divider="@drawable/divider"
180-
android:dividerHeight="1dp"
181-
tools:listitem="@layout/file_details_share_link_share_item">
189+
</androidx.recyclerview.widget.RecyclerView>
182190

183-
</androidx.recyclerview.widget.RecyclerView>
191+
<com.google.android.material.button.MaterialButton
192+
android:id="@+id/sharesList_external_show_all"
193+
style="@style/Nextcloud.Material.TextButton"
194+
android:layout_width="match_parent"
195+
android:layout_height="wrap_content"
196+
android:text="@string/show_all" />
197+
</LinearLayout>
184198

185-
<com.google.android.material.button.MaterialButton
186-
android:id="@+id/sharesList_external_show_all"
187-
style="@style/Nextcloud.Material.TextButton"
199+
<FrameLayout
200+
android:id="@+id/shimmer_layout"
201+
android:visibility="visible"
188202
android:layout_width="match_parent"
189-
android:layout_height="wrap_content"
190-
android:text="@string/show_all" />
203+
android:layout_height="match_parent">
204+
205+
<LinearLayout
206+
android:id="@+id/loading_content"
207+
android:layout_width="match_parent"
208+
android:layout_height="wrap_content"
209+
android:orientation="vertical"
210+
android:visibility="visible">
211+
212+
<include layout="@layout/activity_list_item_shimmer" />
213+
214+
<include layout="@layout/activity_list_item_shimmer" />
215+
216+
<include layout="@layout/activity_list_item_shimmer" />
217+
218+
<include layout="@layout/activity_list_item_shimmer" />
219+
220+
</LinearLayout>
221+
222+
<include
223+
android:id="@+id/empty_list"
224+
layout="@layout/empty_list" />
225+
226+
</FrameLayout>
227+
</FrameLayout>
228+
191229

192-
</LinearLayout>
193230
</androidx.core.widget.NestedScrollView>

0 commit comments

Comments
 (0)