首页 > 代码库 > android自定义Dialog
android自定义Dialog
效果图:
修改系统默认的Dialog.
1,修改样式,在style.xml中添加一下代码
<style name="DialogTheme" parent="@android:style/Theme.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowNoTitle">true</item>
</style> 2.自定义Dialog类.
public class MyDialog extends Dialog {
private static int default_width = 160; // 默认宽度
private static int default_height = 120;// 默认高度
public MyDialog(Context context) {
super(context);
}
public MyDialog(Context context,int layout,int style){
this(context, default_width, default_height, layout, style);
}
public MyDialog(Context context,int width,int height,int layout,int style) {
super(context, style);
setContentView(layout);
//设置窗口属性
Window window=getWindow();
WindowManager.LayoutParams lp=window.getAttributes();
//设置宽度,高度,密度,对其方式
float density=getDensity(context);
lp.width=(int)(width*density);
lp.height=(int) (height*density);
lp.gravity=Gravity.CENTER;
window.setAttributes(lp);
}
/**
* 获取显示密度
*
* @param context
* @return
*/
public float getDensity(Context context) {
Resources res = context.getResources();
DisplayMetrics dm = res.getDisplayMetrics();
return dm.density;
}
}
3.新建一个自定义布局 dialog_layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/dialog_bg"
android:gravity="center"
android:orientation="vertical" >
<ProgressBar
style="@style/DialogTheme"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/tv_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="正在执行"
/>
</LinearLayout>
4,布局文件中的资源文件
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<corners android:radius="10dp" />
<solid android:color="#55000000" />
</shape>
5,在MainActivity中使用
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyDialog mD=new MyDialog(this, R.layout.dialog_layout, R.style.DialogTheme);
mD.show();
}
} 来自为知笔记(Wiz)
android自定义Dialog
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。