Android 悬浮窗口之 PopupWindow
作者:互联网
Overview
今天开发一个功能,是点击头像,用户可以进行对其选择要进行啥操作,但是我们需要使用悬浮窗来完成。一开始我使用的是AlertDialog来进行开发,但是出来的效果比较的丑陋,所以我就改用PopupWindow来进行操作,这个我以前就会操作,但是,一直都没有做笔记。
啥事PopupWindow
This class represents a popup window that can be used to display an arbitrary view. The popup window is a floating container that appears on top of the current activity.
我们该如何优雅的使用我们的PopupWindow呢?
按照国际惯例,我们先是看一下我们你的代码:
item_layout.xmlPopupWindow的布局页面
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/btn_xixi"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dp"
android:text="Hello"
android:textSize="18sp" />
<Button
android:id="@+id/btn_hehe"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dp"
android:text="World"
android:textSize="18sp" />
</LinearLayout>
这个也是非常的简单,我们就是非常单纯的放了两个Button。
这里我是用最简单的方式,不使用任何动画操作
然后我们看一下我们的逻辑代码。
public class MainActivity extends AppCompatActivity {
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.textView = this.findViewById(R.id.main_TextView);
this.textView.setOnClickListener(view -> initPopupWindow(view));
}
void initPopupWindow(View v) {
//创建内容显示View
View view = LayoutInflater.from(this).inflate(R.layout.item_popip, null, false);
Button btn1 = view.findViewById(R.id.btn_xixi);
Button btn2 = view.findViewById(R.id.btn_hehe);
//构造一个PopupWindow,参数依次是加载的View,宽,高
final PopupWindow popupWindow = new PopupWindow(view, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, true);
//添加点击PopupWindow外部PopupWindow自动消失
popupWindow.setTouchable(true);
popupWindow.setTouchInterceptor(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
return false;
}
});
//设置PopupWindow的显示位置,这里的参数分别是,参照View,X轴的偏移量,Y轴的偏移量
popupWindow.showAsDropDown(v, 50, 0);
//设置PopupWindow的View的点击效果
btn1.setOnClickListener(view12 -> Toast.makeText(MainActivity.this, "这是一个", Toast.LENGTH_SHORT).show());
btn2.setOnClickListener(view1 -> Toast.makeText(MainActivity.this, "PopupWindow", Toast.LENGTH_SHORT).show());
}
}
这部分就是我们的全部代码了。
接着我们看一我们的实现它逻辑是啥:
首先,我们点击了一个TextView来进行PopupWindow悬浮窗的显示。
然后我们通过initPopupWindow来进行。
方法中的v是我们的显示参照物,方法中的View是显示的内容。
下面的操作在,代码中都有比较详细的注释,可以自己看一下。
标签:Toast,PopupWindow,popupWindow,悬浮,Android,View,我们,view 来源: https://www.cnblogs.com/cao-1/p/12680483.html