Skip to content
This repository was archived by the owner on Sep 3, 2024. It is now read-only.

Commit 6baac3d

Browse files
authored
app/oneuiexample: better numberpicker showcase (#107)
Signed-off-by: BlackMesa123 <[email protected]>
1 parent c429e70 commit 6baac3d

File tree

2 files changed

+203
-71
lines changed

2 files changed

+203
-71
lines changed

app/src/main/java/de/dlyt/yanndroid/oneuiexample/tabs/ViewsTab.java

Lines changed: 111 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,23 @@
22

33
import android.annotation.SuppressLint;
44
import android.content.Context;
5+
import android.graphics.Typeface;
56
import android.os.Bundle;
67
import android.os.Handler;
8+
import android.view.KeyEvent;
79
import android.view.LayoutInflater;
810
import android.view.View;
911
import android.view.ViewGroup;
12+
import android.view.inputmethod.EditorInfo;
13+
import android.widget.AdapterView;
1014
import android.widget.ArrayAdapter;
15+
import android.widget.EditText;
1116
import android.widget.LinearLayout;
17+
import android.widget.TextView;
1218

1319
import androidx.annotation.NonNull;
1420
import androidx.annotation.Nullable;
21+
import androidx.core.content.res.ResourcesCompat;
1522
import androidx.fragment.app.Fragment;
1623

1724
import java.util.ArrayList;
@@ -22,7 +29,9 @@
2229
import de.dlyt.yanndroid.oneui.widget.ProgressBar;
2330
import de.dlyt.yanndroid.oneui.widget.SeekBar;
2431
import de.dlyt.yanndroid.oneui.widget.Spinner;
32+
import de.dlyt.yanndroid.oneui.widget.SpinningDatePicker;
2533
import de.dlyt.yanndroid.oneui.widget.SwitchBar;
34+
import de.dlyt.yanndroid.oneui.widget.TimePicker;
2635
import de.dlyt.yanndroid.oneuiexample.MainActivity;
2736
import de.dlyt.yanndroid.oneuiexample.R;
2837

@@ -99,23 +108,112 @@ public void onStopTrackingTouch(SeekBar seslSeekBar) {
99108
colorPaletteContainer.setClipToOutline(true);
100109

101110
//Spinner
102-
Spinner spinner = mRootView.findViewById(R.id.spinner);
111+
Spinner testSpinner = mRootView.findViewById(R.id.test_spinner);
103112
List<String> categories = new ArrayList<>();
104113
for (int i = 1; i < 16; i++) categories.add("Spinner Item " + i);
105-
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(mActivity, android.R.layout.simple_spinner_item, categories);
106-
dataAdapter.setDropDownViewResource(R.layout.sesl_simple_spinner_dropdown_item);
107-
spinner.setAdapter(dataAdapter);
114+
ArrayAdapter<String> testAdapter = new ArrayAdapter<String>(mActivity, android.R.layout.simple_spinner_item, categories);
115+
testAdapter.setDropDownViewResource(R.layout.sesl_simple_spinner_dropdown_item);
116+
testSpinner.setAdapter(testAdapter);
108117

109118
//Pickers
110-
NumberPicker numberpicker = mRootView.findViewById(R.id.numberpicker); //todo: need to find out how dismiss edit-mode when "done" is clicked in keyboard (dismissing keyboard with back key works | on all the other pickers it's working)
111-
numberpicker.setMaxValue(100);
112-
numberpicker.setMinValue(0);
113-
numberpicker.setValue(50);
114-
115-
DatePicker datepicker = mRootView.findViewById(R.id.datepicker);
116-
datepicker.setFirstDayOfWeek(2);
117-
datepicker.setMinDate(0);
118-
datepicker.setMaxDate(4133966209349L);
119+
setUpNumberPickers();
119120
}
120121

122+
private void setUpNumberPickers() {
123+
LinearLayout numberPickersContainer = mRootView.findViewById(R.id.numberpickers_container);
124+
125+
NumberPicker numberPickerOne = mRootView.findViewById(R.id.numberpicker1);
126+
numberPickerOne.setMinValue(1);
127+
numberPickerOne.setMaxValue(100);
128+
numberPickerOne.setValue(50);
129+
((EditText) numberPickerOne.findViewById(R.id.numberpicker_input)).setOnEditorActionListener(new TextView.OnEditorActionListener() {
130+
@Override
131+
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
132+
if (actionId == EditorInfo.IME_ACTION_DONE) {
133+
numberPickerOne.setEditTextMode(false);
134+
}
135+
return false;
136+
}
137+
});
138+
139+
NumberPicker numberPickerTwo = mRootView.findViewById(R.id.numberpicker2);
140+
numberPickerTwo.setTextTypeface(Typeface.create("sans-serif-light", Typeface.NORMAL));
141+
numberPickerTwo.setTextSize(38);
142+
numberPickerTwo.setMinValue(0);
143+
numberPickerTwo.setMaxValue(10);
144+
numberPickerTwo.setValue(8);
145+
((EditText) numberPickerTwo.findViewById(R.id.numberpicker_input)).setOnEditorActionListener(new TextView.OnEditorActionListener() {
146+
@Override
147+
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
148+
if (actionId == EditorInfo.IME_ACTION_DONE) {
149+
numberPickerTwo.setEditTextMode(false);
150+
}
151+
return false;
152+
}
153+
});
154+
155+
NumberPicker numberPickerThree = mRootView.findViewById(R.id.numberpicker3);
156+
numberPickerThree.setTextTypeface(ResourcesCompat.getFont(getContext(), R.font.samsungsharpsans_bold));
157+
numberPickerThree.setMinValue(0);
158+
numberPickerThree.setMaxValue(2);
159+
numberPickerThree.setDisplayedValues(new String[]{"A", "B", "C"});
160+
((EditText) numberPickerThree.findViewById(R.id.numberpicker_input)).setOnEditorActionListener(new TextView.OnEditorActionListener() {
161+
@Override
162+
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
163+
if (actionId == EditorInfo.IME_ACTION_DONE) {
164+
numberPickerThree.setEditTextMode(false);
165+
}
166+
return false;
167+
}
168+
});
169+
170+
TimePicker timePicker = mRootView.findViewById(R.id.timepicker);
171+
172+
DatePicker datePicker = mRootView.findViewById(R.id.datepicker);
173+
datePicker.setFirstDayOfWeek(2);
174+
datePicker.setMinDate(0);
175+
datePicker.setMaxDate(4133966209349L);
176+
177+
SpinningDatePicker spinningDatePicker = mRootView.findViewById(R.id.spinningdatepicker);
178+
179+
Spinner pickersSpinner = mRootView.findViewById(R.id.pickers_spinner);
180+
List<String> spinnersItems = new ArrayList<>();
181+
spinnersItems.add("NumberPicker");
182+
spinnersItems.add("TimePicker");
183+
spinnersItems.add("DatePicker");
184+
spinnersItems.add("SpinningDatePicker");
185+
ArrayAdapter<String> pickersAdapter = new ArrayAdapter<String>(mActivity, android.R.layout.simple_spinner_item, spinnersItems);
186+
pickersAdapter.setDropDownViewResource(R.layout.sesl_simple_spinner_dropdown_item);
187+
pickersSpinner.setAdapter(pickersAdapter);
188+
pickersSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
189+
@Override
190+
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
191+
boolean numberPickerSel = false, timePickerSel = false, datePickerSel = false, spinningDateSel = false;
192+
193+
switch (pos) {
194+
case 0:
195+
numberPickerSel = true;
196+
break;
197+
case 1:
198+
timePickerSel = true;
199+
break;
200+
case 2:
201+
datePickerSel = true;
202+
break;
203+
case 3:
204+
spinningDateSel = true;
205+
break;
206+
}
207+
208+
numberPickersContainer.setVisibility(numberPickerSel ? View.VISIBLE : View.GONE);
209+
timePicker.setVisibility(timePickerSel ? View.VISIBLE : View.GONE);
210+
datePicker.setVisibility(datePickerSel ? View.VISIBLE : View.GONE);
211+
spinningDatePicker.setVisibility(spinningDateSel ? View.VISIBLE : View.GONE);
212+
}
213+
214+
@Override
215+
public void onNothingSelected(AdapterView<?> adapterView) {
216+
}
217+
});
218+
}
121219
}

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

