这个例子主要是实现上面这样的效果,点击Panel按钮,实现测试1/2/3按钮动态显示并挤压其他布局(实现过程参照网上的一些资料,如有侵权,请告之)
package com.android.PanelDemo;
import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;
import android.view.View;
import android.widget.LinearLayout;
public class Panel extends LinearLayout{
private static final String TAG = "Panel";
private OnPanelStateChangeListenr mOnPanelStateChangeListenr;
private Context mContext;
private int MAX_MIDTH = 0;
private static final int SPEED = 20;
private boolean isOperator = false;
private int direct = 0;
public Panel(Context context, int width, int height) {
super(context);
mContext = context;
LayoutParams lp = new LayoutParams(width, height);
if (direct == 1) {
lp.rightMargin = -lp.width;
MAX_MIDTH = Math.abs(lp.rightMargin);
} else {
lp.leftMargin = -lp.width;
MAX_MIDTH = Math.abs(lp.leftMargin);
}
this.setLayoutParams(lp);
}
public Panel(Context context, View bindView, View contentView, View viewBeside, int width, int height, int direct) {
this(context,width,height);
direct = direct;
//必须改变Panel左侧组件的weight属性
LayoutParams p=(LayoutParams) viewBeside.getLayoutParams();
p.weight=1;//支持挤压
viewBeside.setLayoutParams(p);
setBindView(bindView);
setContentView(contentView);
}
public void setBindView(View bindView) {
bindView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
LayoutParams lp = (LayoutParams)getLayoutParams();
Log.e(TAG, "bindView onclick leftMargin = "+lp.leftMargin);
if (isOperator == true) {
return;
}else {
isOperator = true;
}
if (lp.rightMargin <