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

Commit 70ad06f

Browse files
authored
app/oneuiexample: custom dialog button color/progressbar (#77)
* app/oneuiexample: custom dialog button color Signed-off-by: BlackMesa123 <giangrecosalvo9@gmail.com> * app/oneuiexample: add dialog progressbar in sample app Signed-off-by: BlackMesa123 <giangrecosalvo9@gmail.com>
1 parent b12434b commit 70ad06f

File tree

7 files changed

+77
-7
lines changed

7 files changed

+77
-7
lines changed

app/src/main/java/de/dlyt/yanndroid/oneuiexample/MainActivity.java

Lines changed: 53 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package de.dlyt.yanndroid.oneuiexample;
22

33
import android.content.Context;
4+
import android.content.DialogInterface;
45
import android.content.Intent;
56
import android.content.SharedPreferences;
67
import android.content.res.Configuration;
@@ -10,16 +11,19 @@
1011
import android.graphics.drawable.Drawable;
1112
import android.os.Build;
1213
import android.os.Bundle;
14+
import android.os.Handler;
1315
import android.text.Editable;
16+
import android.view.LayoutInflater;
1417
import android.view.View;
18+
import android.view.ViewGroup;
1519
import android.view.inputmethod.InputMethodManager;
20+
import android.widget.Button;
1621
import android.widget.EditText;
1722
import android.widget.LinearLayout;
1823
import android.widget.Toast;
1924

2025
import androidx.activity.result.ActivityResultLauncher;
2126
import androidx.activity.result.contract.ActivityResultContracts;
22-
import androidx.appcompat.util.SeslMisc;
2327
import androidx.fragment.app.Fragment;
2428
import androidx.fragment.app.FragmentManager;
2529
import androidx.fragment.app.FragmentTransaction;
@@ -35,6 +39,7 @@
3539
import de.dlyt.yanndroid.oneui.sesl.support.ViewSupport;
3640
import de.dlyt.yanndroid.oneui.sesl.utils.ReflectUtils;
3741
import de.dlyt.yanndroid.oneui.utils.CustomButtonClickListener;
42+
import de.dlyt.yanndroid.oneui.utils.OnSingleClickListener;
3843
import de.dlyt.yanndroid.oneui.utils.ThemeUtil;
3944
import de.dlyt.yanndroid.oneui.view.BottomNavigationView;
4045
import de.dlyt.yanndroid.oneui.view.Snackbar;
@@ -322,13 +327,58 @@ public void onViewModeChanged(int i) {
322327
}
323328

324329
public void standardDialog(View view) {
325-
new AlertDialog.Builder(this)
330+
AlertDialog dialog = new AlertDialog.Builder(this)
326331
.setTitle("Title")
327332
.setMessage("Message")
328333
.setNeutralButton("Maybe", null)
329334
.setNegativeButton("No", null)
330335
.setPositiveButton("Yes", null)
331-
.show();
336+
.create();
337+
dialog.show();
338+
339+
340+
Button positiveBtn = dialog.getButton(DialogInterface.BUTTON_POSITIVE);
341+
if (mUseOUI4Theme) {
342+
Button negativeBtn = dialog.getButton(DialogInterface.BUTTON_NEGATIVE);
343+
negativeBtn.setTextColor(getResources().getColor(R.color.sesl_functional_red));
344+
positiveBtn.setTextColor(getResources().getColor(R.color.sesl_functional_green));
345+
}
346+
positiveBtn.setOnClickListener(new OnSingleClickListener() {
347+
@Override
348+
public void onSingleClick(View view) {
349+
showProgressBarInDialog(dialog);
350+
new Handler().postDelayed(dialog::dismiss, 700);
351+
}
352+
});
353+
}
354+
355+
private void showProgressBarInDialog(AlertDialog dialog) {
356+
Button positiveBtn = dialog.getButton(DialogInterface.BUTTON_POSITIVE);
357+
Button negativeBtn = dialog.getButton(DialogInterface.BUTTON_NEGATIVE);
358+
Button neutralBtn = dialog.getButton(DialogInterface.BUTTON_NEUTRAL);
359+
360+
dialog.setCancelable(false);
361+
dialog.setCanceledOnTouchOutside(false);
362+
if (negativeBtn != null) negativeBtn.setEnabled(false);
363+
if (neutralBtn != null) neutralBtn.setEnabled(false);
364+
if (positiveBtn != null) {
365+
positiveBtn.setEnabled(false);
366+
367+
ViewGroup buttonBar = (ViewGroup) positiveBtn.getParent();
368+
if (buttonBar != null) {
369+
int buttonIndex = buttonBar.indexOfChild(positiveBtn);
370+
371+
ViewGroup.LayoutParams lp = positiveBtn.getLayoutParams();
372+
lp.height = getResources().getDimensionPixelSize(R.dimen.dialog_progress_bar_size);
373+
lp.width = getResources().getDimensionPixelSize(R.dimen.dialog_progress_bar_size);
374+
375+
View inflate = LayoutInflater.from(this).inflate(R.layout.dialog_progress_bar, buttonBar, false);
376+
inflate.setLayoutParams(lp);
377+
378+
buttonBar.removeView(positiveBtn);
379+
buttonBar.addView(inflate, buttonIndex);
380+
}
381+
}
332382
}
333383

334384
public void singleChoiceDialog(View view) {
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center">
4+
<de.dlyt.yanndroid.oneui.view.ProgressBar
5+
android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" style="?android:progressBarStyleSmall" />
6+
</FrameLayout>

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<resources>
3+
<dimen name="dialog_progress_bar_size">36.0dip</dimen>
4+
</resources>

yanndroid/oneui/src/main/java/de/dlyt/yanndroid/oneui/dialog/AlertDialog.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -295,17 +295,15 @@ public Builder setCursor(final Cursor cursor, final OnClickListener listener, St
295295
return this;
296296
}
297297

298-
public Builder setMultiChoiceItems(@ArrayRes int itemsId, boolean[] checkedItems,
299-
final OnMultiChoiceClickListener listener) {
298+
public Builder setMultiChoiceItems(@ArrayRes int itemsId, boolean[] checkedItems, final OnMultiChoiceClickListener listener) {
300299
P.mItems = P.mContext.getResources().getTextArray(itemsId);
301300
P.mOnCheckboxClickListener = listener;
302301
P.mCheckedItems = checkedItems;
303302
P.mIsMultiChoice = true;
304303
return this;
305304
}
306305

307-
public Builder setMultiChoiceItems(CharSequence[] items, boolean[] checkedItems,
308-
final OnMultiChoiceClickListener listener) {
306+
public Builder setMultiChoiceItems(CharSequence[] items, boolean[] checkedItems, final OnMultiChoiceClickListener listener) {
309307
P.mItems = items;
310308
P.mOnCheckboxClickListener = listener;
311309
P.mCheckedItems = checkedItems;

yanndroid/oneui/src/main/java/de/dlyt/yanndroid/oneui/sesl/dialog/SamsungAlertController.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,9 @@ public SamsungAlertController(Context context, AppCompatDialog di, Window window
173173

174174
a.recycle();
175175

176+
// for devices without SamsungBasicInteraction flag
177+
window.setGravity(Gravity.BOTTOM);
178+
176179
di.supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
177180
}
178181

yanndroid/oneui/src/main/res/values-night/colors.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@
3535

3636
<color name="sesl_swipe_refresh_background">#ff252525</color>
3737

38+
<color name="sesl_functional_green">#ff5ad69e</color>
39+
<color name="sesl_functional_orange">#fff6874f</color>
40+
<color name="sesl_functional_red">#fff76f68</color>
41+
3842
<!--Sesl-->
3943
<color name="divider_color">#42fafafa</color>
4044

yanndroid/oneui/src/main/res/values/colors.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@
4747

4848
<color name="sesl_swipe_refresh_background">#fffafafa</color>
4949

50+
<color name="sesl_functional_green">#ff14a866</color>
51+
<color name="sesl_functional_orange">#ffef5e16</color>
52+
<color name="sesl_functional_red">#ffdb332a</color>
53+
5054

5155
<!--Colors-->
5256
<color name="red">#ffD50000</color>
@@ -208,6 +212,7 @@
208212
<!--Dialog-->
209213
<color name="sesl_dialog_body_text_color">#ff505050</color>
210214
<color name="sesl_dialog_button_text_color">#ff0074d4</color>
215+
<color name="sesl_dialog_button_red_text">@color/sesl_functional_red</color>
211216
<color name="sesl4_dialog_button_text_color">#ff010101</color>
212217
<color name="sesl_dialog_divider_color_material">#ffe6e6e6</color>
213218
<color name="sesl_dialog_list_text_color">#ff252525</color>

0 commit comments

Comments
 (0)