实现代码如下:
public class PopupCustomBanner {
private Activity mOriginActivity;
private FrameLayout mBaseLayout;
private RelativeLayout mBackgroudLayout;
private View mContentView;
public PopupCustomBanner(Activity activity) {
mOriginActivity = activity;
mBaseLayout = new FrameLayout(mOriginActivity);
mBaseLayout.setBackgroundColor(android.R.color.transparent);
mBackgroudLayout = new RelativeLayout(mOriginActivity);
mBackgroudLayout.setBackgroundColor(Color.WHITE);
mBackgroudLayout.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT));
mBackgroudLayout.setGravity(Gravity.BOTTOM);
mBackgroudLayout.setVerticalGravity(Gravity.BOTTOM);
final PopupCustomBanner self = this;
mBaseLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
self.dismiss();
}
});
}
public PopupCustomBanner(Activity activity, View view) {
this(activity);
setView(view);
}
public void setView(View view) {
mContentView = view;
}
public void show() {
ViewGroup contentRoot = (ViewGroup) mOriginActivity.findViewById(android.R.id.content);
int count = contentRoot.getChildCount();
for (int i = 0; i < count; i++) {
View view = contentRoot.getChildAt(i);
contentRoot.removeView(view);
mBaseLayout.addView(view);
}
mBaseLayout.addView(mBackgroudLayout);
FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) mBackgroudLayout.getLayoutParams();
layoutParams.gravity = Gravity.BOTTOM;
mBackgroudLayout.setLayoutParams(layoutParams);
mBackgroudLayout.addView(mContentView);
contentRoot.addView(mBaseLayout);
}
public void dismiss() {
ViewGroup contentRoot = (ViewGroup) mOriginActivity.findViewById(android.R.id.content);
contentRoot.removeView(mBaseLayout);
mBackgroudLayout.removeView(mContentView);
mBaseLayout.removeView(mBackgroudLayout);
int count = mBaseLayout.getChildCount();
for (int i = 0; i < count; i++) {
View view = mBaseLayout.getChildAt(i);
mBaseLayout.removeView(view);
contentRoot.addView(view);
}
}
}