PopupWindow弹出式窗口的应用
分为4步
第一:在布局文件中创建新的xml文件进行布局
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_margin="2sp" android:gravity="center"> <TextView android:id="@+id/select" android:layout_width="40sp" android:layout_height="20sp" android:text="选择" android:textSize="10sp" android:gravity="center" android:textColor="#D1CACA" android:background="#000000" android:layout_marginRight="1sp"/> <TextView android:id="@+id/select_all" android:layout_width="40sp" android:layout_height="20sp" android:text="全选" android:textSize="10sp" android:gravity="center" android:textColor="#D1CACA" android:background="#000000" android:layout_marginRight="1sp"/> <TextView android:id="@+id/copy" android:layout_width="40sp" android:layout_height="20sp" android:text="复制" android:textSize="10sp" android:gravity="center" android:textColor="#D1CACA" android:background="#000000" android:layout_marginRight="1sp"/> </LinearLayout>
第二:实例化PopupWindow对象
//将资源转换为View View view= LayoutInflater.from(this).inflate(R.layout.pop_window,null); //实例化PopupWindow对象 其中三个参数分别代表布局指向的长宽及是否设置焦点 final PopupWindow window=new PopupWindow(view,500,100,true);
第三:设置背景动画
1 //设置背景 2 window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 3 //设置响应外部点击 4 window.setOutsideTouchable(true); 5 //设置响应点击 6 window.setTouchable(true);
第四:显示设置(三个参数分别为控件,xoff,yofff)这里的控件表示为所要依附的控件
注意:使用findViewById()方法时先确认需控件所在的布局文件是否正确,如下列代码中的view.findViewById就是从弹窗布局文件中查找
1 window.showAsDropDown(v,-150,0); 2 //弹窗添加点击事件 3 view.findViewById(R.id.select).setOnClickListener(new View.OnClickListener() { 4 @Override 5 public void onClick(View v) { 6 Toast.makeText(MainActivity.this,"选择",Toast.LENGTH_SHORT).show(); 7 window.dismiss(); 8 } 9 });
Tips 窗口动画设置
1️⃣创建动画资源
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 <?xml version="1.0" encoding="utf-8"?> 2 <set xmlns:android="http://schemas.android.com/apk/res/android"> 3 <translate 4 android:fromXDelta="0" 5 android:toXDelta="0" 6 android:fromYDelta="300" 7 android:toYDelta="0" 8 android:duration="2000" 9 ></translate> 10 </set>
2️⃣创建style应用动画资源
1 <style name="translate_anim"> 2 <item name="android:windowEnterAnimation">@anim/translate</item> 3 </style>
3️⃣对当前弹窗应用动画风格
1 //设置动画 2 window.setAnimationStyle(R.anim.translate);