public class SetupDialog extends Dialog implements View.OnClickListener{
private Context context;
private WindowManager wm;
private RelativeLayout change_user;
private RelativeLayout change_url;
public SetupDialog(Context context, int theme,WindowManager wm) {
super(context, theme);
// TODO Auto-generated constructor stub
this.context=context;
this.wm=wm;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(R.layout.setupdialog, null);
change_user = (RelativeLayout)v.findViewById(R.id.change_user);
change_user.setOnClickListener(this);
change_url = (RelativeLayout)v.findViewById(R.id.change_url);
change_url.setOnClickListener(this);
setContentView(v);
// setTitle("设置");
Window dialogWindow = getWindow();
WindowManager.LayoutParams lp = dialogWindow.getAttributes();
// dialogWindow.setGravity(Gravity.LEFT | Gravity.TOP);
dialogWindow.setGravity(Gravity.CENTER);
DisplayMetrics dm = new DisplayMetrics();
Display d = wm.getDefaultDisplay(); // 获取屏幕宽、高用
d.getMetrics(dm);
// float density = dm.density; // 屏幕密度(像素比例:0.75/1.0/1.5/2.0)
// lp.x = 0; // 新位置X坐标
// lp.y = (int)(60*density+0.5f); // 新位置Y坐标
lp.alpha=0.9f;
lp.width = (int) (d.getWidth() * 0.8); // 宽度
lp.height = (int) (d.getHeight() * 0.3); // 高度
dialogWindow.setAttributes(lp);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.change_url:
Intent intent = new Intent(context,SetupActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
context.startActivity(intent);
break;
case R.id.change_user:
Intent intent2 = new Intent(context,LoginActivity.class);
intent2.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity(intent2);
break;
}
}
}
复写Dialog的以下构造函数
Dialog(Context context,int theme)
创建dialog时将以下style传入第二个参数
<style name="dialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item><!--边框 -->
<item name="android:windowIsFloating">true</item><!--是否浮现在activity之上 -->
<item name="android:windowIsTranslucent">false</item><!--半透明 -->
<item name="android:windowNoTitle">true</item>
<item name="android:background">@android:color/black</item>
<item name="android:windowBackground">@null</item>
<item name="android:backgroundDimEnabled">false</item><!--模糊 -->
</style>
requestWindowFeature(Window.FEATURE_NO_TITLE);
如何设置dialog的位置和透明度
Window dialogWindow = getWindow();
WindowManager.LayoutParams lp = dialogWindow.getAttributes();
// dialogWindow.setGravity(Gravity.LEFT | Gravity.TOP);
dialogWindow.setGravity(Gravity.CENTER);//设置dialog相对屏幕的对齐方式
DisplayMetrics dm = new DisplayMetrics();
Display d = wm.getDefaultDisplay(); // 获取屏幕宽、高用
d.getMetrics(dm);
// float density = dm.density; // 屏幕密度(像素比例:0.75/1.0/1.5/2.0)
// lp.x = 0; // 新位置X坐标
// lp.y = (int)(60*density+0.5f); // 新位置Y坐标(60为XML文件中以dp为单位的尺寸,通过获得屏幕密度将其转换为像素px尺寸)
lp.alpha=0.9f;
lp.width = (int) (d.getWidth() * 0.8); // 宽度
lp.height = (int) (d.getHeight() * 0.3); // 高度
dialogWindow.setAttributes(lp);