手机
当前位置:查字典教程网 >编程开发 >安卓软件开发 >在Android中动态添加Panel框架的实现代码
在Android中动态添加Panel框架的实现代码
摘要:这里说是框架,说的大了点,其实没有那么复杂,只是一个容易扩展的基类而已。不过至少算是框架类的代码。复制代码代码如下:packagearui;...

这里说是框架,说的大了点,其实没有那么复杂,只是一个容易扩展的基类而已。不过至少算是框架类的代码。

复制代码 代码如下:

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);

}

【在Android中动态添加Panel框架的实现代码】相关文章:

android 电话状态监听(来电和去电)实现代码

Android仿UC底部菜单栏实现原理与代码

解析Android开发中多点触摸的实现方法

Android 中动态加载.jar的实现步骤

Android图片翻转动画简易实现代码

Android基站定位原理及实现代码

android全屏去掉title栏的多种实现方法

android获取屏幕的长与宽实现代码(手写)

基于Android XML解析与保存的实现

Android开发中比较耗时的一些操作小结

精品推荐
分类导航