zoukankan      html  css  js  c++  java
  • Android实现“退出确认”对话框

        @Override
        public void onBackPressed() {
        new AlertDialog.Builder(this).setTitle("确认退出吗?")
            .setIcon(android.R.drawable.ic_dialog_info)
            .setPositiveButton("确定", new DialogInterface.OnClickListener() {
     
                @Override
                public void onClick(DialogInterface dialog, int which) {
                // 点击“确认”后的操作
                MainFragmentActivity.this.finish();
     
                }
            })
            .setNegativeButton("返回", new DialogInterface.OnClickListener() {
     
                @Override
                public void onClick(DialogInterface dialog, int which) {
                // 点击“返回”后的操作,这里不设置没有任何操作
                }
            }).show();
        // super.onBackPressed();
        }

    下面是用到的背景图或按钮的图片

    经过查找资料和参考了一下例子后才知道,要实现这种效果很简单.就是在设置alertDialog的contentView.

    以下的代码是写在Activity下的,代码如下:

    public boolean onKeyDown(int keyCode, KeyEvent event) {
     // 如果是返回键,直接返回到桌面
     if(keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_HOME){
               showExitGameAlert();
     }
     
     return super.onKeyDown(keyCode, event);
    }
    private void showExitGameAlert() {
     final AlertDialog dlg = new AlertDialog.Builder(this).create();
     dlg.show();
     Window window = dlg.getWindow();
            // *** 主要就是在这里实现这种效果的.
            // 设置窗口的内容页面,shrew_exit_dialog.xml文件中定义view内容
     window.setContentView(R.layout.shrew_exit_dialog);
            // 为确认按钮添加事件,执行退出应用操作
     ImageButton ok = (ImageButton) window.findViewById(R.id.btn_ok);
     ok.setOnClickListener(new View.OnClickListener() {
      public void onClick(View v) {
       exitApp(); // 退出应用...
      }
     });
     
            // 关闭alert对话框架
            ImageButton cancel = (ImageButton) window.findViewById(R.id.btn_cancel);
            cancel.setOnClickListener(new View.OnClickListener() {
       public void onClick(View v) {
        dlg.cancel();
      }
       });
    }

    以下的是layout文件,定义了对话框中的背景与按钮.点击事件在Activity中添加.

    文件名为 : shrew_exit_dialog.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout 
     xmlns:Android="http://schemas.android.com/apk/res/android"
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content">
     
     <!-- 退出游戏的背景图 -->
     <ImageView android:id="@+id/exitGameBackground"
      android:layout_centerInParent="true" 
      android:layout_height="wrap_content"
      android:layout_width="wrap_content" 
      android:src="@drawable/bg_exit_game" />
     
     <!-- 确认按钮 -->
     <ImageButton android:layout_alignBottom="@+id/exitGameBackground"
      android:layout_alignLeft="@+id/exitGameBackground"
      android:layout_marginBottom="30dp" 
      android:layout_marginLeft="35dp"
      android:id="@+id/btn_ok" 
      android:layout_height="wrap_content"
      android:layout_width="wrap_content" 
      android:background="@drawable/btn_ok" />
     
     <!-- 取消按钮 -->
     <ImageButton android:layout_alignBottom="@+id/exitGameBackground"
      android:layout_alignRight="@+id/exitGameBackground"
      android:layout_marginBottom="30dp" 
      android:layout_marginRight="35dp"
      android:id="@+id/btn_cancel" 
      android:layout_height="wrap_content"
      android:layout_width="wrap_content" 
      android:background="@drawable/btn_cancel" />
    </RelativeLayout>

    就这样经过了以上几步,就可以实现自定义AlertDialog的效果了. 用同样的思路可以实现其它更复杂的效果.


     

  • 相关阅读:
    Qt之重启应用程序
    Qt之密码框不可选中、复制、粘贴、无右键菜单等
    Qt之国际化(系统文本-QMessageBox按钮、QLineEdit右键菜单等)
    HTTP全部报文首部字段
    工厂模式
    《Qt 实战一二三》
    Qt之国际化
    Java如何读取XML文件 具体实现
    href脱离iframe显示
    iframe并排横着显示
  • 原文地址:https://www.cnblogs.com/niray/p/4030643.html
Copyright © 2011-2022 走看看