private PopupWindow pw;
private View item;
private Button v;
private ScaleAnimation sa;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initPopup();
}
public void a(View v){
showPopupWindow();
}
public void initPopup(){
v = (Button) findViewById(R.id.v);
item = View.inflate(getApplicationContext(), R.layout.popup,null);
pw = new PopupWindow(item,-2,-2);
sa = new ScaleAnimation(1, 1,0,1, Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0f );
sa.setDuration(3000);
}
public void showPopupWindow(){
if ( pw != null && pw.isShowing()) {
pw.dismiss();
} else {
int[] location = new int[2];
/**
* 1,父组件
* 2,对齐方式
* 3, x坐标
* 4,y坐标
*/
v.getLocationInWindow(location );
System.out.println("x:" + location[0] + ",y:" + location[1]);
//设置弹出窗体的背景
pw.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
item.startAnimation(sa);
pw.showAtLocation(v, Gravity.LEFT | Gravity.TOP, location[0] + v.getWidth(), location[1] + v.getHeight());
}
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
if (pw != null && pw.isShowing()) {
pw.dismiss();
pw = null;
}
super.onDestroy();
}
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<Button
android:onClick="a"
android:id="@+id/v"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="你点我呀" />
</RelativeLayout>