PupupWindow 表示显示一个窗口的意思

 

private LinearLayout linealayout;
private PopupWindow pw;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
linealayout = findViewById(R.id.linealayout);
}
public void onclickView(View view){
TextView tv = new TextView(this);
tv.setText("POPUWINDOWN.....");
tv.setTextColor(Color.RED);
tv.setTextSize(30);
/**
* 参数一 显示内容
* 参数二 显示内容的宽高
* 参数三 显示内容的高度
*/
pw = new PopupWindow(tv,400,100);
pw.setBackgroundDrawable(new ColorDrawable(Color.GREEN));
/**
* 参数一 挂载到哪一个父控件上面
* 参数二 空间角度对其
* 参数三 距离左边的距离
* 参数四 距离头部的距离
*/
pw.showAtLocation(linealayout, Gravity.LEFT+Gravity.TOP,100,200);

}
//当页面不可见是关闭popupWindow
@Override
protected void onDestroy() {
super.onDestroy();
pw.dismiss();
}

 

在这里我看了一篇文章觉得还可以

 

一、怎么设置动画

1、在value文件夹下的styles中设置上style

<resources>
<style name="PopupAnimation1111111111111">
<item name="android:windowEnterAnimation">@anim/scale_anim</item>
<item name="android:windowExitAnimation">@anim/rotate_anim</item>
</style>
</resources>

2、在调用PopupWindow的setAnimationStyle(R.style.XXX);

3、对PopupWindow的update方法的理解:

    (1)这个方法是重新设置PopupWindow的状态的

    (2)这个方法有很多的重构方法,量具体情况而用

    (3)看如下代码:

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initPopup();

}

PopupWindow popup;
View contentView;

public void onClick(View view) {
int id = view.getId();
if (id == R.id.btn1) {
popup.showAsDropDown(view);
popup.setAnimationStyle(R.style.PopupAnimation1111111111111);
popup.update();
popup.update();
}

if (id == R.id.btn2) {
popup.showAsDropDown(view);
}
}



private void initPopup() {
contentView = LayoutInflater.from(this).inflate(R.layout.popup_select_mode, null);
popup = new PopupWindow(contentView, LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT, true);
popup.setBackgroundDrawable(getResources().getDrawable(
android.R.color.white));
}

二、update方法

     1、无参和有参的update的共同点:


popup.showAsDropDown(view);
popup.setAnimationStyle(R.style.PopupAnimation1111111111111);

 


      当在PopupWindow显示过程(调用了showAsDropDown)中改变了PopupWindow的设置,如果没有调用update

     方法,那么这个设置只能在下次显示的时候才会有效果,如果显示过程(调用了showAsDropDown)中,有更

     PopupWindow的设置,并且立即调用了update方法,那么这次的显示也会按照更新后的设置来显示

     2、无参和有参的update的区别:


popup.showAsDropDown(view);
popup.setAnimationStyle(R.style.PopupAnimation1111111111111);
popup.update(500,400);

因为是在显示过程中更新的,所以这一次显示会显示更新后的内容,内容包括动画和高宽


popup.showAsDropDown(view);
popup.setAnimationStyle(R.style.PopupAnimation1111111111111);
popup.update();

在这次的显示过程中,只是应用了动画。