今天做了一个需要做一个弹出式的PopupWindow, 但是无意间找到了一种将Activity伪装成Dialog的方法,在这里记录一下~~
首先,需要创建一个新的style
<style name="MyDialogStyle">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<item name="android:backgroundDimEnabled">true</item>
</style>
简单解释一下~~
windowBackground: 窗口背景色
windowFrame:Frame框架
windowIsFloating:是否浮现在activity之上
windowIsTranslucent:是否半透明
windowAnimationStyle:弹出效果
创建一个新Activity,在AndroidManifest中目标activity中加入
android:theme="@style/MyDialogStyle"
需要注意的是在新建的activity中给控件的layout添加监听器,当点击外部时关掉当前activity就可以了~~
这种做法比起PopUpWindow要简单很多
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_info);
layout=(LinearLayout)findViewById(R.id.main_dialog_layout);
layout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "提示:点击窗口外部关闭窗口!",
Toast.LENGTH_SHORT).show();
}
});
}
@Override
public boolean onTouchEvent(MotionEvent event){
InfoActivity.this.finish();
return true;
}
这都是很多大牛想出来的,我只是自己整理了一下,方便以后使用~~
第一次写博客,有什么不当之处多担待~~(就这么推卸责任了。。)