Android应用程序设计——弹出框和悬浮框

AlertDialog 对话框在程序中不是必备的,可是用好对话框能对我们编写的应用增色不少。采用对话框能够大大添加应用的友好性。比较经常使用的背景是:用户登陆、网络正在下载、下载成功或者失败的提示等。

  • Activity中AlertDialog(提示框)的创建方式

1)使用创建AlertDialog.Builder对象。

2)调用AlertDialog.Builder的setTitle()方法设置标题。

3)调用AlertDialog.Builder的setIcon()方法设置图标。

4)调用AlertDialog.Builder的相关方法设置内容。

5)调用AlertDialog.Builder的 setNeutralButton ,setPositiveButton,

setNegativeButton设置按钮。

备注:3个按钮的区别,都是系统默认的按钮,点击后会退出AlertDialog对象,只是默认出现的位置不一样,setNeutralButton(setPositiveButton()setNegativeButton()

6)调用AlertDialog.Builder的oncreate()方法创建,

7)调用AlertDialog.Builder的show()进行显示。

  • AlertDialog.Builder设置内容的相关方法

1)setMessage()              设置对话框内容为简单的文本内容。

2)setItem()                 设置对话框内容为列表项。

3)setSingleChoiceItems()    设置对话框为单选内容列表项。

4)setMultiChoiceItems()     设置对话框为多选列表项。

5)setAdapter()                  设置对话框为自定义列表项。

6)setView()                 设置对话框为内容自定义view。

  • 常用方法

1)使用setMessage()方法设置内容

// 实例化提示框

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setIcon(R.drawable.ic_launcher);    // 设置提示框的图标

builder.setTitle("提示框标题");         // 设置提示框的标题

// 设置提示框显示的文本

builder.setMessage("提示框显示的提示语句");

备注:设置提示框的按钮及按钮监听事件,必须显示指定为DialogInterface.OnClickListener

builder.setPositiveButton("确定",new DialogInterface.OnClickListener() {

         public void onClick(DialogInterface dialog, int which) {}});

builder.setNegativeButton("取消",new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {}});

builder.create();                      // 在Activity中创建提示框

builder.show();                             // 在Activity中显示提示框

 

备注:可以根据需要设置或者不设置提示框的图标、标题、显示的内容和按钮,不设置不显示该部分,程序可以正常运行。

 

  • PopUpWindow(弹出框或弹出窗口)

PopUpWindow: 在android.widget包下,弹出窗口的形式展示。官方文档对该控件的描述是:“一个弹出窗口控件,可以用来显示任意视图(View),而且会浮动在当前 活动(activity)的顶部”。PopupWindow可以让我们实现多种自定义View,例如:menu、alertdialog等弹窗似的View。

  • 初始化的方法

//初始化PopupWindow对象

PopupWindow  pop = new PopupWindow(

view,                          //view加载显示的view;

LayoutParams.MATCH_PARENT, //2 设置pop对象显示的宽 ;

LayoutParams.WRAP_CONTENT);    //3 设置pop对象显示的高

  • 常用的方法

isShowing()                    //判断PopUpWindow对象是否显示

dimiss()                       //撤销PopUpWindow对象的显示

showAsDropDown(View v)         //设置PopUpWindow对象显示在view的正下方

showAtLocation(View v,gravity, x, y)   //设置PopUpWindow对象显示的相对位置

setWidth(int i)                //设置PopUpWindow对象显示的宽度

setHeight(int i)               //设置PopUpWindow对象显示的高度

  • Activity中的使用

public class MainActivity extends Activity {

    //声明操作的控件对象

    private Button btn;

    private LayoutInflater inflater;

    private PopupWindow pop;

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        //调用常见PopUpWindow对象的方法

        show();

        //与XML布局中的控件绑定

        btn = (Button) findViewById(R.id.btn);

        //添加监听事件

        btn.setOnClickListener(new OnClickListener() {   

             public void onClick(View v) {

                  //如果pop对象已经显示,就撤销显示

                  if (pop.isShowing()) {

                      //撤销显示pop对象

                      pop.dismiss();

                  }else {

                      //设置PopUpWindow对象显示的位置在那个View对象下,

                      //一般建议写当前操作的view;

//pop.showAsDropDown(v);      

                      //设置PopUpWindow对象显示在当前Activity的位置,

                      //参数:1 view,操作的iew; 2 方位; 3 X坐标; 4 Y坐标

                      pop.showAtLocation(v,Gravity.TOP, 0, 0);

                  }  

         });  

    }

    //创建PopUpWindow对象

    private PopupWindow show(){

    if (pop == null) {

         //设置布局

          View view = getLayoutInflater().inflate(R.layout.activity_mall_window, null);

          //获取布局上的控件并添加监听事件

          final Button btn1 = (Button) view.findViewById(R.id.mall_pop_btn_cancel);

             btn1.setOnClickListener(new OnClickListener() {

                  public void onClick(View v) {

                      Toast.makeText(getApplicationContext(),

"你点击了"+btn1.getText().toString(),

                               Toast.LENGTH_SHORT).show();

                      pop.dismiss();

                  }

             });

         //初始化pop对象,

//参数:1 view加载显示的view; 2 设置pop对象显示的宽 ; 3 设置pop对象显示的高

          pop = new PopupWindow(view,                                                            LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT);

         }  

    return pop;       //返回pop

    }

}

 

猜你喜欢

转载自blog.csdn.net/qq_42595261/article/details/81838641