Skip to content

Commit f55de85

Browse files
committed
Adding multiple check
1 parent 50a1177 commit f55de85

File tree

6 files changed

+81
-28
lines changed

6 files changed

+81
-28
lines changed

app/src/main/java/com/imangazaliev/circlemenu/sample/MainActivity.java

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import android.os.Bundle;
44
import android.support.v7.app.AppCompatActivity;
55
import android.util.Log;
6+
import android.view.View;
7+
import android.widget.Button;
68

79
import com.imangazaliev.circlemenu.CircleMenu;
810
import com.imangazaliev.circlemenu.CircleMenuButton;
@@ -17,15 +19,14 @@ protected void onCreate(Bundle savedInstanceState) {
1719
setContentView(R.layout.activity_main);
1820

1921
final CircleMenu circleMenu = (CircleMenu) findViewById(R.id.circle_menu);
20-
circleMenu.setConfimationButton(true);
22+
final Button button = (Button) findViewById(R.id.send_alert);
2123

2224
for (int i = 0; i < 4; i ++) {
2325
CircleMenuButton circleMenuButton = new CircleMenuButton(this);
2426

2527
circleMenuButton.setColorNormal(R.color.color_normal);
2628
circleMenuButton.setColorPressed(R.color.color_pressed);
2729
circleMenuButton.setIconResId(R.drawable.ic_favorite);
28-
circleMenuButton.setTypeCheck(true);
2930
circleMenuButton.setMetaData(new DataGroup(i));
3031

3132
circleMenu.addButton(circleMenuButton);
@@ -40,6 +41,27 @@ public void onConfirmation(List<Object> listData) {
4041
}
4142
}
4243
});
44+
45+
circleMenu.setStateUpdateListener(new CircleMenu.OnStateUpdateListener() {
46+
@Override
47+
public void onMenuExpanded() {
48+
button.setVisibility(View.GONE);
49+
}
50+
51+
@Override
52+
public void onMenuCollapsed() {
53+
button.setVisibility(View.VISIBLE);
54+
}
55+
});
56+
57+
button.setOnLongClickListener(new View.OnLongClickListener() {
58+
@Override
59+
public boolean onLongClick(View v) {
60+
circleMenu.getCenterButton().performClick();
61+
return true;
62+
}
63+
});
64+
4365
}
4466

4567
}

app/src/main/res/layout/activity_main.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,22 @@
55
android:layout_height="match_parent"
66
android:background="#fff">
77

8+
<Button
9+
android:id="@+id/send_alert"
10+
android:width="120dp"
11+
android:layout_centerInParent="true"
12+
android:height="120dp"
13+
android:background="@drawable/ic_add_alert_black_24dp"
14+
android:layout_width="wrap_content"
15+
android:layout_height="wrap_content" />
16+
817
<com.imangazaliev.circlemenu.CircleMenu
918
android:id="@+id/circle_menu"
1019
android:layout_width="wrap_content"
1120
android:layout_height="wrap_content"
1221
android:layout_centerInParent="true"
1322
app:hintsEnabled="true"
23+
app:multiple_check="true"
1424
app:center_drawable="@drawable/ic_add_alert_black_24dp"
1525
app:confirmation_center_drawable="@drawable/ic_send_red">
1626
</com.imangazaliev.circlemenu.CircleMenu>

