android 学习之popupWindow 在指定位置上的显示,进出样式。

popupWindow 显示位置主要有showAsDropDown()和showAtLocation(),

在控件的上方:

private void showPopUp(View parent) {

	popupWindow = new PopupWindow(parent,LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
	// 获取popwindow焦点	
	popupWindow.setFocusable(true);
	// 点击PopupWindow区域外部消失
	popupWindow.setOutsideTouchable(true);
	popupWindow.setBackgroundDrawable(new BitmapDrawable());
	// 设置popwindow出现和消失动画
	popupWindow.setAnimationStyle(R.style.PopMenuAnimation);
	// 获取点击按钮的坐标
	int[] location = new int[2];
	v.getLocationOnScreen(location);
	// 设置popwindow显示位置
	popupWindow.showAtLocation(v, Gravity.NO_GRAVITY, location[0], location[1]-popupWindow.getHeight());
}

使用 showAsDropDown()显示在控件的下方:
popupWindow.showAsDropDown(v);


定义popWindow进出样式,首先在Android工程中的res/anim下面新建两个xml,popshow.xml和pophide.xml如下:

1、飞入分出样式:

定义显示效果的动画文件popshow.xml :
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">  
    <translate  
        android:fromXDelta="0"  
        android:toXDelta="0"  
        android:fromYDelta="120"  
        android:toYDelta="0"  
        android:duration="500" />  
</set>

定义消失效果的动画文件pophide.xml :
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">  
    <translate  
        android:fromXDelta="0"  
        android:toXDelta="0"  
        android:fromYDelta="0"  
        android:toYDelta="120"  
        android:duration="500" />  
</set>

在styles.xml文件中设置一个动画样式:
<style name="PopMenuAnimation">
     <item name="android:windowEnterAnimation">@anim/popshow</item>
     <item name="android:windowExitAnimation">@anim/pophide</item>
</style>

然后使用代码设置:
 // 设置popwindow出现和消失动画
 popupWindow.setAnimationStyle(R.style.PopMenuAnimation);

2、淡入淡出样式:

定义淡入样式:

<?xml version="1.0" encoding="utf-8"?>
<!-- 淡入 -->
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <alpha
        android:duration="200"
        android:fromAlpha="0.0"
        android:toAlpha="1.0" />

</set>

定义淡出样式:

<?xml version="1.0" encoding="utf-8"?>
<!--淡出 -->
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <alpha
        android:duration="200"
        android:fromAlpha="1.0"
        android:toAlpha="0.0" />

</set>

注:

参数duration用来设置动画完成需要的时间

参数fromAlpha表示动画开始时的透明度

参数toAlpha表示动画结束时的透明度


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值