/** * Base class for panel. * */ public abstract class BasePanel {
/** * left up position */ public static final int LEFT_UP = 1;
/** * right up position */ public static final int RIGHT_UP = 2;
/** * left bottom position */ public static final int LEFT_BOTTOM = 3;
/** * right bottom position */ public static final int RIGHT_BOTTOM = 4;
private static final int DEFAULT_MARGIN = 10;
private static final int SHOW_PANEL = 0;
private Activity activity;
private LayoutParams parameters;
private View view = null;
private int layoutId;
/** * constructor. * * @param activity * this panel will be attached to the activity * @param layoutId * the panel"s layout id */ public BasePanel(Activity activity, int layoutId) { this.activity = activity; this.layoutId = layoutId; }
/** * The developer can use this method to add the panel to the Activity. * * @param act * Activity * @param params * LayoutParams */ public void attach(LayoutParams params) { parameters = params; mHandler.sendMessage(mHandler.obtainMessage(SHOW_PANEL));
}
/** * The developer can use this method to add the panel to the Activity. * * @param act * Activity * @param position * int. You can use BasePanel.LEFT_UP,BasePanel.RIGHT_UP, * BasePanel.RIGHT_BOTTOM or BasePanel.LEFT_BOTTOM. */ public void attach(int position) { attach(position, DEFAULT_MARGIN, DEFAULT_MARGIN, DEFAULT_MARGIN, DEFAULT_MARGIN); }
/** * The developer can use this method to add the panel to the Activity. * * @param act * Activity * @param position * int. You can use BasePanel.LEFT_UP,BasePanel.RIGHT_UP, * BasePanel.RIGHT_BOTTOM or BasePanel.LEFT_BOTTOM. * @param leftMargin * int, left margin. * @param topMargin * int, top margin. * @param rightMargin * int, right margin. * @param bottomMargin * int, bottom margin. * */ public void attach(int position, int leftMargin, int topMargin, int rightMargin, int bottomMargin) { FrameLayout.LayoutParams params = null; params = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); params.setMargins(leftMargin, topMargin, rightMargin, bottomMargin); switch (position) { case LEFT_UP: params.gravity = Gravity.LEFT; break; case RIGHT_UP: params.gravity = Gravity.RIGHT; break; case LEFT_BOTTOM: params.gravity = Gravity.LEFT | Gravity.BOTTOM; break; case RIGHT_BOTTOM: params.gravity = Gravity.RIGHT | Gravity.BOTTOM; break; default: break; } attach(params); }
/** * The developer can use this method to remove the panel from the Activity. * */ public void remove() { if (view != null) { ViewManager mViewManager = (ViewManager) view.getParent(); if (mViewManager != null) { mViewManager.removeView(view); } } }
private Handler mHandler = new Handler(Looper.getMainLooper()) {