源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

在Android中动态添加Panel框架的实现代码

  • 时间:2022-03-25 17:15 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:在Android中动态添加Panel框架的实现代码
这里说是框架,说的大了点,其实没有那么复杂,只是一个容易扩展的基类而已。不过至少算是框架类的代码。
[u]复制代码[/u] 代码如下:
package arui;  import android.app.Activity;  import android.os.Handler;  import android.os.Looper;  import android.os.Message;  import android.view.Gravity;  import android.view.LayoutInflater;  import android.view.View;  import android.view.ViewGroup.LayoutParams;  import android.view.ViewManager;  import android.widget.FrameLayout;  /**  * 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()) {          @Override          public void handleMessage(Message msg) {              switch (msg.what) {              case SHOW_PANEL:                  if (view == null) {                      LayoutInflater factory = LayoutInflater.from(activity);                      view = factory.inflate(layoutId, null);                  }                  dealwithPanel(view);                  remove();                  activity.addContentView(view, parameters);                  break;              }          }      };      /**      * do something with this panel.      *       * @param view      *            View of the panel      */      public abstract void dealwithPanel(View view);  } 
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部