我们知道在写JAVA代码时经常需要用到的一个东西就是对话框(Dialog),比如说我们编写的程序,别人在用的时候,我们需要给用户一些提示,而这些提示如果总是以窗口的形式弹出来难免比较麻烦,而且也加重了程序员的负担,但是很多人对安卓开发中对话框的弹出以及使用不太了解,下面有一段示例:
AlertDialog.Builder dialog=new AlertDialog.Builder(getContext());
dialog.setTitle("白棋赢了");
dialog.setMessage("是否开始新的一局");
dialog.setPositiveButton("确定", surelistener);
dialog.setNegativeButton("取消",cancellistener);
dialog.show();
这是在写安卓五子棋的时候弹出一个对话框的方法,首先要用到AlertDialog.Builder来创建一个dialog对象,后面的 new AlertDialog.Builder();
括号中的应该写的是当前类的对象(Context),也就是说如果我们想要在当前的Activity中弹出对话框,这里就可以写this,这里的getContext是因为这是写在一个我写的MyView类里面的,MyView继承了ImageView中的getContext的方法.
然后在dialog中也提供了很多方法,如设置标题(Title),信息(Message),还有两个按钮,一个是PositiveButton,一个是NetgativeButton,里面需要输入两个值,前面一个是按钮上面的文字,后面一个是按钮的监听器,需要注意的是,这里的按钮监听器是包含在android.content.DialogInterface这个包里面的。
灵活的使用对话框不仅使得代码更加简洁,也加强了用户的体验性,接下来还有一个知识点,就是如何清除位图上的资源,有两个方法,一个是将我们的位图上面的资源设为透明,map.eraseColor(Color.TRANSPARENT);//map是我们创建的位图对象,
当然,这样做的话,位图上的资源肯定还在,只是我们看不到了,如果要完全清除位图上的资源,就要采用下面的方法,p是我们创建的画笔对象Paint,c是我们创建的Canvas对象,如下:
p.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
Rect rect = new Rect(0, 0, 320, 320);
//这里的后面两个值要和我们创建的Bitmap对象的大小相同
p.setStyle(Paint.Style.FILL);
c.drawRect(rect, p);
p.setStyle(Paint.Style.FILL_AND_STROKE);
p.setXfermode(null);
不过,上面设置透明的方法也有一定的好处,一是在于代码比较简洁,二是在某些场合下,我们无法完成第二种方法,比如说我们是要在另外一个Activity的方法中清空这里的位图资源,使用第二种方法肯定会有一些需要考虑的地方,比如说画笔(Paint)与画布(Canvas)必须是公有的,而这种方法显然只需要Bitmap对象是公有的即可。这样可以避免在多个不同的类中同时含有画笔与画布对象,但有时候需要公用,有时候又需要分开用的情况。
转载于:https://blog.51cto.com/daheyuan/1133132