PopupWindow使用
原创
©著作权归作者所有:来自51CTO博客作者达帮主的原创作品,请联系作者获取转载授权,否则将追究法律责任
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();
在这次的显示过程中,只是应用了动画。