AlertDialog

Dialogo Personalizado 


Paso 1 crear los recursos en la carpeta drawable
Aquí  están el usuario circular  botón de la izquierda y de la derecha 
<vector android:height="24dp" android:tint="#2F2E40"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,5c1.66,0 3,1.34 3,3s-1.34,3 -3,3 -3,-1.34 -3,-3 1.34,-3 3,-3zM12,19.2c-2.5,0 -4.71,-1.28 -6,-3.22 0.03,-1.99 4,-3.08 6,-3.08 1.99,0 5.97,1.09 6,3.08 -1.29,1.94 -3.5,3.22 -6,3.22z"/>
</vector>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:bottomLeftRadius="10dp"/>
<stroke android:width="2dp" android:color="@color/colorBron200"/>
<solid android:color="@color/colorTeal"/>
</shape>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:bottomRightRadius="10dp"/>
<stroke android:width="2dp" android:color="@color/colorBron200"/>
<solid android:color="@color/colorTeal"/>
</shape>

 Recursos de xml color

<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="purple_200">#FFBB86FC</color>
<color name="purple_500">#FF6200EE</color>
<color name="purple_700">#FF3700B3</color>
<color name="teal_200">#FF03DAC5</color>
<color name="teal_700">#FF018786</color>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>

<color name="colorBron200">#565377</color>
<color name="colorBron500">#3F3D56</color>
<color name="colorTeal">#03DAC6</color>
</resources>

Recursos XML Strig

<resources>
<string name="app_name">AccountBook</string>
<!-- TODO: Remove or change this placeholder text -->
<string name="hello_blank_fragment">Hello blank fragment</string>
<string name="next">Siguiente</string>
<string name="previous">Atras</string>
<string name="number_phone">Número de celular</string>
<string name="login">Iniciar Sesión</string>
<string name="des_app">Una App para llevar las cuentas personales de manera sencilla</string>
<string name="colombia">Colombia</string>
<string name="country">Country</string>
<string name="pin">PIN</string>
</resources>

Versión del dialog #1

xml

Este código xml esta echo en un card view y lo podemos personalizar al gusto de cada uno.
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
app:cardElevation="3dp"
app:cardUseCompatPadding="true"
app:cardCornerRadius="20dp">

<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">

<androidx.appcompat.widget.AppCompatImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_margin="20dp"
android:src="@drawable/ic_account_circle_24"/>

<androidx.appcompat.widget.AppCompatSpinner
android:id="@+id/SpinnerCountry"
android:text="@string/colombia"
android:textStyle="bold"
android:foreground="?android:attr/selectableItemBackground"
android:background="@drawable/btn_neutral"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:ignore="UnusedAttribute" />


<androidx.appcompat.widget.AppCompatEditText
android:id="@+id/EditTextPhone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="40dp"
android:gravity="center"
android:ems="10"
android:hint="@string/number_phone"
android:inputType="phone"
tools:ignore="TouchTargetSizeCheck,TextContrastCheck" />

<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content">

<androidx.appcompat.widget.AppCompatButton
android:id="@+id/ButtonPrevious"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:foreground="?android:attr/selectableItemBackground"
android:background="@drawable/btn_left"
android:text="@string/previous"
tools:ignore="TextContrastCheck,UnusedAttribute" />

<View
android:layout_width="1dp"
android:layout_height="20dp"/>

<androidx.appcompat.widget.AppCompatButton
android:id="@+id/ButtonNext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:foreground="?android:attr/selectableItemBackground"
android:background="@drawable/btn_right"
android:text="@string/next"
tools:ignore="TextContrastCheck,UnusedAttribute" />
</androidx.appcompat.widget.LinearLayoutCompat>


</androidx.appcompat.widget.LinearLayoutCompat>

</androidx.cardview.widget.CardView>

java

1. para la primera opción, es donde se declaran las variables con el fin de poder modificar y actualizar información desde cualquier método o cuadro de dialogo que implementemos.

2. la segunda opción se pega dentro de onCreate(Bundle savedInstanceState).

3. se crea una clase la cual se esta llamando desde onCreate.
AppCompatEditText mEditTextPhone;
AppCompatButton buttonLogIn,mButtonPrevious,mButtonNext;
Spinner mSpinner;
String[] options={"Colombia","Ecuador","Panama","Mexico"};
String numPhone="";