library/src/main/java/com/imangazaliev/circlemenu/CenterMenuButton.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public class CenterMenuButton extends CircleMenuButton {
1717

1818
private boolean expanded;
1919
private AnimatorSet preLollipopAnimationSet;
20+
private boolean multipleCheck;
2021

2122
public CenterMenuButton(Context context) {
2223
super(context);
@@ -41,10 +42,13 @@ Drawable getIconDrawable() {
4142

4243
public void setExpanded(boolean isExpanded) {
4344
expanded = isExpanded;
44-
if (isVectorAnimationSupported()) {
45-
startVectorAnimation(isExpanded);
46-
} else {
47-
startPreLollipopAnimation();
45+
46+
if (this.multipleCheck == false) {
47+
if (isVectorAnimationSupported()) {
48+
startVectorAnimation(isExpanded);
49+
} else {
50+
startPreLollipopAnimation();
51+
}
4852
}
4953
}
5054

@@ -95,4 +99,12 @@ public void onAnimationStart(Animator animation) {
9599
private boolean isVectorAnimationSupported() {
96100
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP;
97101
}
102+
103+
public boolean isMultipleCheck() {
104+
return multipleCheck;
105+
}
106+
107+
public void setMultipleCheck(boolean multipleCheck) {
108+
this.multipleCheck = multipleCheck;
109+
}
98110
}

library/src/main/java/com/imangazaliev/circlemenu/CircleMenu.java

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,15 @@ public interface OnConfirmationListener {
3636
private float radius = -1;
3737
private int circleStartAngle;
3838
private boolean hintsEnabled;
39-
private boolean confirmationButton;
39+
private boolean multipleCheck;
40+
41+
public CenterMenuButton getCenterButton() {
42+
return centerButton;
43+
}
44+
45+
public void setCenterButton(CenterMenuButton centerButton) {
46+
this.centerButton = centerButton;
47+
}
4048

4149
private CenterMenuButton centerButton;
4250

@@ -75,6 +83,7 @@ private void init(AttributeSet attrs) {
7583
radius = typedArray.getDimension(R.styleable.CircleMenu_distance, getResources().getDimension(R.dimen.circle_menu_distance));
7684
hintsEnabled = typedArray.getBoolean(R.styleable.CircleMenu_hintsEnabled, false);
7785
centerMenuButtonDrawable = typedArray.getDrawable(R.styleable.CircleMenu_center_drawable);
86+
multipleCheck = typedArray.getBoolean(R.styleable.CircleMenu_multiple_check, false);
7887
confirmationMenuButtonDrawable = typedArray.getDrawable(R.styleable.CircleMenu_confirmation_center_drawable);
7988
listObjectData = new ArrayList<>();
8089
listIndentifyChildMenuButton = new HashMap<>();
@@ -108,14 +117,19 @@ private void createCenterButton(Context context) {
108117
centerButton.setOnClickListener(new OnClickListener() {
109118
@Override
110119
public void onClick(View v) {
111-
menuController.toggle();
120+
clickCenterMenu();
112121
}
113122
});
114123

115124
addCenterDrawableIfEnable();
116125
addView(centerButton, super.generateDefaultLayoutParams());
117126
}
118127

128+
private void clickCenterMenu() {
129+
centerButton.setMultipleCheck(multipleCheck);
130+
menuController.toggle();
131+
}
132+
119133
private void addCenterDrawableIfEnable() {
120134
if (this.centerMenuButtonDrawable != null) {
121135
centerButton.setImageDrawable(this.centerMenuButtonDrawable);
@@ -256,13 +270,12 @@ public void onStartCollapsing() {
256270
public void onCollapsed() {
257271
addCenterDrawableIfEnable();
258272
centerButton.setClickable(true);
259-
if (this.confirmationButton) {
273+
if (this.multipleCheck) {
260274
onConfirmationListener.onConfirmation(listObjectData);
261275
clearClircleMenuButtons();
262-
} else {
263-
if (stateUpdateListener != null) {
264-
stateUpdateListener.onMenuCollapsed();
265-
}
276+
}
277+
if (stateUpdateListener != null) {
278+
stateUpdateListener.onMenuCollapsed();
266279
}
267280
}
268281

@@ -275,7 +288,7 @@ private void clearClircleMenuButtons() {
275288
@Override
276289
public void onItemClick(CircleMenuButton menuButton) {
277290
centerButton.setExpanded(false);
278-
if (menuButton.isTypeCheck()) {
291+
if (multipleCheck) {
279292
menuButton.setAlpha(0.2f);
280293
if (verifyAlreadyChecked(menuButton.getGenerateId())) {
281294
removeCheck(menuButton);
@@ -326,6 +339,11 @@ public void onItemLongClick(CircleMenuButton menuButton) {
326339
}
327340
}
328341

342+
@Override
343+
protected int[] onCreateDrawableState(int extraSpace) {
344+
return super.onCreateDrawableState(extraSpace);
345+
}
346+
329347
@Override
330348
public void redrawView() {
331349
invalidate();
@@ -356,12 +374,12 @@ public void addButton(CircleMenuButton menuButton) {
356374
menuController.addButton(menuButton);
357375
}
358376

359-
public boolean isConfirmationButton() {
360-
return confirmationButton;
377+
public boolean isMultipleCheck() {
378+
return multipleCheck;
361379
}
362380

363-
public void setConfimationButton(boolean buttonConfimation) {
364-
this.confirmationButton = buttonConfimation;
381+
public void setMultipleCheck(boolean buttonConfimation) {
382+
this.multipleCheck = buttonConfimation;
365383
}
366384

367385
}

library/src/main/java/com/imangazaliev/circlemenu/CircleMenuButton.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ public class CircleMenuButton extends AppCompatImageButton {
2929
private Drawable iconDrawable;
3030
private String hintText;
3131
private int buttonSize;
32-
private boolean typeCheck;
3332
private Object metaData;
3433

3534
public CircleMenuButton(Context context) {
@@ -53,7 +52,6 @@ void init(Context context, AttributeSet attributeSet) {
5352
colorDisabled = attr.getColor(R.styleable.CircleMenuButton_colorDisabled, getColor(R.color.circle_menu_button_color_disabled));
5453
iconId = attr.getResourceId(R.styleable.CircleMenuButton_icon, 0);
5554
hintText = attr.getString(R.styleable.CircleMenuButton_hintText);
56-
typeCheck = false;
5755
attr.recycle();
5856

5957
buttonSize = (int) getDimension(R.dimen.circle_menu_button_size);
@@ -197,14 +195,6 @@ public String getHintText() {
197195
return hintText;
198196
}
199197

200-
public boolean isTypeCheck() {
201-
return typeCheck;
202-
}
203-
204-
public void setTypeCheck(boolean typeCheck) {
205-
this.typeCheck = typeCheck;
206-
}
207-
208198
public Object getMetaData() {
209199
return metaData;
210200
}

library/src/main/res/values/circlemenu.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
<attr name="exit_animation_duration" format="integer"/>
88
<attr name="distance" format="integer"/>
99
<attr name="hintsEnabled" format="boolean"/>
10+
<attr name="multiple_check" format="boolean"/>
1011
<attr name="center_drawable" format="reference"/>
1112
<attr name="confirmation_center_drawable" format="reference"/>
1213
</declare-styleable>

0 commit comments

Comments
 (0)