System.Windows.Window parentWindow = System.Windows.Window.GetWindow(window); Grid layer = new Grid() {Background = new SolidColorBrush(Color.FromArgb(128,0,0,0))}; UIElement original = parentWindow.Content as UIElement; //parentWindow.Content = null; Grid comtainer = new Grid(); comtainer.Children.Add(original); comtainer.Children.Add(layer); parentWindow.Content = comtainer; AddGYSView addGYSView = new AddGYSView(); addGYSView.Show();
时间: 2024-04-02 09:35:03 浏览: 55
这段代码的功能是将原始窗口内容放入一个新的 Grid 中,并在顶部添加一个透明度为 0.5 的黑色层,然后在此窗口上打开一个新的 AddGYSView 窗口。
具体实现方式为:
1. 获取当前窗口对象 parentWindow。
2. 创建一个新的 Grid 对象 layer,设置其背景色为半透明的黑色。
3. 获取原始窗口内容 original。
4. 创建一个新的 Grid 对象 container,将原始窗口内容 original 和黑色层 layer 添加到 container 中。
5. 将 container 设置为 parentWindow 的内容。
6. 创建一个新的 AddGYSView 窗口 addGYSView,并将其显示出来。
这段代码的作用是在打开新的 AddGYSView 窗口时,将原始窗口内容作为背景,并在上面添加一个半透明的黑色层,以达到遮挡原始窗口内容的目的,提高用户体验。
相关问题
private void course_showDialog_1() { final androidx.appcompat.app.AlertDialog dialog = new androidx.appcompat.app.AlertDialog.Builder(this).create(); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.show(); ColorDrawable drawable = new ColorDrawable(Color.TRANSPARENT); Window window = dialog.getWindow(); //背景全透明 window.setBackgroundDrawable(drawable); window.setDimAmount(1.5f); //弹出时状态栏颜色不改变 window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); window.setGravity(Gravity.CENTER); window.setContentView(R.layout.course); WindowManager.LayoutParams lp = window.getAttributes(); lp.width = WindowManager.LayoutParams.FILL_PARENT; lp.height = WindowManager.LayoutParams.FILL_PARENT; window.setAttributes(lp); textViewTime = window.findViewById(R.id.textViewTime24); mOffHandler = new Handler() { public void handleMessage(Message msg) { if (msg.what > 0) { // 动态显示倒计时 textViewTime.setText("(" + msg.what + ")"); } else { // 倒计时结束自动关闭 if (dialog != null) { dialog.dismiss(); } mOffTime.cancel(); } super.handleMessage(msg); } }; mOffTime = new Timer(true); TimerTask tt = new TimerTask() { public void run() { if (countTime > 0) { countTime--; } Message msg = new Message(); msg.what = countTime; mOffHandler.sendMessage(msg); } }; mOffTime.schedule(tt, 1000, 1000); }
这是一个 Android Studio 的代码段,它定义了一个名为 `course_showDialog_1()` 的方法。该方法创建了一个对话框,其中包括一个倒计时器和一个布局,该布局是通过 `R.layout.course` 引用的。对话框的背景是全透明的,而且它在屏幕中央显示。在 `mOffHandler` 和 `mOffTime` 中,定义了一个消息处理程序和一个计时器任务,用于更新倒计时器的文本。当倒计时结束时,对话框将自动关闭。
private void initView() { // 创建弹框 AppApplication.getInstance().registerAppValueObserver(this); mCustomDialog = new Dialog(this); mCustomDialog.setContentView(R.layout.custom_dialog_button); mCustomDialog.setCanceledOnTouchOutside(false); Window window = mCustomDialog.getWindow(); if (window != null) { WindowManager.LayoutParams layoutParams = window.getAttributes(); layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT; // 设置宽度值,可以是具体的像素值或者是 WRAP_CONTENT、MATCH_PARENT 等常量 window.setAttributes(layoutParams); }
这段代码是在 `initView()` 方法中进行的。首先,它注册了一个 `AppValueObserver`,这个 `AppValueObserver` 是用来监听应用程序值变化的。然后,它创建了一个名为 `mCustomDialog` 的对话框,并设置了对话框的布局为 `R.layout.custom_dialog_button`。接着,它设置了对话框的外部点击事件不可取消。最后,它获取对话框的窗口,并设置了窗口的宽度为 `MATCH_PARENT`,使其宽度与父视图的宽度相同。
阅读全文