Skip to content

Commit

Permalink
optimize
Browse files Browse the repository at this point in the history
  • Loading branch information
huxq17 committed Jul 1, 2016
1 parent b91ad5b commit d62640b
Show file tree
Hide file tree
Showing 4 changed files with 217 additions and 149 deletions.
251 changes: 107 additions & 144 deletions app/src/main/java/com/huxq17/example/floatball/FloatBall.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.Scroller;
import android.widget.TextView;

import com.huxq17.example.floatball.interfaces.IMenu;

Expand All @@ -36,8 +35,8 @@ public class FloatBall extends RelativeLayout {
private int mLeft;
private Rect windowRect = new Rect();
private ImageView ivFloatBall;
private RelativeLayout rightMenu;
private RelativeLayout leftMenu;
private ExpanableLayout rightMenu;
private ExpanableLayout leftMenu;
private int leftMenuWidth, rightMenuWidth;
private int mTouchSlop;
private boolean isIntercepted = false;
Expand All @@ -47,44 +46,28 @@ public class FloatBall extends RelativeLayout {

private IMenu menuOperator;

public void setMenu(IMenu menu) {
this.menuOperator = menu;
}


public void setIsHiddenWhenExit(boolean isHiddenWhenExit) {
this.isHiddenWhenExit = isHiddenWhenExit;
}
// public void setIsHiddenWhenExit(boolean isHiddenWhenExit) {
// this.isHiddenWhenExit = isHiddenWhenExit;
// }

public FloatBall(Context context) {
super(context);
init(context);
init(context, null);
}

private void init(Context context) {
mScroller = new Scroller(getContext());
mClipScroller = new Scroller(getContext(), new LinearInterpolator());
mTouchSlop = ViewConfiguration.get(getContext()).getScaledTouchSlop();

rightMenu = new RelativeLayout(context);
rightMenu.setId(getId());
leftMenu = new RelativeLayout(context);
leftMenu.setId(getId());

LayoutParams layoutParams = new LayoutParams(DensityUtil.dip2px(getContext(), 135), DensityUtil.dip2px(getContext(), 30));
layoutParams.addRule(CENTER_VERTICAL);
addView(leftMenu, 0, layoutParams);

layoutParams = new LayoutParams(DensityUtil.dip2px(getContext(), 135), DensityUtil.dip2px(getContext(), 30));
layoutParams.addRule(RIGHT_OF, leftMenu.getId());
layoutParams.addRule(CENTER_VERTICAL);
addView(rightMenu, layoutParams);
public FloatBall(Context context, IMenu menu) {
super(context);
init(context, menu);
}

private void init(Context context, IMenu menu) {
menuOperator = menu;
addMenu(context);
ivFloatBall = new ImageView(context);
ivFloatBall.setId(getId());
setFloatImage(R.drawable.floatball2, 1);
ivFloatBall.setScaleType(ImageView.ScaleType.FIT_XY);
layoutParams = new LayoutParams(DensityUtil.dip2px(getContext(), 40), DensityUtil.dip2px(getContext(), 40));
LayoutParams layoutParams = new LayoutParams(DensityUtil.dip2px(getContext(), 40), DensityUtil.dip2px(getContext(), 40));
layoutParams.addRule(RIGHT_OF, leftMenu.getId());
layoutParams.addRule(LEFT_OF, rightMenu.getId());
layoutParams.setMargins(-DensityUtil.dip2px(context, 20), 0, -DensityUtil.dip2px(context, 20), 0);
Expand All @@ -95,22 +78,38 @@ public void onClick(View v) {
}
});
this.addView(ivFloatBall, layoutParams);
leftMenuWidth = rightMenuWidth = DensityUtil.dip2px(getContext(), 135 - 20);
}

layoutParams = new LayoutParams(DensityUtil.dip2px(getContext(), 135), DensityUtil.dip2px(getContext(), 30));
ExpanableLayout leftMenuChild = new ExpanableLayout(context);
leftMenuChild.setOritation(ExpanableLayout.LEFT);
leftMenuChild.setBackgroundColor(Color.parseColor("#fafafa"));
addLeftContentView(leftMenuChild);
leftMenu.addView(leftMenuChild, layoutParams);
private void addMenu(Context context) {
mScroller = new Scroller(getContext());
mClipScroller = new Scroller(getContext(), new LinearInterpolator());
mTouchSlop = ViewConfiguration.get(getContext()).getScaledTouchSlop();

layoutParams = new LayoutParams(DensityUtil.dip2px(getContext(), 135), DensityUtil.dip2px(getContext(), 30));
ExpanableLayout rightMenuChild = new ExpanableLayout(context);
rightMenuChild.setOritation(ExpanableLayout.RIGHT);
rightMenuChild.setBackgroundColor(Color.parseColor("#fafafa"));
addContentView(rightMenuChild);
rightMenu.addView(rightMenuChild, layoutParams);
rightMenu = new ExpanableLayout(context);
rightMenu.setId(getId());
rightMenu.setOritation(ExpanableLayout.RIGHT);
leftMenu = new ExpanableLayout(context);
leftMenu.setId(getId());
leftMenu.setOritation(ExpanableLayout.LEFT);

leftMenuWidth = rightMenuWidth = DensityUtil.dip2px(getContext(), 135 - 20);
leftMenu.setBackgroundColor(Color.parseColor("#fafafa"));
addLeftMenu(leftMenu);
rightMenu.setBackgroundColor(Color.parseColor("#fafafa"));
addRightMenu(rightMenu);

LayoutParams layoutParams = new LayoutParams(DensityUtil.dip2px(getContext(), 135), DensityUtil.dip2px(getContext(), 30));
layoutParams.addRule(CENTER_VERTICAL);
if (menuOperator != null && menuOperator.isLeftMenuEnable()) {
addView(leftMenu, 0, layoutParams);
}

layoutParams = new LayoutParams(DensityUtil.dip2px(getContext(), 135), DensityUtil.dip2px(getContext(), 30));
layoutParams.addRule(RIGHT_OF, leftMenu.getId());
layoutParams.addRule(CENTER_VERTICAL);
if (menuOperator != null && menuOperator.isRightMenuEnable()) {
addView(rightMenu, layoutParams);
}
}

public int getId() {
Expand All @@ -119,117 +118,68 @@ public int getId() {

private void setFloatImage(int imageid, float alpha) {
ivFloatBall.setImageResource(imageid);
// ivFloatBall.setImageAlpha();
ivFloatBall.setAlpha(alpha);
}

private void addContentView(ViewGroup parent) {
private void addRightMenu(RelativeLayout parent) {
LayoutParams layoutParams = new LayoutParams(DensityUtil.dip2px(getContext(), 52), DensityUtil.dip2px(getContext(), 30));
layoutParams.setMargins(DensityUtil.dip2px(getContext(), 20), 0, 0, 0);
tvLeftCenter = new TextView(getContext());
tvLeftCenter.setId(getId());
tvLeftCenter.setText("我的");
tvLeftCenter.setTextSize(14);
tvLeftCenter.setGravity(Gravity.CENTER);
tvLeftCenter.setTextColor(Color.parseColor("#333333"));
parent.addView(tvLeftCenter, layoutParams);

layoutParams = new LayoutParams(DensityUtil.dip2px(getContext(), 1), DensityUtil.dip2px(getContext(), 30));
layoutParams.setMargins(0, DensityUtil.dip2px(getContext(), 8), 0, DensityUtil.dip2px(getContext(), 8));
layoutParams.addRule(RIGHT_OF, tvLeftCenter.getId());
View verticalLine = new View(getContext());
verticalLine.setId(getId());
verticalLine.setBackgroundColor(Color.parseColor("#e5e5e5"));
parent.addView(verticalLine, layoutParams);

layoutParams = new LayoutParams(DensityUtil.dip2px(getContext(), 52), DensityUtil.dip2px(getContext(), 30));
layoutParams.addRule(RIGHT_OF, verticalLine.getId());
tvRightGift = new TextView(getContext());
tvRightGift.setId(getId());
tvRightGift.setText("福利");
tvRightGift.setTextSize(14);
tvRightGift.setGravity(Gravity.CENTER);
tvRightGift.setTextColor(Color.parseColor("#333333"));
parent.addView(tvRightGift, layoutParams);
}

private void addLeftContentView(ViewGroup parent) {
if (menuOperator != null) {
menuOperator.addRightMenu(parent, layoutParams);
}
}

private void addLeftMenu(RelativeLayout parent) {
LayoutParams layoutParams = new LayoutParams(DensityUtil.dip2px(getContext(), 52), DensityUtil.dip2px(getContext(), 30));
layoutParams.setMargins(0, 0, DensityUtil.dip2px(getContext(), 20), 0);
layoutParams.addRule(ALIGN_PARENT_RIGHT);
tvLeftGift = new TextView(getContext());
tvLeftGift.setId(getId());
tvLeftGift.setText("福利");
tvLeftGift.setTextSize(14);
tvLeftGift.setGravity(Gravity.CENTER);
tvLeftGift.setTextColor(Color.parseColor("#333333"));
parent.addView(tvLeftGift, layoutParams);
layoutParams = new LayoutParams(DensityUtil.dip2px(getContext(), 1), DensityUtil.dip2px(getContext(), 30));
layoutParams.setMargins(0, DensityUtil.dip2px(getContext(), 8), 0, DensityUtil.dip2px(getContext(), 8));
layoutParams.addRule(LEFT_OF, tvLeftGift.getId());
View verticalLine = new View(getContext());
verticalLine.setId(getId());
verticalLine.setBackgroundColor(Color.parseColor("#e5e5e5"));
parent.addView(verticalLine, layoutParams);

layoutParams = new LayoutParams(DensityUtil.dip2px(getContext(), 52), DensityUtil.dip2px(getContext(), 30));
layoutParams.addRule(LEFT_OF, verticalLine.getId());
tvRightCenter = new TextView(getContext());
tvRightCenter.setId(getId());
tvRightCenter.setText("我的");
tvRightCenter.setTextSize(14);
tvRightCenter.setGravity(Gravity.CENTER);
tvRightCenter.setTextColor(Color.parseColor("#333333"));
parent.addView(tvRightCenter, layoutParams);
}

private TextView tvLeftCenter, tvRightCenter, tvLeftGift, tvRightGift;
if (menuOperator != null) {
menuOperator.addLeftMenu(parent, layoutParams);
}
}

public void setOnCenterClickListener(final OnClickListener listener) {
if (listener == null) {
return;
}
tvLeftCenter.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
clickButton();
listener.onClick(v);
}
});
tvRightCenter.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
clickButton();
listener.onClick(v);
}
});
// tvLeftCenter.setOnClickListener(new OnClickListener() {
// @Override
// public void onClick(View v) {
// clickButton();
// listener.onClick(v);
// }
// });
// tvRightCenter.setOnClickListener(new OnClickListener() {
// @Override
// public void onClick(View v) {
// clickButton();
// listener.onClick(v);
// }
// });
}

