Skip to content

Commit 5d299b1

Browse files
domdomeggneslihanturan
authored andcommitted
Simplify welcome layouts (commons-app#2741)
* Simplify welcome layouts * Add landscape layouts * Reformat welcome layouts * Rename string resources
1 parent fb0d025 commit 5d299b1

24 files changed

+330
-924
lines changed

app/src/main/java/fr/free/nrw/commons/WelcomeActivity.java

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,14 @@
33
import android.content.Context;
44
import android.content.Intent;
55
import android.os.Bundle;
6-
import androidx.viewpager.widget.ViewPager;
76
import android.view.View;
87

98
import com.viewpagerindicator.CirclePageIndicator;
109

11-
import javax.inject.Inject;
12-
import javax.inject.Named;
13-
10+
import androidx.viewpager.widget.ViewPager;
1411
import butterknife.BindView;
1512
import butterknife.ButterKnife;
1613
import butterknife.OnClick;
17-
import fr.free.nrw.commons.kvstore.JsonKvStore;
18-
import fr.free.nrw.commons.kvstore.JsonKvStore;
1914
import fr.free.nrw.commons.quiz.QuizActivity;
2015
import fr.free.nrw.commons.theme.BaseActivity;
2116
import fr.free.nrw.commons.utils.ConfigUtils;
@@ -29,7 +24,6 @@ public class WelcomeActivity extends BaseActivity {
2924

3025
private WelcomePagerAdapter adapter = new WelcomePagerAdapter();
3126
private boolean isQuiz;
32-
static String moreInformation;
3327

3428
/**
3529
* Initialises exiting fields and dependencies
@@ -41,8 +35,6 @@ public void onCreate(Bundle savedInstanceState) {
4135
super.onCreate(savedInstanceState);
4236
setContentView(R.layout.activity_welcome);
4337

44-
moreInformation = this.getString(R.string.welcome_help_button_text);
45-
4638
if (getIntent() != null) {
4739
Bundle bundle = getIntent().getExtras();
4840
if (bundle != null) {
@@ -61,7 +53,6 @@ public void onCreate(Bundle savedInstanceState) {
6153

6254
pager.setAdapter(adapter);
6355
indicator.setViewPager(pager);
64-
adapter.setCallback(this::finishTutorial);
6556
}
6657

6758
/**
@@ -73,7 +64,6 @@ public void onDestroy() {
7364
Intent i = new Intent(WelcomeActivity.this, QuizActivity.class);
7465
startActivity(i);
7566
}
76-
adapter.setCallback(null);
7767
super.onDestroy();
7868
}
7969

Lines changed: 10 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,24 @@
11
package fr.free.nrw.commons;
22

33
import android.net.Uri;
4+
import android.text.Html;
45
import androidx.annotation.Nullable;
56
import androidx.viewpager.widget.PagerAdapter;
67
import android.view.LayoutInflater;
78
import android.view.View;
89
import android.view.ViewGroup;
910
import android.widget.TextView;
10-
11+
import androidx.viewpager.widget.PagerAdapter;
1112
import org.wikipedia.util.StringUtil;
1213

1314
public class WelcomePagerAdapter extends PagerAdapter {
1415
private static final int[] PAGE_LAYOUTS = new int[]{
1516
R.layout.welcome_wikipedia,
1617
R.layout.welcome_do_upload,
1718
R.layout.welcome_dont_upload,
18-
R.layout.welcome_image_details,
19+
R.layout.welcome_image_example,
1920
R.layout.welcome_final
2021
};
21-
private static final int PAGE_FINAL = 4;
22-
private Callback callback;
23-
private ViewGroup container;
24-
25-
/**
26-
* Changes callback to provided one
27-
*
28-
* @param callback New callback
29-
* it can be null.
30-
*/
31-
public void setCallback(@Nullable Callback callback) {
32-
this.callback = callback;
33-
}
3422

3523
/**
3624
* Gets total number of layouts
@@ -54,29 +42,22 @@ public boolean isViewFromObject(View view, Object object) {
5442

5543
@Override
5644
public Object instantiateItem(ViewGroup container, int position) {
57-
this.container = container;
5845
LayoutInflater inflater = LayoutInflater.from(container.getContext());
5946
ViewGroup layout = (ViewGroup) inflater.inflate(PAGE_LAYOUTS[position], container, false);
6047

6148
// If final page
62-
if (position == PAGE_FINAL) {
49+
if (position == PAGE_LAYOUTS.length - 1) {
6350
// Add link to more information
6451
TextView moreInfo = layout.findViewById(R.id.welcomeInfo);
65-
moreInfo.setText(StringUtil.fromHtml(WelcomeActivity.moreInformation));
66-
moreInfo.setOnClickListener(view -> {
67-
try {
68-
Utils.handleWebUrl(
69-
container.getContext(),
70-
Uri.parse("https://commons.wikimedia.org/wiki/Help:Contents")
71-
);
72-
} catch (Exception e) {
73-
e.printStackTrace();
74-
}
75-
});
52+
moreInfo.setText(Html.fromHtml(container.getContext().getString(R.string.welcome_help_button_text)));
53+
moreInfo.setOnClickListener(view -> Utils.handleWebUrl(
54+
container.getContext(),
55+
Uri.parse("https://commons.wikimedia.org/wiki/Help:Contents")
56+
));
7657

7758
// Handle click of finishTutorialButton ("YES!" button) inside layout
7859
layout.findViewById(R.id.finishTutorialButton)
79-
.setOnClickListener(view -> callback.finishTutorial());
60+
.setOnClickListener(view -> ((WelcomeActivity) container.getContext()).finishTutorial());
8061
}
8162

8263
container.addView(layout);
@@ -93,8 +74,4 @@ public Object instantiateItem(ViewGroup container, int position) {
9374
public void destroyItem(ViewGroup container, int position, Object obj) {
9475
container.removeView((View) obj);
9576
}
96-
97-
public interface Callback {
98-
void finishTutorial();
99-
}
10077
}
Binary file not shown.

app/src/main/res/drawable/llamas.webp

-4.17 KB
Binary file not shown.
-4.83 KB
Binary file not shown.
-5.34 KB
Binary file not shown.

app/src/main/res/drawable/tulip.webp

-13.2 KB
Binary file not shown.
39.8 KB
Binary file not shown.
Lines changed: 26 additions & 120 deletions
Original file line numberDiff line numberDiff line change
@@ -1,174 +1,80 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
3-
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
4-
xmlns:tools="http://schemas.android.com/tools"
2+
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
53
android:layout_width="match_parent"
64
android:layout_height="match_parent"
7-
xmlns:app="http://schemas.android.com/apk/res-auto"
85
android:background="?attr/tutorialBackground"
96
android:gravity="center"
10-
android:orientation="horizontal">
11-
12-
<androidx.constraintlayout.widget.Guideline
13-
android:id="@+id/center_guideline"
14-
android:layout_width="wrap_content"
15-
android:layout_height="match_parent"
16-
android:orientation="vertical"
17-
app:layout_constraintGuide_percent="0.55" />
7+
android:paddingLeft="@dimen/huge_gap"
8+
android:paddingRight="@dimen/huge_gap">
189

19-
<GridLayout
20-
android:layout_width="300dp"
10+
<ImageView
11+
android:layout_width="0dp"
2112
android:layout_height="wrap_content"
22-
android:layout_gravity="center_vertical"
23-
android:layout_marginBottom="8dp"
24-
android:layout_marginTop="8dp"
25-
android:columnCount="2"
26-
app:layout_constraintBottom_toBottomOf="parent"
27-
app:layout_constraintTop_toTopOf="parent"
28-
app:layout_constraintEnd_toStartOf="@id/center_guideline">
29-
30-
<ImageView
31-
android:id="@+id/mount_zao"
32-
android:layout_width="150dp"
33-
android:layout_height="118dp"
34-
android:contentDescription="@string/welcome_image_mount_zao"
35-
android:scaleType="fitXY"
36-
android:src="@drawable/mount_zao" />
37-
38-
<ImageView
39-
android:id="@+id/llamas"
40-
android:layout_width="150dp"
41-
android:layout_height="118dp"
42-
android:contentDescription="@string/welcome_image_llamas"
43-
android:scaleType="fitXY"
44-
android:src="@drawable/llamas" />
45-
46-
<ImageView
47-
android:id="@+id/rainbow_bridge"
48-
android:layout_width="150dp"
49-
android:layout_height="118dp"
50-
android:contentDescription="@string/welcome_image_rainbow_bridge"
51-
android:scaleType="fitXY"
52-
android:src="@drawable/rainbow_bridge" />
53-
54-
<ImageView
55-
android:id="@+id/tulip"
56-
android:layout_width="150dp"
57-
android:layout_height="118dp"
58-
android:contentDescription="@string/welcome_image_tulip"
59-
android:scaleType="fitXY"
60-
android:src="@drawable/tulip" />
61-
62-
</GridLayout>
63-
13+
android:layout_marginRight="@dimen/large_gap"
14+
android:layout_weight="0.5"
15+
android:adjustViewBounds="true"
16+
android:contentDescription="@string/welcome_do_upload_content_description"
17+
android:src="@drawable/welcome_do_upload" />
6418

6519
<LinearLayout
66-
android:layout_width="wrap_content"
20+
android:layout_width="0dp"
6721
android:layout_height="wrap_content"
68-
android:gravity="center_vertical"
69-
android:orientation="vertical"
70-
android:layout_marginStart="@dimen/standard_gap"
71-
android:layout_marginLeft="@dimen/standard_gap"
72-
app:layout_constraintStart_toEndOf="@id/center_guideline"
73-
app:layout_constraintBottom_toBottomOf="parent"
74-
app:layout_constraintTop_toTopOf="parent">
75-
22+
android:layout_weight="0.5"
23+
android:orientation="vertical">
7624

7725
<TextView
78-
android:layout_width="wrap_content"
26+
android:layout_width="match_parent"
7927
android:layout_height="wrap_content"
80-
android:layout_gravity="center"
81-
android:gravity="center_horizontal"
82-
android:maxWidth="240dp"
28+
android:layout_marginTop="@dimen/standard_gap"
29+
android:layout_marginBottom="@dimen/standard_gap"
8330
android:text="@string/tutorial_2_text"
8431
android:textAlignment="center"
8532
android:textColor="@android:color/white"
8633
android:textSize="@dimen/normal_text"
8734
android:textStyle="bold" />
8835

8936
<LinearLayout
90-
android:layout_width="wrap_content"
37+
android:layout_width="match_parent"
9138
android:layout_height="wrap_content"
92-
android:layout_gravity="center"
93-
android:maxWidth="240dp"
9439
android:orientation="horizontal">
9540

96-
<TextView
97-
android:layout_width="wrap_content"
98-
android:layout_height="wrap_content"
99-
android:paddingRight="4dp"
100-
android:paddingTop="@dimen/standard_gap"
101-
android:text="@string/bullet"
102-
android:textColor="@android:color/white"
103-
android:textSize="16sp" />
41+
<include layout="@layout/welcome_bullet" />
10442

10543
<TextView
106-
android:layout_width="wrap_content"
44+
android:layout_width="match_parent"
10745
android:layout_height="wrap_content"
108-
android:layout_gravity="center"
109-
android:gravity="start"
110-
android:maxWidth="240dp"
111-
android:paddingTop="@dimen/standard_gap"
11246
android:text="@string/tutorial_2_subtext_1"
113-
android:textAlignment="textStart"
11447
android:textColor="@android:color/white" />
11548

11649
</LinearLayout>
11750

11851
<LinearLayout
119-
android:layout_width="wrap_content"
52+
android:layout_width="match_parent"
12053
android:layout_height="wrap_content"
121-
android:layout_gravity="center"
122-
android:maxWidth="240dp"
12354
android:orientation="horizontal">
12455

125-
<TextView
126-
android:layout_width="wrap_content"
127-
android:layout_height="wrap_content"
128-
android:paddingRight="4dp"
129-
android:text="@string/bullet"
130-
android:textColor="@android:color/white"
131-
android:textSize="16sp" />
56+
<include layout="@layout/welcome_bullet" />
13257

13358
<TextView
134-
android:layout_width="wrap_content"
59+
android:layout_width="match_parent"
13560
android:layout_height="wrap_content"
136-
android:layout_gravity="center"
137-
android:gravity="start"
138-
android:maxWidth="240dp"
13961
android:text="@string/tutorial_2_subtext_2"
140-
android:textAlignment="textStart"
14162
android:textColor="@android:color/white" />
142-
14363
</LinearLayout>
14464

14565
<LinearLayout
146-
android:layout_width="wrap_content"
66+
android:layout_width="match_parent"
14767
android:layout_height="wrap_content"
148-
android:layout_gravity="center"
149-
android:maxWidth="240dp"
15068
android:orientation="horizontal">
15169

152-
<TextView
153-
android:layout_width="wrap_content"
154-
android:layout_height="wrap_content"
155-
android:paddingRight="4dp"
156-
android:text="@string/bullet"
157-
android:textColor="@android:color/white"
158-
android:textSize="16sp" />
70+
<include layout="@layout/welcome_bullet" />
15971

16072
<TextView
161-
android:layout_width="wrap_content"
73+
android:layout_width="match_parent"
16274
android:layout_height="wrap_content"
163-
android:layout_gravity="center"
164-
android:gravity="start"
165-
android:maxWidth="240dp"
16675
android:text="@string/tutorial_2_subtext_3"
167-
android:textAlignment="textStart"
16876
android:textColor="@android:color/white" />
169-
17077
</LinearLayout>
171-
17278
</LinearLayout>
17379

174-
</androidx.constraintlayout.widget.ConstraintLayout>
80+
</LinearLayout>

0 commit comments

Comments
 (0)