如何在 Android 中实现自定义对话框制作器?
在本文中,我们将在 android studio 中制作一个 Custom Dialog Maker 应用程序。在这个应用程序中,我们可以创建我们自己选择的样式、类型和动画的对话框。
什么是对话框?
对话框是一个小窗口,它提示用户做出决定,提供一些附加信息,并通知用户有关某些特定任务的信息。
对话的目标/目的:
以下是对话的主要目的或目标——
- 警告用户有关任何活动。
- 通知用户任何活动。
- 告诉用户这是一个错误与否。
- 告诉用户他/她想要的动作已经成功。
我们将在本文中构建什么?
在这个应用程序中,我们将为用户提供选择他想要的对话框类型的便利,即他/她可以选择所需对话框的类型、样式和动画。请注意,我们将使用Java语言实现此应用程序。下面给出了一个示例视频,以了解我们将在本文中做什么。
分步实施
第 1 步:创建一个新项目
- 打开一个新项目。
- 我们将使用Java语言处理 Empty Activity。保持所有其他选项不变。
- 您可以在方便时更改项目的名称。
- 将有两个名为activity_main.xml 和 MainActivity 的默认文件。Java。
如果您不知道如何在 Android Studio 中创建新项目,那么您可以参考如何在 Android Studio 中创建/启动新项目?
第 2 步:添加依赖项和 JitPack 存储库
导航到Gradle Scripts > build.gradle(Module:app)并在依赖项部分添加以下依赖项。
implementation ‘com.github.gabriel-TheCode:AestheticDialogs:1.3.5’
将 JitPack 存储库添加到您的构建文件中。将其添加到 allprojects{} 部分中存储库末尾的根 build.gradle 中。
allprojects {
repositories {
…
maven { url “https://jitpack.io” }
}
}
添加此依赖项后同步您的项目,现在我们将转向它的实现。
步骤 3:使用 activity_main.xml 文件
在这里,我们将设计应用程序的用户界面。我们将在各自的作品中使用以下组件:
- TextView:向用户显示消息以选择类型、样式或动画。
- Spinner:打开下拉列表供用户选择类型、样式或动画。
- 按钮:显示对话框。
在activity_main.xml文件中使用以下代码。
XML
Java
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import androidx.appcompat.app.AppCompatActivity;
import com.thecode.aestheticdialogs.AestheticDialog;
import com.thecode.aestheticdialogs.DialogAnimation;
import com.thecode.aestheticdialogs.DialogStyle;
import com.thecode.aestheticdialogs.DialogType;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
// Initialize variables
Spinner spStyle, spType, spAnimation;
Button btShow;
ArrayList styleList = new ArrayList<>();
ArrayList typeList = new ArrayList<>();
ArrayList Animationlist = new ArrayList<>();
DialogStyle dialogStyle;
DialogAnimation dialogAnimation;
DialogType dialogType;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// assign variables
spStyle = findViewById(R.id.sp_style);
spType = findViewById(R.id.sp_type);
spAnimation = findViewById(R.id.sp_animation);
btShow = findViewById(R.id.bt_show);
// add dialog styles to arraylist
styleList.add(DialogStyle.FLASH);
styleList.add(DialogStyle.CONNECTIFY);
styleList.add(DialogStyle.TOASTER);
styleList.add(DialogStyle.EMOJI);
styleList.add(DialogStyle.EMOTION);
styleList.add(DialogStyle.DRAKE);
styleList.add(DialogStyle.RAINBOW);
styleList.add(DialogStyle.FLAT);
// set adapter to style spinner
spStyle.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, styleList));
// add dialog types to arraylist
typeList.add(DialogType.ERROR);
typeList.add(DialogType.INFO);
typeList.add(DialogType.WARNING);
typeList.add(DialogType.SUCCESS);
// set adapter to type spinner
spType.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, typeList));
// add dialog animations to arraylist
Animationlist.add(DialogAnimation.FADE);
Animationlist.add(DialogAnimation.CARD);
Animationlist.add(DialogAnimation.DEFAULT);
Animationlist.add(DialogAnimation.DIAGONAL);
Animationlist.add(DialogAnimation.IN_OUT);
Animationlist.add(DialogAnimation.SHRINK);
Animationlist.add(DialogAnimation.SLIDE_DOWN);
Animationlist.add(DialogAnimation.SLIDE_LEFT);
Animationlist.add(DialogAnimation.SLIDE_RIGHT);
Animationlist.add(DialogAnimation.SLIDE_UP);
Animationlist.add(DialogAnimation.SPIN);
Animationlist.add(DialogAnimation.SPLIT);
Animationlist.add(DialogAnimation.SWIPE_LEFT);
Animationlist.add(DialogAnimation.SWIPE_RIGHT);
Animationlist.add(DialogAnimation.WINDMILL);
Animationlist.add(DialogAnimation.ZOOM);
// set adapter to animation spinner
spAnimation.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, Animationlist));
// to select style
spStyle.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView> adapterView, View view, int i, long l) {
// get selected style
dialogStyle = styleList.get(i);
}
@Override
public void onNothingSelected(AdapterView> adapterView) {
}
});
// to select type
spType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView> adapterView, View view, int i, long l) {
// get selected style
dialogType = typeList.get(i);
}
@Override
public void onNothingSelected(AdapterView> adapterView) {
}
});
// to select animation
spAnimation.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView> adapterView, View view, int i, long l) {
// get selected style
dialogAnimation = Animationlist.get(i);
}
@Override
public void onNothingSelected(AdapterView> adapterView) {
}
});
// to show dialog as output
btShow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// initialize dialog
AestheticDialog.Builder builder = new AestheticDialog.Builder(MainActivity.this, dialogStyle, dialogType);
// set title
builder.setTitle("Title");
// set message
builder.setMessage("Message");
// set animation
builder.setAnimation(dialogAnimation);
// show dialog
builder.show();
}
});
}
}
执行完上面的代码设计的activity_main.xml文件是这样的。
第 4 步:使用MainActivity。 Java文件
转到主活动。 Java文件,参考如下代码。下面是MainActivity的代码。 Java文件。代码中添加了注释以更详细地理解代码。
Java
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import androidx.appcompat.app.AppCompatActivity;
import com.thecode.aestheticdialogs.AestheticDialog;
import com.thecode.aestheticdialogs.DialogAnimation;
import com.thecode.aestheticdialogs.DialogStyle;
import com.thecode.aestheticdialogs.DialogType;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
// Initialize variables
Spinner spStyle, spType, spAnimation;
Button btShow;
ArrayList styleList = new ArrayList<>();
ArrayList typeList = new ArrayList<>();
ArrayList Animationlist = new ArrayList<>();
DialogStyle dialogStyle;
DialogAnimation dialogAnimation;
DialogType dialogType;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// assign variables
spStyle = findViewById(R.id.sp_style);
spType = findViewById(R.id.sp_type);
spAnimation = findViewById(R.id.sp_animation);
btShow = findViewById(R.id.bt_show);
// add dialog styles to arraylist
styleList.add(DialogStyle.FLASH);
styleList.add(DialogStyle.CONNECTIFY);
styleList.add(DialogStyle.TOASTER);
styleList.add(DialogStyle.EMOJI);
styleList.add(DialogStyle.EMOTION);
styleList.add(DialogStyle.DRAKE);
styleList.add(DialogStyle.RAINBOW);
styleList.add(DialogStyle.FLAT);
// set adapter to style spinner
spStyle.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, styleList));
// add dialog types to arraylist
typeList.add(DialogType.ERROR);
typeList.add(DialogType.INFO);
typeList.add(DialogType.WARNING);
typeList.add(DialogType.SUCCESS);
// set adapter to type spinner
spType.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, typeList));
// add dialog animations to arraylist
Animationlist.add(DialogAnimation.FADE);
Animationlist.add(DialogAnimation.CARD);
Animationlist.add(DialogAnimation.DEFAULT);
Animationlist.add(DialogAnimation.DIAGONAL);
Animationlist.add(DialogAnimation.IN_OUT);
Animationlist.add(DialogAnimation.SHRINK);
Animationlist.add(DialogAnimation.SLIDE_DOWN);
Animationlist.add(DialogAnimation.SLIDE_LEFT);
Animationlist.add(DialogAnimation.SLIDE_RIGHT);
Animationlist.add(DialogAnimation.SLIDE_UP);
Animationlist.add(DialogAnimation.SPIN);
Animationlist.add(DialogAnimation.SPLIT);
Animationlist.add(DialogAnimation.SWIPE_LEFT);
Animationlist.add(DialogAnimation.SWIPE_RIGHT);
Animationlist.add(DialogAnimation.WINDMILL);
Animationlist.add(DialogAnimation.ZOOM);
// set adapter to animation spinner
spAnimation.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, Animationlist));
// to select style
spStyle.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView> adapterView, View view, int i, long l) {
// get selected style
dialogStyle = styleList.get(i);
}
@Override
public void onNothingSelected(AdapterView> adapterView) {
}
});
// to select type
spType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView> adapterView, View view, int i, long l) {
// get selected style
dialogType = typeList.get(i);
}
@Override
public void onNothingSelected(AdapterView> adapterView) {
}
});
// to select animation
spAnimation.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView> adapterView, View view, int i, long l) {
// get selected style
dialogAnimation = Animationlist.get(i);
}
@Override
public void onNothingSelected(AdapterView> adapterView) {
}
});
// to show dialog as output
btShow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// initialize dialog
AestheticDialog.Builder builder = new AestheticDialog.Builder(MainActivity.this, dialogStyle, dialogType);
// set title
builder.setTitle("Title");
// set message
builder.setMessage("Message");
// set animation
builder.setAnimation(dialogAnimation);
// show dialog
builder.show();
}
});
}
}
恭喜!我们已经成功地在android studio中制作了Custom Dialog maker的应用程序。这是我们应用程序的最终输出。
输出: