1:自定义MyDialog extends Dialog
import android.app.ActionBar.LayoutParams;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.Display;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.Window;
import android.view.WindowManager;
public class MyDialog extends Dialog {
//这个参数是不用解释的
Context context;
//这个也不用
int layoutid;
//这个解释一下:为了取得Display 来设置dialog显示的时候的宽度和高度
WindowManager wm = null;
//这个是设置主题
int theme;
public MyDialog(Context context) {
super(context);
// TODO Auto-generated constructor stub
this.context = context;
}
public MyDialog(Context context, WindowManager m, int layoutid,int theme){
super(context,theme);
this.layoutid = layoutid;
this.context = context;
this.wm = m;
this.theme = theme;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
Window window = this.getWindow();
window.setGravity(Gravity.CENTER);
Display d = wm.getDefaultDisplay();
this.setContentView(layoutid);
this.setCanceledOnTouchOutside(false);
this.getWindow().setLayout((int) (d.getWidth() * 0.9),LayoutParams.WRAP_CONTENT);
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (KeyEvent.KEYCODE_BACK == event.getKeyCode()) {
if (event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) {
//Do Nothing
}
return true;
} else {
return true;
}
}
}
2:利用构造函数新建dialog,以及控件事件
WindowManager m = getWindowManager();
downloaddialog = new MyDialog(MoreActivity.this,m,R.layout.downloadl,R.style.add_dialog);
downloaddialog.show();
appname = (TextView)downloaddialog.findViewById(R.id.appndescribe);
emstx = (ProgressBar)downloaddialog.findViewById(R.id.appdownprogress);
appname.setText(updateinfo2.getDescription());
Button cancel = (Button)downloaddialog.findViewById(R.id.downcancel);
3:styles.xml定义add_dialog
<style name="add_dialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item><!-- 边框 -->
<item name="android:windowIsFloating">true</item><!-- 是否浮现在activity之上 -->
<item name="android:windowIsTranslucent">true</item><!-- 半透明 -->
<item name="android:windowNoTitle">true</item><!-- 无标题 -->
<item name="android:windowBackground">@drawable/dialogbac</item><!-- 自己想要的背景 -->
<item name="android:backgroundDimEnabled">true</item><!-- 模糊 -->
</style>
完成