android popupwindow 调用方法,PopupWindow的使用总结

本文要讲述的知识点:

android 中PopupWindow的使用

基本使用

// 用于PopupWindow的View

View contentView=LayoutInflater.from(context).inflate(layoutRes, null, false);

// 创建PopupWindow对象,其中:

// 第一个参数是用于PopupWindow中的View,第二个参数是PopupWindow的宽度,

// 第三个参数是PopupWindow的高度,第四个参数指定PopupWindow能否获得焦点

PopupWindow window=new PopupWindow(contentView, 100, 100, true);

// 设置PopupWindow的背景

window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

// 设置PopupWindow是否能响应外部点击事件

window.setOutsideTouchable(true);

// 设置PopupWindow是否能响应点击事件

window.setTouchable(true);

// 显示PopupWindow,其中:

// 第一个参数是PopupWindow的锚点,第二和第三个参数分别是PopupWindow相对锚点的x、y偏移

window.showAsDropDown(anchor, xoff, yoff);

// 或者也可以调用此方法显示PopupWindow,其中:

// 第一个参数是PopupWindow的父View,第二个参数是PopupWindow相对父View的位置,

// 第三和第四个参数分别是PopupWindow相对父View的x、y偏移

// window.showAtLocation(parent, gravity, x, y);

这段代码是从Android PopupWindow使用方法小结文章中拷贝过来的,其实我就是懒的去写。正好看见这篇文章写的还是不错的就拷贝过来了!

这里和大家分享一个我遇到的问题:

1.设置尺寸的时候我使用的是ViewGroup.LayoutParams.WRAP_CONTENT,但是展示出来的布局过大的问题,一般这个问题应该是你在布局中使用了match_parent造成的,

常见的一些修改:

1.设置popupWindow显示的背景问题(背景设置成半透明):

我在网上找了一种最简单的方法,但是基本上能满足上述要求(就是设置Activirty的透明度)

步骤1:当popupWindow调用show方法后,设置activity的alpha值

//显示背景

WindowManager.LayoutParams lp = getActivity().getWindow().getAttributes();

lp.alpha = 0.8f;

getActivity().getWindow().setAttributes(lp);

步骤2:监听popupWindow的setOnDismissListener(关闭的监听,这里主要是为了设置相应的Activyt的alpha值)

popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {

//在dismiss中恢复透明度

public void onDismiss() {

WindowManager.LayoutParams lp = getActivity().getWindow().getAttributes();

lp.alpha = 1f;

getActivity().getWindow().setAttributes(lp);

}

});

以上两个步骤就可以实现popupWindow背景的半透明效果(这里的透明度可以自己进行相应的设置)。

2.设置popupWindow的动画效果

说明一下popupWindow只有设置animationStyle的方法,没有设置相应一个动画的方法,所以这里为了实现效果是要写一个相应的AnimationStyle的

步骤1:编辑动画的一些内容

android:duration="200"

android:fromYDelta="100%p"

android:toYDelta="0" />

android:duration="200"

android:fromAlpha="0.0"

android:toAlpha="1.0" />

android:duration="200"

android:fromYDelta="0"

android:toYDelta="50%p" />

android:duration="200"

android:fromAlpha="1.0"

android:toAlpha="0.0" />

@anim/enter_animation

@anim/exit_animation

步骤2:添加相应的style

//设置动画

mPopupWindow.setAnimationStyle(R.style.take_photo_anim);

注意这个应该设置在相应的show方法之前!!!切记。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值