Lines changed: 92 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@
235235
android:maxLines="1" />
236236

237237
<de.dlyt.yanndroid.oneui.widget.Spinner
238-
android:id="@+id/spinner"
238+
android:id="@+id/test_spinner"
239239
android:layout_width="wrap_content"
240240
android:layout_height="wrap_content"
241241
android:layout_gravity="start"
@@ -250,39 +250,69 @@
250250
android:layout_width="fill_parent"
251251
android:layout_height="wrap_content"
252252
android:background="@color/item_background_color"
253-
android:orientation="horizontal"
253+
android:orientation="vertical"
254254
android:paddingHorizontal="24.0dip"
255255
android:paddingVertical="14.0dip">
256-
257-
<com.google.android.material.button.MaterialButton
258-
style="@style/ButtonStyle.Filled"
259-
android:layout_width="0.0dip"
260-
android:layout_height="wrap_content"
261-
android:layout_gravity="center"
262-
android:layout_marginEnd="6.0dip"
263-
android:layout_weight="1"
264-
android:onClick="standardDialog"
265-
android:text="Standard" />
266-
267-
<com.google.android.material.button.MaterialButton
268-
style="@style/ButtonStyle.Filled"
269-
android:layout_width="0.0dip"
256+
<LinearLayout
257+
android:layout_width="fill_parent"
270258
android:layout_height="wrap_content"
271-
android:layout_gravity="center"
272-
android:layout_marginHorizontal="6.0dip"
273-
android:layout_weight="1"
274-
android:onClick="singleChoiceDialog"
275-
android:text="Selection" />
276-
277-
<com.google.android.material.button.MaterialButton
278-
style="@style/ButtonStyle.Filled"
279-
android:layout_width="0.0dip"
259+
android:layout_marginBottom="14.0dip"
260+
android:orientation="horizontal">
261+
<com.google.android.material.button.MaterialButton
262+
style="@style/ButtonStyle.Filled"
263+
android:layout_width="0.0dip"
264+
android:layout_height="wrap_content"
265+
android:layout_gravity="center"
266+
android:layout_marginEnd="6.0dip"
267+
android:layout_weight="1"
268+
android:onClick="standardDialog"
269+
android:text="Standard" />
270+
271+
<com.google.android.material.button.MaterialButton
272+
style="@style/ButtonStyle.Filled"
273+
android:layout_width="0.0dip"
274+
android:layout_height="wrap_content"
275+
android:layout_gravity="center"
276+
android:layout_marginHorizontal="6.0dip"
277+
android:layout_weight="1"
278+
android:onClick="singleChoiceDialog"
279+
android:text="Selection" />
280+
281+
<com.google.android.material.button.MaterialButton
282+
style="@style/ButtonStyle.Filled"
283+
android:layout_width="0.0dip"
284+
android:layout_height="wrap_content"
285+
android:layout_gravity="center"
286+
android:layout_marginStart="6.0dip"
287+
android:layout_weight="1"
288+
android:onClick="progressDialogSpinner"
289+
android:text="Progress" />
290+
</LinearLayout>
291+
292+
<LinearLayout
293+
android:layout_width="fill_parent"
280294
android:layout_height="wrap_content"
281-
android:layout_gravity="center"
282-
android:layout_marginStart="6.0dip"
283-
android:layout_weight="1"
284-
android:onClick="progressDialogSpinner"
285-
android:text="Progress" />
295+
android:orientation="horizontal">
296+
<com.google.android.material.button.MaterialButton
297+
style="@style/ButtonStyle.Filled"
298+
android:layout_width="0.0dip"
299+
android:layout_height="wrap_content"
300+
android:layout_gravity="center"
301+
android:layout_marginEnd="6.0dip"
302+
android:layout_weight="1"
303+
android:onClick="timePickerDialog"
304+
android:text="Time Picker" />
305+
306+
<com.google.android.material.button.MaterialButton
307+
style="@style/ButtonStyle.Filled"
308+
android:layout_width="0.0dip"
309+
android:layout_height="wrap_content"
310+
android:layout_gravity="center"
311+
android:layout_marginStart="6.0dip"
312+
android:layout_weight="1"
313+
android:onClick="datePickerDialog"
314+
android:text="Date Picker" />
315+
</LinearLayout>
286316
</de.dlyt.yanndroid.oneui.widget.RoundLinearLayout>
287317

