项目中,我需要PopupWindow的时候特别多,这个东西也特别的好使,所以我今天给大家写一款PopupWindow 仿微信弹出效果,这样大家直接拿到项目里就可以用了!首先让我们先看效果:


那么我首先先看下布局代码非常简单:如下

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/pop_layout"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:background="@drawable/bg_pulish"    android:gravity="center"    android:orientation="vertical" >    <Button        android:id="@+id/btn_hand"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_marginLeft="20dip"        android:layout_marginRight="20dip"        android:layout_marginTop="20dip"        android:background="@drawable/bg_publish_product_selector"        android:text="1"        android:textStyle="bold" />    <Button        android:id="@+id/btn_library"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_marginLeft="20dip"        android:layout_marginRight="20dip"        android:layout_marginTop="20dip"        android:background="@drawable/bg_publish_product_selector"        android:text="2"        android:textStyle="bold" />    <Button        android:id="@+id/btn_two_code"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_marginLeft="20dip"        android:layout_marginRight="20dip"        android:layout_marginTop="20dip"        android:background="@drawable/bg_publish_product_selector"        android:text="3"        android:textStyle="bold" />    <Button        android:id="@+id/btn_cancel"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_marginLeft="20dip"        android:layout_marginRight="20dip"        android:layout_marginTop="30dip"        android:layout_marginBottom="30dp"        android:background="@drawable/bg_publish_product_selector"        android:text="取消"        android:textStyle="bold" /></LinearLayout>

下面我们来看核心的代码,如下

package com.example.showpopupwindow;import android.app.Activity;import android.content.Context;import android.graphics.drawable.ColorDrawable;import android.view.LayoutInflater;import android.view.MotionEvent;import android.view.View;import android.view.View.OnClickListener;import android.view.View.OnTouchListener;import android.view.ViewGroup.LayoutParams;import android.widget.Button;import android.widget.PopupWindow;public class PublishSelectPicPopupWindow extends PopupWindow {private Button btnHand;private Button btnLibrary;private Button btnTwocode;private Button btnCancel;private View mMenuView;@SuppressWarnings("deprecation")public PublishSelectPicPopupWindow(Activity context,OnClickListener itemsOnClick) {super(context);LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);mMenuView = inflater.inflate(R.layout.publish_dialog, null);btnHand = (Button) mMenuView.findViewById(R.id.btn_hand);btnLibrary = (Button) mMenuView.findViewById(R.id.btn_library);btnTwocode=(Button) mMenuView.findViewById(R.id.btn_two_code);btnCancel = (Button) mMenuView.findViewById(R.id.btn_cancel);btnCancel.setOnClickListener(new OnClickListener() {public void onClick(View v) {dismiss();}});//设置按钮监听btnHand.setOnClickListener(itemsOnClick);btnLibrary.setOnClickListener(itemsOnClick);btnTwocode.setOnClickListener(itemsOnClick);btnCancel.setOnClickListener(itemsOnClick);//设置SelectPicPopupWindow的Viewthis.setContentView(mMenuView);//设置SelectPicPopupWindow弹出窗体的宽this.setWidth(LayoutParams.FILL_PARENT);//设置SelectPicPopupWindow弹出窗体的高this.setHeight(LayoutParams.WRAP_CONTENT);//设置SelectPicPopupWindow弹出窗体可点击this.setFocusable(true);//设置SelectPicPopupWindow弹出窗体动画效果this.setAnimationStyle(R.style.AnimBottom);//实例化一个ColorDrawable颜色为半透明ColorDrawable dw = new ColorDrawable(0xb0000000);//设置SelectPicPopupWindow弹出窗体的背景this.setBackgroundDrawable(dw);//mMenuView添加OnTouchListener监听判断获取触屏位置如果在选择框外面则销毁弹出框mMenuView.setOnTouchListener(new OnTouchListener() {public boolean onTouch(View v, MotionEvent event) {int height = mMenuView.findViewById(R.id.pop_layout).getTop();int y=(int) event.getY();if(event.getAction()==MotionEvent.ACTION_UP){if(y<height){dismiss();}}return true;}});}}

我们在MainActivity调用我们写好的代码 如下:

package com.example.showpopupwindow;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.Gravity;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Toast;public class MainActivity extends Activity {private PublishSelectPicPopupWindow menuWindow;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);final Button button=(Button) findViewById(R.id.button1);button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// 实例化SelectPicPopupWindowmenuWindow = new PublishSelectPicPopupWindow(MainActivity.this,itemsOnClick);// 显示窗口menuWindow.showAtLocation(MainActivity.this.findViewById(R.id.button1),Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);}});}// 为弹出窗口实现监听类private OnClickListener itemsOnClick = new OnClickListener() {public void onClick(View v) {menuWindow.dismiss();switch (v.getId()) {case R.id.btn_hand:Toast.makeText(MainActivity.this, "1", 2).show();break;case R.id.btn_two_code:Toast.makeText(MainActivity.this, "2", 2).show();break;case R.id.btn_library:Toast.makeText(MainActivity.this, "3", 2).show();break;default:break;}}};}
图片资源我会随源码一起给你们,下载吧,直接用到项目,简单高效哈哈


源码下载地址




更多相关文章

  1. Android(安卓)ViewPager2实现无限轮播
  2. Android(安卓)解决输入法遮挡布局控件的问题
  3. Android(安卓)Dialog 设置圆角无效
  4. android bluedroid调试
  5. [置顶] Android(安卓)UI设计之RecyclerView
  6. android4.0拦截HOME
  7. Notification探险
  8. android 通过jdbc访问mysql数据库--(含android studio 配置)通过测
  9. Android(安卓)Design Library之四:BottomSheetDialog

随机推荐

  1. Android手机开发:开机自动启动程序
  2. 如何在Android中在fragment中实现点击按
  3. Android EventBus 传递消息
  4. Android 将Button设置为圆角
  5. Android 图片压缩
  6. android 进度对话框的使用
  7. BroadcastReceiver广播监听android网络状
  8. Introduction to Android Power Manageme
  9. Android中自定义View支持缩放
  10. android 获取手机系统信息