buttonLogIn=findViewById(R.id.buttonLogIn);
buttonLogIn.setOnClickListener(view -> {
DialogLogIn();
});
private void DialogLogIn() {
Dialog dialog = new Dialog(MainActivity2.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.dialog_login);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));

mSpinner=dialog.findViewById(R.id.SpinnerCountry);
ArrayAdapter<String> adapter=new ArrayAdapter<>(this, android.R.layout.select_dialog_singlechoice,options);
mSpinner.setAdapter(adapter);

mEditTextPhone=dialog.findViewById(R.id.EditTextPhone);

mButtonPrevious=dialog.findViewById(R.id.ButtonPrevious);
mButtonPrevious.setOnClickListener(view -> dialog.dismiss());

mButtonNext=dialog.findViewById(R.id.ButtonNext);
mButtonNext.setOnClickListener(view -> {
if (!Objects.requireNonNull(mEditTextPhone.getText()).toString().trim().equalsIgnoreCase("")) {
//Action
dialog.dismiss();
} else {
Toast.makeText(MainActivity2.this,"Campos Vacios",Toast.LENGTH_SHORT).show();
}
});

dialog.show();
}

Clase para guardar datos

public void SaveDate(){
String Phone= Objects.requireNonNull(mEditTextPhone.getText()).toString();

String selection=mSpinner.getSelectedItem().toString();
switch (selection) {
case "Colombia":
numPhone = "+57" + Phone;
Toast.makeText(getApplicationContext(), "Número " + numPhone, Toast.LENGTH_SHORT).show();
break;
case "Ecuador":
numPhone = "+593" + Phone;
Toast.makeText(getApplicationContext(), "Número " + numPhone, Toast.LENGTH_SHORT).show();
break;
case "Panama":
numPhone = "+507" + Phone;
Toast.makeText(getApplicationContext(), "Número " + numPhone, Toast.LENGTH_SHORT).show();
break;
case "Mexico":
numPhone = "+52" + Phone;
Toast.makeText(getApplicationContext(), "Número " + numPhone, Toast.LENGTH_SHORT).show();
break;
}
}


Otro dialog para mostrar el numero que se esta guardando y pedir un pin

XML

<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
xmlns:tools="http://schemas.android.com/tools"
android:layout_gravity="center"
app:cardElevation="3dp"
app:cardUseCompatPadding="true"
app:cardCornerRadius="20dp">

<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">

<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:textSize="24sp"
android:layout_marginHorizontal="60dp"
android:layout_marginVertical="10dp"
android:text="@string/pin" />

<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/textViewPhone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/number_phone" />

<androidx.appcompat.widget.AppCompatEditText
android:id="@+id/editTextNumber"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginVertical="20dp"
android:ems="10"
android:inputType="numberPassword"
tools:ignore="SpeakableTextPresentCheck,TouchTargetSizeCheck" />

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">

<androidx.appcompat.widget.AppCompatButton
android:id="@+id/ButtonPreviousPin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:foreground="?android:attr/selectableItemBackground"
android:background="@drawable/btn_left"
android:text="@string/previous"
tools:ignore="TextContrastCheck,UnusedAttribute" />

<View
android:layout_width="1dp"
android:layout_height="20dp"/>

<androidx.appcompat.widget.AppCompatButton
android:id="@+id/ButtonNextPin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:foreground="?android:attr/selectableItemBackground"
android:background="@drawable/btn_right"
android:text="@string/next"
tools:ignore="TextContrastCheck,UnusedAttribute" />
</LinearLayout>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.cardview.widget.CardView>

JAVA
private void DialogPin() {
Dialog dialog = new Dialog(MainActivity2.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.dialog_pin);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));

mButtonPrevious=dialog.findViewById(R.id.ButtonPreviousPin);
mButtonPrevious.setOnClickListener(view -> {
DialogLogIn();
dialog.dismiss();
});

mButtonNext=dialog.findViewById(R.id.ButtonNextPin);
mButtonNext.setOnClickListener(view -> {
if (!Objects.requireNonNull(mEditTextPhone.getText()).toString().trim().equalsIgnoreCase("")) {
//Intent
dialog.dismiss();
} else {
Toast.makeText(MainActivity2.this,"Campos Vacios",Toast.LENGTH_SHORT).show();
}
});


dialog.setCancelable(false);
dialog.show();
}







Comentarios