288318
<com.google.android.material.textview.MaterialTextView
@@ -294,29 +324,16 @@
294324
android:layout_height="wrap_content"
295325
android:background="@color/item_background_color"
296326
android:orientation="horizontal"
297-
android:paddingHorizontal="24.0dip"
298-
android:paddingVertical="14.0dip"
327+
android:paddingHorizontal="12.0dip"
328+
android:paddingVertical="10.0dip"
299329
app:roundedCorners="top_left|top_right">
300330

301-
<com.google.android.material.button.MaterialButton
302-
style="@style/ButtonStyle.Filled"
303-
android:layout_width="0.0dip"
304-
android:layout_height="wrap_content"
305-
android:layout_gravity="center"
306-
android:layout_marginEnd="6.0dip"
307-
android:layout_weight="1"
308-
android:onClick="timePickerDialog"
309-
android:text="Time Picker" />
310-
311-
<com.google.android.material.button.MaterialButton
312-
style="@style/ButtonStyle.Filled"
313-
android:layout_width="0.0dip"
331+
<de.dlyt.yanndroid.oneui.widget.Spinner
332+
android:id="@+id/pickers_spinner"
333+
android:layout_width="wrap_content"
314334
android:layout_height="wrap_content"
315-
android:layout_gravity="center"
316-
android:layout_marginStart="6.0dip"
317-
android:layout_weight="1"
318-
android:onClick="datePickerDialog"
319-
android:text="Date Picker" />
335+
android:layout_gravity="start" />
336+
320337
</de.dlyt.yanndroid.oneui.widget.RoundLinearLayout>
321338

