在 Android 中,每个对话框都显示Builder
为用于该对话框类。是这些Builder
类中的静态内部类。那么为什么 Builder 被赋予了构建对话框的控制权呢?提前致谢。
问问题
907 次
2 回答
5
它只是一个帮助类,允许您调用链中的方法并轻松设置正/负按钮。例如:
警报对话框生成器
AlertDialog.Builder alert = new AlertDialog.Builder(this)
.setTitle("this is title")
.setMessage("this is message")
.setCancelable(false)
.setPositiveButton("OK", null);
alert.show();
警报对话框
AlertDialog alert2 = new AlertDialog.Builder(this).create();
alert2.setTitle("this is title");
alert2.setMessage("");
alert2.setCancelable(false);
alert2.setButton(AlertDialog.BUTTON_POSITIVE, "OK", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// null
}
});
alert2.show();
因此,现在您可能会看到用两种不同方式创建相同事物的难易程度不同。
于 2012-08-27T10:14:56.333 回答
0
我完全同意waqaslam,但同时,AlertDialog 为您提供了更多自定义对话框的方式。就像您可以通过使用轻松地在 AlertDialog 中应用动画一样
// Create an enter animation(name = enter_anim)
<translate android:fromXDelta="-100%p"
android:fromYDelta="0%"
android:duration="1000">
</translate>
//Create an exit animation(name = exit_anim)
<translate
android:duration="1000"
android:fromXDelta="0%"
android:toXDelta="100%p">
</translate>
//Then combine the enter and exit animation by creating a style
<style name="DialogSlide">
<item name="android:windowEnterAnimation">@anim/enter_anim</item>
<item name="android:windowExitAnimation">@anim/exit_anim</item>
</style>
//Now creating an AlertDialog
AlertDialog dialog = new AlertDialog.Builder(this).create();
dialog.setTitle("Alert Dialog");
dialog.setMessage("Hello! This is an alert dialog");
dialog.getWindow().getAttributes().windowAnimations=R.style.DialogSlide;
dialog.show();
//这条线将动画附加到您的对话框中,您不会在 AlertDialog.Builder 类中找到它
dialog.getWindow().getAttributes().windowAnimations=R.style.DialogSlide;
因此,通过这种方式,您可以创建任何类型的动画并通过创建样式附加到 AlertDialog。但我认为你很少能通过使用 AlertDialog.Builder 类来实现这一点。因此,您可以通过使用动画为用户提供更好的用户体验。
于 2020-07-03T03:16:27.370 回答