zoukankan      html  css  js  c++  java
  • 【Android开发日记】Popupwindow 完美demo

    Popupwindow 完美demo实现

    图示:

                                                                                                         

    关键代码说明:

    1.弹出popupwindow,背景变暗

    ColorDrawable cd = new ColorDrawable(0x000000);
    popuWindow1.setBackgroundDrawable(cd); 
    WindowManager.LayoutParams lp=getWindow().getAttributes();
    lp.alpha = 0.4f;
    getWindow().setAttributes(lp);

    2.popupwindow消失之后,背景恢复

    public void onDismiss(){
        WindowManager.LayoutParams lp=getWindow().getAttributes();
        lp.alpha = 1f;
        getWindow().setAttributes(lp);	
    }			
    

    3.popupwindow圆角矩形

       rounded_corners_bg.xml

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"> 
        <solid android:color="#FFFFFF" /> 	
        <corners 
            android:topLeftRadius="5dp"
            android:topRightRadius="5dp" 
            android:bottomRightRadius="5dp"
            android:bottomLeftRadius="5dp"/> 
    </shape>
       pupopwindow布局文件里设置背景

     

    <?

    xml version="1.0" encoding="UTF-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:background="@drawable/rounded_corners_bg" android:orientation="vertical" > ... ... ...  </RelativeLayout >

    4.点击popupwindow外部。popupwindow也会dismiss

    popuWindow1.setOutsideTouchable(true);
    popuWindow1.setFocusable(true);

    完整代码:

    1.MainActivity.java

    package com.popupwindowdemo;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.graphics.drawable.ColorDrawable;
    import android.net.Uri;
    import android.os.Bundle;
    import android.view.Gravity;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.view.WindowManager;
    import android.widget.Button;
    import android.widget.PopupWindow;
    import android.widget.TextView;
    import android.widget.PopupWindow.OnDismissListener;
    
    public class MainActivity extends Activity {
    	
    	//popupwindow
    	private PopupWindow popuWindow1;  
    	private View contentView1;
    	private TextView textview1;
    	private Button btn1;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		
    		textview1 = (TextView)findViewById(R.id.textView2);
    		btn1 = (Button)findViewById(R.id.button1);
    		btn1.setOnClickListener(new View.OnClickListener() {
    	        public void onClick(View v) {
    	        	initPopuWindow1(v);
    	        }
    	    });
    		
    		textview1.setOnClickListener(new View.OnClickListener() {
    			public void onClick(View v) {
    				final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://blog.csdn.net/geeklei/article/"));
    				startActivity(intent);
    			}
    		});
    	}
    	
    	private void initPopuWindow1(View parent) {  
    	   	if (popuWindow1 == null) {
    	   		LayoutInflater mLayoutInflater = LayoutInflater.from(this);
    				contentView1 = mLayoutInflater.inflate(R.layout.popuwindow1, null);
    				popuWindow1 = new PopupWindow(contentView1,ViewGroup.LayoutParams.WRAP_CONTENT,  
    						ViewGroup.LayoutParams.WRAP_CONTENT);
    	   	}
    
    	   	ColorDrawable cd = new ColorDrawable(0x000000);
    	   	popuWindow1.setBackgroundDrawable(cd); 
    	   	//产生背景变暗效果
    	    WindowManager.LayoutParams lp=getWindow().getAttributes();
    		lp.alpha = 0.4f;
    		getWindow().setAttributes(lp);
    	   	  
    	   	popuWindow1.setOutsideTouchable(true);
    	   	popuWindow1.setFocusable(true);
    	   	popuWindow1.showAtLocation((View)parent.getParent(), Gravity.CENTER|Gravity.CENTER_HORIZONTAL, 0, 0);
    
        	popuWindow1.update();
        	popuWindow1.setOnDismissListener(new OnDismissListener(){
        	
        	//在dismiss中恢复透明度
        	public void onDismiss(){
        			WindowManager.LayoutParams lp=getWindow().getAttributes();
        			lp.alpha = 1f;
        			getWindow().setAttributes(lp);	
        		}			
        	 });
    	}  
    
    
    }

    2.activity_main.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="com.popupwindowdemo.MainActivity" >
    
        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/hello_world" />
    
        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/textView1"
            android:layout_below="@+id/textView1"
            android:layout_marginTop="23dp"
            android:text="click to visit my csdn blog"
            android:textColor="#1C86EE" />
    
        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/textView2"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="103dp"
            android:text="click to show popupwindow" />
    
    </RelativeLayout>

    3.popupwindow1.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:background="@drawable/rounded_corners_bg"
       
        android:orientation="vertical" >
        
    	<LinearLayout
    	    android:layout_width="220dp"
    	    android:layout_height="wrap_content"
    	    android:layout_centerInParent="true"
    	    android:layout_gravity="center_vertical|center"
    	    android:orientation="vertical" >
    	    
    	    	<TextView
                    android:id="@+id/group_menu1_passfile"
                    android:layout_width="fill_parent"
                    android:layout_height="40dp"
                    android:layout_marginLeft="20dp"
                    android:gravity="center_vertical"
                    android:text="item1"
                    android:textColor="#000000"
                    android:textSize="13sp" />
    
                <View
                    android:layout_width="match_parent"
                    android:layout_height="0.5dp"
                    android:background="#999999" />
                <TextView
                    android:id="@+id/group_menu1_playgame"
                    android:layout_width="fill_parent"
                    android:layout_height="40dp"
                     android:layout_marginLeft="20dp"
                    android:gravity="center_vertical"
                    android:text="item2"
                    android:textColor="#000000"
                    android:textSize="13sp" />
                <View
                    android:layout_width="match_parent"
                    android:layout_height="0.5dp"
                    android:background="#999999" />
                
    
                <TextView
                    android:id="@+id/group_menu1_removefriend"
                    android:layout_width="fill_parent"
                    android:layout_height="40dp"
                    android:layout_marginLeft="20dp"
                    android:gravity="center_vertical"
                    android:text="item3"
                    android:textColor="#000000"
                    android:textSize="13sp" />
    
                <View
                    android:layout_width="match_parent"
                    android:layout_height="0.5dp"
                    android:background="#999999" />
    
                <TextView
                    android:id="@+id/group_menu1_setremark"
                    android:layout_width="fill_parent"
                    android:layout_height="40dp"
                    android:layout_marginLeft="20dp"
                    android:gravity="center_vertical"        
                    android:text="item4"
                    android:textColor="#000000"
                    android:textSize="13sp" />
    
                <View
                    android:layout_width="match_parent"
                    android:layout_height="0.5dp"
                    android:background="#999999" />
         
                <TextView
                    android:id="@+id/group_menu1_brokemate"
                    android:layout_width="fill_parent"
                    android:layout_height="40dp"
                    android:layout_marginLeft="20dp"
                    android:gravity="center_vertical"        
                    android:text="item5"
                    android:textColor="#000000"
                    android:textSize="13sp" />
    
                         
    	</LinearLayout>
    </RelativeLayout>

    4.rounded_corners_bg.xml

    <?xml version="1.0" encoding="utf-8"?

    > <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#FFFFFF" /> <corners android:topLeftRadius="5dp" android:topRightRadius="5dp" android:bottomRightRadius="5dp" android:bottomLeftRadius="5dp"/> </shape>


    demo下载地址:

    http://download.csdn.net/detail/geeklei/7991521


  • 相关阅读:
    [Matlab] 短时傅里叶变换spectrogram函数
    [Word] Word中保存出矢量图
    [Matlab] Matlab 2020b Release Note
    [Matlab] Matlab 2020b Release Note
    [Matlab] Matlab 2020b Release Note
    [Matlab] Matlab 2020b Release Note
    [Matlab] 画图颜色扩展
    [脑电相关] 关于ERD现象
    [PPT技巧] PPT箭头设置及文字设置
    linux 新添加的硬盘格式化并挂载到目录下方法
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5085546.html
Copyright © 2011-2022 走看看