android 随手记 仿微信的popwindow

时间:2021-01-24 15:56:49

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

  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, 0, 0); //设置layout在PopupWindow中显示的位置
  7. }
  8. });
  9. }

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

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

这个是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. public class SelectPicPopupWindow extends PopupWindow {
  13. private Button btn_take_photo, btn_pick_photo, btn_cancel;
  14. private View mMenuView;
  15. public SelectPicPopupWindow(Activity context,OnClickListener itemsOnClick) {
  16. super(context);
  17. LayoutInflater inflater = (LayoutInflater) context
  18. .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  19. mMenuView = inflater.inflate(R.layout.alert_dialog, null);
  20. btn_take_photo = (Button) mMenuView.findViewById(R.id.btn_take_photo);
  21. btn_pick_photo = (Button) mMenuView.findViewById(R.id.btn_pick_photo);
  22. btn_cancel = (Button) mMenuView.findViewById(R.id.btn_cancel);
  23. //取消按钮
  24. btn_cancel.setOnClickListener(new OnClickListener() {
  25. public void onClick(View v) {
  26. //销毁弹出框
  27. dismiss();
  28. }
  29. });
  30. //设置按钮监听
  31. btn_pick_photo.setOnClickListener(itemsOnClick);
  32. btn_take_photo.setOnClickListener(itemsOnClick);
  33. //设置SelectPicPopupWindow的View
  34. this.setContentView(mMenuView);
  35. //设置SelectPicPopupWindow弹出窗体的宽
  36. this.setWidth(LayoutParams.FILL_PARENT);
  37. //设置SelectPicPopupWindow弹出窗体的高
  38. this.setHeight(LayoutParams.WRAP_CONTENT);
  39. //设置SelectPicPopupWindow弹出窗体可点击
  40. this.setFocusable(true);
  41. //设置SelectPicPopupWindow弹出窗体动画效果
  42. this.setAnimationStyle(R.style.AnimBottom);
  43. //实例化一个ColorDrawable颜色为半透明
  44. ColorDrawable dw = new ColorDrawable(0xb0000000);
  45. //设置SelectPicPopupWindow弹出窗体的背景
  46. this.setBackgroundDrawable(dw);
  47. //mMenuView添加OnTouchListener监听判断获取触屏位置如果在选择框外面则销毁弹出框
  48. mMenuView.setOnTouchListener(new OnTouchListener() {
  49. public boolean onTouch(View v, MotionEvent event) {
  50. int height = mMenuView.findViewById(R.id.pop_layout).getTop();
  51. int y=(int) event.getY();
  52. if(event.getAction()==MotionEvent.ACTION_UP){
  53. if(y<height){
  54. dismiss();
  55. }
  56. }
  57. return true;
  58. }
  59. });
  60. }
  61. }
  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. <TextView
  7. android:id="@+id/text"
  8. android:layout_width="wrap_content"
  9. android:layout_height="wrap_content"
  10. android:layout_centerHorizontal="true"
  11. android:layout_centerVertical="true"
  12. android:padding="@dimen/padding_medium"
  13. android:text="点击我弹出选择框"
  14. tools:context=".MainActivity" />
  15. </RelativeLayout>

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

~3)0LL@WTUBF}DL~Z4T649O.jpg(78.82 KB, 下载次数: 36)
仿微信的弹出popwindow
android 随手记 仿微信的popwindow
S)P)$(DG(QZLR_@SA(3[NRQ.jpg(102.24 KB, 下载次数: 22)
仿微信的弹出popwindow
android 随手记 仿微信的popwindow
@4K0`A9G2~IVIJ[0UBLHLI9.jpg(76.25 KB, 下载次数: 15)
仿微信的弹出popwindow
android 随手记 仿微信的popwindow

下载地址

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