public void setOnGiftClickListener(final OnClickListener listener) {
if (listener == null) {
return;
}
tvLeftGift.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
clickButton();
listener.onClick(v);
}
});
tvRightGift.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
clickButton();
listener.onClick(v);
}
});
// tvLeftGift.setOnClickListener(new OnClickListener() {
// @Override
// public void onClick(View v) {
// clickButton();
// listener.onClick(v);
// }
// });
// tvRightGift.setOnClickListener(new OnClickListener() {
// @Override
// public void onClick(View v) {
// clickButton();
// listener.onClick(v);
// }
// });
}

public void clear() {
tvLeftGift.setOnClickListener(null);
tvLeftCenter.setOnClickListener(null);
tvRightCenter.setOnClickListener(null);
tvRightGift.setOnClickListener(null);
// tvLeftGift.setOnClickListener(null);
// tvLeftCenter.setOnClickListener(null);
// tvRightCenter.setOnClickListener(null);
// tvRightGift.setOnClickListener(null);
}

public void clickButton() {
Expand All @@ -243,19 +193,32 @@ private void showMenu(boolean show) {
ivFloatBall.getLocationOnScreen(floatLocation);
int floatLeft = floatLocation[0];
if (show) {
isMenuShowing = true;
setFloatImage(R.drawable.floatball2, 1);
if (floatLeft + ivFloatBall.getHeight() / 2 <= mScreenWidth / 2) {
showingmenuView = (ExpanableLayout) rightMenu.getChildAt(0);
if (menuOperator != null && menuOperator.isRightMenuEnable()) {
isMenuShowing = true;
showingmenuView = rightMenu;
} else {
isMenuShowing = false;
}
} else {
showingmenuView = (ExpanableLayout) leftMenu.getChildAt(0);
if (menuOperator != null && menuOperator.isLeftMenuEnable()) {
isMenuShowing = true;
showingmenuView = leftMenu;
} else {
isMenuShowing = false;
}
}
if (isMenuShowing) {
mClipScroller.startScroll(0, 0, width, 0, 300);
post(mclipRunnable);
}
mClipScroller.startScroll(0, 0, width, 0, 300);
post(mclipRunnable);
} else {
isMenuShowing = false;
mClipScroller.startScroll(width, 0, -width, 0, 300);
post(mclipRunnable);
if (isMenuShowing) {
isMenuShowing = false;
mClipScroller.startScroll(width, 0, -width, 0, 300);
post(mclipRunnable);
}
}
}

Expand Down

0 comments on commit d62640b

Please sign in to comment.