322339
<de.dlyt.yanndroid.oneui.widget.RoundLinearLayout
@@ -327,24 +344,41 @@
327344
android:paddingVertical="12.0dip"
328345
app:roundedCorners="bottom_left|bottom_right">
329346

330-
<de.dlyt.yanndroid.oneui.widget.NumberPicker
331-
android:id="@+id/numberpicker"
332-
android:layout_width="wrap_content"
333-
android:layout_height="wrap_content" />
347+
<LinearLayout
348+
android:id="@+id/numberpickers_container"
349+
android:layout_width="fill_parent"
350+
android:layout_height="wrap_content"
351+
android:gravity="center"
352+
android:orientation="horizontal">
353+
<de.dlyt.yanndroid.oneui.widget.NumberPicker
354+
android:id="@+id/numberpicker1"
355+
android:layout_width="wrap_content"
356+
android:layout_height="wrap_content" />
357+
<de.dlyt.yanndroid.oneui.widget.NumberPicker
358+
android:id="@+id/numberpicker2"
359+
android:layout_width="wrap_content"
360+
android:layout_height="wrap_content" />
361+
<de.dlyt.yanndroid.oneui.widget.NumberPicker
362+
android:id="@+id/numberpicker3"
363+
android:layout_width="wrap_content"
364+
android:layout_height="wrap_content" />
365+
</LinearLayout>
334366

335367
<de.dlyt.yanndroid.oneui.widget.TimePicker
368+
android:id="@+id/timepicker"
336369
android:layout_width="wrap_content"
337370
android:layout_height="wrap_content" />
338371

339-
<de.dlyt.yanndroid.oneui.widget.SpinningDatePicker
340-
android:layout_width="fill_parent"
341-
android:layout_height="wrap_content" />
342-
343372
<de.dlyt.yanndroid.oneui.widget.DatePicker
344373
android:id="@+id/datepicker"
345374
android:layout_width="wrap_content"
346375
android:layout_height="wrap_content" />
347376

377+
<de.dlyt.yanndroid.oneui.widget.SpinningDatePicker
378+
android:id="@+id/spinningdatepicker"
379+
android:layout_width="fill_parent"
380+
android:layout_height="wrap_content" />
381+
348382
</de.dlyt.yanndroid.oneui.widget.RoundLinearLayout>
349383

350384
<com.google.android.material.textview.MaterialTextView

0 commit comments

Comments
 (0)