首先要明白dialog能实现的,popupwindow都能实现。我这里只是写一个pop的实例使用以及动画。
public void showPop(View view) {
View view1 = View.inflate(this, R.layout.pop_layout, null);
PopupWindow popupWindow = new PopupWindow(view1, LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
popupWindow.setOutsideTouchable(true);
popupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
int[] viewPositionXY = new int[2];
view.getLocationOnScreen(viewPositionXY);
popupWindow.setAnimationStyle(R.style.PopAnim);
popupWindow.showAtLocation(view, Gravity.TOP | Gravity.LEFT, viewPositionXY[0] + 660, viewPositionXY[1] + 600);
// popupWindow.showAsDropDown(view);
}
<style name="PopAnim">
<item name="android:windowEnterAnimation">@anim/pop_enter</item>
<item name="android:windowExitAnimation">@anim/pop_exit</item>
</style>
enter:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<!--<alpha-->
<!--android:duration="500"-->
<!--android:fromAlpha="0"-->
<!--android:toAlpha="1" />-->
<!--<translate-->
<!--android:duration="500"-->
<!--android:fromXDelta="100%"-->
<!--android:interpolator="@android:anim/overshoot_interpolator"-->
<!--android:toXDelta="0%" />-->
<scale
android:duration="500"
android:fromXScale="0.3"
android:fromYScale="0.3"
android:toXScale="1.0"
android:toYScale="1.0" />
</set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:duration="500"
android:fromAlpha="1"
android:toAlpha="0" />
<translate
android:duration="500"
android:fromXDelta="0%"
android:interpolator="@android:anim/overshoot_interpolator"
android:toXDelta="100%" />
</set>