现在的位置: 首页 > 综合 > 正文

android 随手记 仿微信的popwindow

2018年02月17日 ⁄ 综合 ⁄ 共 4746字 ⁄ 字号 评论关闭

/把文字控件添加监听,点击弹出自定义窗口
       

  1. tv.setOnClickListener(new OnClickListener() {           
  2.            public void onClick(View v) {  
  3.                //实例化SelectPicPopupWindow  
  4.                menuWindow = new SelectPicPopupWindow(MainActivity.this, itemsOnClick);  
  5.                //显示窗口  
  6.                menuWindow.showAtLocation(MainActivity.this.findViewById(R.id.main), Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 00); //设置layout在PopupWindow中显示的位置  
  7.            }  
  8.        });  
  9.     }  

其中的mian  id 必须在layout 中写出,不然,找不到id 就不会显示在屏幕中。
    

  1. //为弹出窗口实现监听类  
  2.      private OnClickListener  itemsOnClick = new OnClickListener(){  
  3.     
  4.         public void onClick(View v) {  
  5.             menuWindow.dismiss();  
  6.             switch (v.getId()) {  
  7.             case R.id.btn_take_photo:  
  8.                 break;  
  9.             case R.id.btn_pick_photo:                 
  10.                 break;  
  11.             default:  
  12.                 break;  
  13.             }  
  14.               
  15.                    
  16.         }  
  17.            
  18.      };  

这个是popwindow的工具类,定义这popwindow的弹出方向的动画。以及你pop中要显示的条目。

  1. mport android.app.Activity;  
  2. import android.content.Context;  
  3. import android.graphics.drawable.ColorDrawable;  
  4. import android.view.LayoutInflater;  
  5. import android.view.MotionEvent;  
  6. import android.view.View;  
  7. import android.view.View.OnClickListener;  
  8. import android.view.View.OnTouchListener;  
  9. import android.view.ViewGroup.LayoutParams;  
  10. import android.widget.Button;  
  11. import android.widget.PopupWindow;  
  12.     
  13. public class SelectPicPopupWindow extends PopupWindow {  
  14.     
  15.     
  16.     private Button btn_take_photo, btn_pick_photo, btn_cancel;  
  17.     private View mMenuView;  
  18.     
  19.     public SelectPicPopupWindow(Activity context,OnClickListener itemsOnClick) {  
  20.         super(context);  
  21.         LayoutInflater inflater = (LayoutInflater) context  
  22.                 .getSystemService(Context.LAYOUT_INFLATER_SERVICE);  
  23.         mMenuView = inflater.inflate(R.layout.alert_dialog, null);  
  24.         btn_take_photo = (Button) mMenuView.findViewById(R.id.btn_take_photo);  
  25.         btn_pick_photo = (Button) mMenuView.findViewById(R.id.btn_pick_photo);  
  26.         btn_cancel = (Button) mMenuView.findViewById(R.id.btn_cancel);  
  27.         //取消按钮  
  28.         btn_cancel.setOnClickListener(new OnClickListener() {  
  29.     
  30.             public void onClick(View v) {  
  31.                 //销毁弹出框  
  32.                 dismiss();  
  33.             }  
  34.         });  
  35.         //设置按钮监听  
  36.         btn_pick_photo.setOnClickListener(itemsOnClick);  
  37.         btn_take_photo.setOnClickListener(itemsOnClick);  
  38.         //设置SelectPicPopupWindow的View  
  39.         this.setContentView(mMenuView);  
  40.         //设置SelectPicPopupWindow弹出窗体的宽  
  41.         this.setWidth(LayoutParams.FILL_PARENT);  
  42.         //设置SelectPicPopupWindow弹出窗体的高  
  43.         this.setHeight(LayoutParams.WRAP_CONTENT);  
  44.         //设置SelectPicPopupWindow弹出窗体可点击  
  45.         this.setFocusable(true);  
  46.         //设置SelectPicPopupWindow弹出窗体动画效果  
  47.         this.setAnimationStyle(R.style.AnimBottom);  
  48.         //实例化一个ColorDrawable颜色为半透明  
  49.         ColorDrawable dw = new ColorDrawable(0xb0000000);  
  50.         //设置SelectPicPopupWindow弹出窗体的背景  
  51.         this.setBackgroundDrawable(dw);  
  52.         //mMenuView添加OnTouchListener监听判断获取触屏位置如果在选择框外面则销毁弹出框  
  53.         mMenuView.setOnTouchListener(new OnTouchListener() {  
  54.               
  55.             public boolean onTouch(View v, MotionEvent event) {  
  56.                    
  57.                 int height = mMenuView.findViewById(R.id.pop_layout).getTop();  
  58.                 int y=(int) event.getY();  
  59.                 if(event.getAction()==MotionEvent.ACTION_UP){  
  60.                     if(y<height){  
  61.                         dismiss();  
  62.                     }  
  63.                 }                 
  64.                 return true;  
  65.             }  
  66.         });  
  67.     
  68.     }  
  69.     
  70. }  

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.      android:id="@+id/main"    //此处的mian 就是mainActivity要声明的  
  3.      xmlns:tools="http://schemas.android.com/tools"  
  4.      android:layout_width="match_parent"  
  5.      android:layout_height="match_parent" >  
  6.     
  7.      <TextView  
  8.          android:id="@+id/text"  
  9.          android:layout_width="wrap_content"  
  10.          android:layout_height="wrap_content"  
  11.          android:layout_centerHorizontal="true"  
  12.          android:layout_centerVertical="true"  
  13.          android:padding="@dimen/padding_medium"  
  14.          android:text="点击我弹出选择框"  
  15.          tools:context=".MainActivity" />  
  16.     
  17. </RelativeLayout>  

额。。。大概也就这样。写的也不是很详细,大家可以下载下来看就明白了。

~3)0LL@WTUBF}DL~Z4T649O.jpg(78.82 KB, 下载次数:
36)


仿微信的弹出popwindow


S)P)$(DG(QZLR_@SA(3[NRQ.jpg(102.24 KB, 下载次数:
22)


仿微信的弹出popwindow


@4K0`A9G2~IVIJ[0UBLHLI9.jpg(76.25 KB, 下载次数:
15)


仿微信的弹出popwindow


下载地址

            http://download.csdn.net/detail/liyaming1/6479935

抱歉!评论已关闭.