1、在res/anim文件下
hide.xml
<scale
android:fromXScale="1.0"
android:toXScale="0.0"
android:fromYScale="1.0"
android:toYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="700" />
show.xml
<scale
android:fromXScale="0.0"
android:toXScale="1.0"
android:fromYScale="0.0"
android:toYScale="1.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="700" />
2、在res/values/styles.xml文件下
<style name="popup_style">
<item name="android:windowEnterAnimation">@anim/show</item>
<item name="android:windowExitAnimation">@anim/hide</item>
</style>
3、MainActivity.Java
public class MainActivity extends AppCompatActivity {
private TextView tv;
private View content;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv);
//解析父控件的布局
content = View.inflate(MainActivity.this, R.layout.activity_main,null);
//解析布局
View view=View.inflate(MainActivity.this,R.layout.item,null);
//创建PopupWindow对象
/*
第一个参数:解析的popupwindow布局
第二个参数:宽
第三个参数:高
*/
final PopupWindow popupWindow=new PopupWindow(view,LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
content.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
popupWindow.dismiss();
}
});
//点击空白区域消失
//是否可以触摸
popupWindow.setOutsideTouchable(true);
//添加一个空白的背景
popupWindow.setBackgroundDrawable(new BitmapDrawable());
//想编辑popupwindow上的信息,获取焦点
popupWindow.setFocusable(true);
tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//先实现动画,
popupWindow.setAnimationStyle(R.style.popup_style);
//点击当前控件的左下方显示
popupWindow.showAsDropDown(tv);
//有偏移量
// popupWindow.showAsDropDown(tv,30,40);
//对于父控件的位置
// popupWindow.showAtLocation(content, Gravity.BOTTOM,0,0);
}
});
}
}