自定义dialog

public class IndividualityDialogActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        Button btn = (Button)findViewById(R.id.button1);
        
        btn.setOnClickListener(new OnClickListener()
        {
            public void onClick(View v)
            {

                //多个Activity嵌套时用this.parent否则异常
                new myDialog(IndividualityDialogActivity.this)
                    .showDialog(R.layout.dialog, 80, 50);
            }
        });
    }

------------------------------------

    //自定义Dialog
    class myDialog extends Dialog{
        
        private Window window = null;
        
        public myDialog(Context context)
        {
            super(context);
        }
        
        public void showDialog(int layoutResID, int x, int y){
            setContentView(layoutResID);
            
            windowDeploy(x, y);
            
            //设置触摸对话框意外的地方取消对话框
            setCanceledOnTouchOutside(true);
            show();
        }
        
        //设置窗口显示
        public void windowDeploy(int x, int y){
            window = getWindow(); //得到对话框
            window.setWindowAnimations(R.style.dialogWindowAnim); //设置窗口弹出动画
            window.setBackgroundDrawableResource(R.color.vifrification); //设置对话框背景为透明
            WindowManager.LayoutParams wl = window.getAttributes();
            //根据x,y坐标设置窗口需要显示的位置
            wl.x = x; //x小于0左移,大于0右移
            wl.y = y; //y小于0上移,大于0下移  
//            wl.alpha = 0.6f; //设置透明度
//            wl.gravity = Gravity.BOTTOM; //设置重力
            window.setAttributes(wl);
        }
    }
}

-------------------------

<!-- 
    android:fromXscale="1.0" 表示开始时X轴缩放比例为 1.0 (原图大小 * 1.0 为原图大小)
    android:toXscale="0.0"表示结束时X轴缩放比例为0.0(原图大小 *0.0 为缩小到看不见)
    android:fromYscale="1.0" 表示开始时Y轴缩放比例为 1.0 (原图大小 * 1.0 为原图大小)
    android:toYscale="0.0"表示结束时Y轴缩放比例为0.0(原图大小 *0.0 为缩小的看不到了)
    android:pivotX="50%" X轴缩放的位置为中心点
    android:pivotY="50%" Y轴缩放的位置为中心点
    android:duration="2000" 动画播放时间 这里是2000毫秒也就是2秒
 -->

点击对话框外面和按返回键对话框不会消失,按返回键还好解决,拦截下返回键就OK了。

public void showNoProject(){
        Builder builder = new AlertDialog.Builder(MainActivity.this)
        .setMessage("您还没有项目,请先添加项目")
        .setPositiveButton("去添加项目", new OnClickListener() {
            
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
                
            }
        })
        .setNegativeButton("关闭", new OnClickListener() {
            
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
                
            }
        });
        builder.setCancelable(false);
        builder.show();
    }

/------------------------------------------------------------------

//编辑单价
public void eidtPrice(String aa){
{

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle("请输入用户名和密码"+aa);
// 通过LayoutInflater来加载一个xml的布局文件作为一个View对象
View view = LayoutInflater.from(getActivity()).inflate(R.layout.bjedit_pro_price, null);
// 设置我们自己定义的布局文件作为弹出框的Content
builder.setView(view);

final EditText username = (EditText)view.findViewById(R.id.name);
final EditText password = (EditText)view.findViewById(R.id.price);

builder.setPositiveButton("确定", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
String a = username.getText().toString().trim();
String b = password.getText().toString().trim();
// 将输入的用户名和密码打印出来
// Toast.makeText(MainActivity.this, "用户名: " + a + ", 密码: " + b, Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{

}
});
builder.show();
}

原文地址:https://www.cnblogs.com/manmanlu/p/5594178.html