代码改变世界

android自定义透明dialog菜单

2012-05-29 15:59  omgee  阅读(1286)  评论(0编辑  收藏  举报

制作菜单时,我用了dialog加载一个view的方式,但是总是会出现一些黑色阴影,消除方法其实很简单;

首先在style.xml文件里面定义一下dialgo样式,如果没有就新建一下

style.xml

<style name="Dialog" parent="android:style/Theme.Dialog"> 
     <item name="android:windowNoTitle">true</item> 
     <item name="android:windowFrame">@null</item> <!--边框-->
     <item name="android:windowIsFloating">true</item> <!--是否浮现在activity之上-->
     <item name="android:windowIsTranslucent">true</item><!--半透明-->  
    <item name="android:background">@android:color/transparent</item><!--背景透明-->
    <item name="android:windowBackground">@android:color/transparent</item><!--背景透明-->
     <item name="android:backgroundDimEnabled">true</item> <!--蒙版- 模糊 -->
 </style> 


java里创建 dialog的时候直接加载就好了

@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if (keyCode == KeyEvent.KEYCODE_MENU && event.getRepeatCount() == 0) {

		Dialog	dialog_about = new Dialog(LinkMap.this, R.style.Dialog);// 去白框dialog里面具体设置样式
			dialog_about.setContentView(MenuView());

			// 定义dialog大小跟位置(默认Gravity是局中)
			Window dialogWindow = dialog_about.getWindow();
			dialogWindow.setGravity(Gravity.BOTTOM | Gravity.BOTTOM);

			dialog_about.setCanceledOnTouchOutside(true);// 设置点击Dialog外部任意区域关闭Dialog
			dialog_about.show();

			Log.i("menuview", "Menuclick");

		}

		if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
			dialog();
			return false;
		}
		return false;
	}

 menuview

 

	// 菜单view
	public View MenuView() {
		View view = super.getLayoutInflater().inflate(R.layout.aboutview, null);
		// 登录/注册
		ImageButton btnlogin = (ImageButton) view.findViewById(R.id.btnlogin);
		btnlogin.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				Intent intent = new Intent(LinkMap.this, Login.class);
				startActivity(intent);
			}
		});

  

 

ok了。。