PopupWindow、Activity做伪弹窗

1. PopupWindow
 直接上代码:
public OnClickListener menu_press=new OnClickListener() {		
@Override
public void onClick(View v) {
//获取LayoutInflater实例 
LayoutInflater	inflater = (LayoutInflater)PopActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
popuView=inflater.inflate(R.layout.alert_dialog, null);
//怎样将我的View加入到PopupWindow中呢???
menuWindow2=new PopupWindow(popuView,LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT); 	
//设置如下四条信息,当点击其他区域使其隐藏,要在show之前配置 
menuWindow2.setFocusable(true); 
menuWindow2.setOutsideTouchable(true); 
menuWindow2.update(); 
menuWindow2.setBackgroundDrawable(new BitmapDrawable()); 
menuWindow2.showAtLocation(PopActivity.this.findViewById(R.id.popLayout), Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0,50); 
//设置layout在PopupWindow中显示的位置 

Button btn_take_photo = (Button)popuView.findViewById(R.id.btn_take_photo);
//这里这个popuView不能少,指示是哪个View上的控件。
Button btn_pick_photo = (Button)popuView.findViewById(R.id.btn_pick_photo);
Button btn_cancel = (Button) popuView.findViewById(R.id.btn_cancel);	
//下面对每一个Layout进行单击事件的注册吧。。。 

btn_take_photo.setOnClickListener(new OnClickListener() {			
	@Override
	public void onClick(View v) {
		menuWindow2.dismiss();
	}
});		
}
};
 alert_dialog.xml中只定义了3个Button.还可以设置它的弹出方式:// 设置SelectPicPopupWindow弹出窗体动画效果menuWindow2.setAnimationStyle(R.style.AnimBottom);这个动画方式在 style.xml 中定义: 
<style name="AnimBottom" parent="@android:style/Animation">
        <item name="android:windowEnterAnimation">@anim/push_bottom_in</item>
        <item name="android:windowExitAnimation">@anim/push_bottom_out</item>
    </style>
 可以参考这篇文章:

手把手教会popupWindow从下往上弹出效果的实现




2. Activity做伪弹窗
Activity:
public class ExitActivity extends Activity {
private LinearLayout layout;
@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
	setContentView(R.layout.exit_dialog);
	layout = (LinearLayout) findViewById(R.id.exit_layout);
	layout.setOnClickListener(new OnClickListener() {
	public void onClick(View v) {
	Toast.makeText(getApplicationContext(), "提示:点击窗口外部关闭窗口!",
		Toast.LENGTH_SHORT).show();
		}
	});
	Button button0 = (Button) layout.findViewById(R.id.exitBtn0);
	Button button1 = (Button) layout.findViewById(R.id.exitBtn1);
	button0.setOnClickListener(new OnClickListener() {
	public void onClick(View v) {
	finish();
			
	}
	});
	button1.setOnClickListener(new OnClickListener() {
	public void onClick(View v) {
		finish();
		}
	});
}
/***
 * 关键是如何做到点击其他地方退出和如何关闭程序。
 * 1、点击其他地方退出,只要监听OnClickListener让所有的点击都退出就行了(除了xml中指定按钮事件之外)。
 * 2、退出主程序。只要在退出程序中将主程序自己设置成静态对象,在外部调用即可 public static MainWeixin
 * instance=null;
 * **/
public boolean onTouchEvent(MotionEvent event) {
	finish();
	return true;
}
}
exit_dialog.xml:
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/exit_layout"
    android:layout_width="280dp"
    android:layout_height="wrap_content"
    android:background="@color/cadetblue"
    android:gravity="center_horizontal"
    android:orientation="vertical" >
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="4dp"
        android:padding="5dp"
        android:text="退出微信"
        android:textColor="#333"
        android:textSize="20sp" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="1dp"
        android:gravity="center_horizontal"
        android:padding="10dp"
        android:text="退出后,你将收不到新的消\n息.确定要退出?"
        android:textColor="#333"
        android:textSize="16sp" />
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginTop="33dp" >

        <Button
            android:id="@+id/exitBtn0"
            android:layout_width="110dp"
            android:layout_height="wrap_content"
            android:background="@drawable/btn_button_pressed"            
            android:gravity="center"
            android:onClick="exitbutton0"
            android:text="是"
            android:textColor="#fff"
            android:textSize="16sp" />
        <Button
            android:id="@+id/exitBtn1"
            android:layout_width="110dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:background="@color/white"
            android:gravity="center"
            android:onClick="exitbutton1"
            android:text="否"
            android:textColor="#333"
            android:textSize="16sp" />
    </LinearLayout>
</LinearLayout>
style.xml中的定义:
 <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>
<!-- 
重点1、<item name="android:windowBackground">@android:color/transparent</item>  窗口背景色 
重点2、<item name="android:windowFrame">@null</item>  Dialog的windowFrame框为无 
重点4、<item name="android:windowIsFloating">true</item>  是否浮现在activity之上 
重点5、<item name="android:windowIsTranslucent">true</item>  窗口是否半透明——是(与第一条配合使用) 
重点6、<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>  窗口弹出效果 
重点7、<item name="android:backgroundDimEnabled">true</item>    是否允许背景模糊 
重点8、<item name="android:windowContentOverlay">@null</item>  这个不设置的话,可能会出现边框黑线 
 -->
在Manifest.xml中使用这个style:
<activity android:name="com.gridview.pupwindow.ExitActivity"
              android:theme="@style/MyDialogStyle"      ></activity>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值