Skip to content

Commit 0969a26

Browse files
committed
Small fixes
1 parent 8cea618 commit 0969a26

File tree

4 files changed

+35
-29
lines changed

4 files changed

+35
-29
lines changed

README.md

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,9 @@ Example of arrays `colors` and `icons` in `res\values\buttons.xml`:
8080
```
8181

8282
Or use the constructor
83-
`CircleMenuView(@NonNull Context context, @NonNull List<Integer> icons, @NonNull List<Integer> colors)`,
83+
```java
84+
CircleMenuView(@NonNull Context context, @NonNull List<Integer> icons, @NonNull List<Integer> colors)
85+
```
8486
to add `CircleMenuView` and configure the buttons programmatically (in the code).
8587

8688
Next, connect the event handler `CircleMenuView.EventListener` as shown below,
@@ -122,15 +124,15 @@ menu.setEventListener(new CircleMenuView.EventListener() {
122124
```
123125

124126
Here are the attributes you can specify through XML or related setters:
125-
*`button_icons` - Array of buttons icons.
126-
*`button_colors` - Array of buttons colors.
127-
*`icon_menu` - Menu default icon.
128-
*`icon_close` - Menu closed icon.
129-
*`icon_color` - Menu icon color.
130-
*`duration_ring` - Ring effect duration.
131-
*`duration_open` - Menu opening animation duration.
132-
*`duration_close` - Menu closing animation duration.
133-
*`distance` - Distance between center button and buttons
127+
* `button_icons` - Array of buttons icons.
128+
* `button_colors` - Array of buttons colors.
129+
* `icon_menu` - Menu default icon.
130+
* `icon_close` - Menu closed icon.
131+
* `icon_color` - Menu icon color.
132+
* `duration_ring` - Ring effect duration.
133+
* `duration_open` - Menu opening animation duration.
134+
* `duration_close` - Menu closing animation duration.
135+
* `distance` - Distance between center button and buttons
134136

135137
## License
136138

circle-menu-simple-example/src/main/res/values/styles.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
55
<!-- Customize your theme here. -->
66
<item name="colorPrimary">@color/colorPrimary</item>
7-
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
7+
<item name="colorPrimaryDark">@android:color/black</item>
88
<item name="colorAccent">@color/colorAccent</item>
9-
<item name="android:windowBackground">@color/colorPrimary</item>
9+
<item name="android:windowBackground">@android:color/black</item>
1010
</style>
1111

1212
</resources>

circle-menu/src/main/java/com/ramotion/circlemenu/CircleMenuView.java

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ public void onButtonClickAnimationEnd(@NonNull CircleMenuView view, int buttonIn
9494
private float mDistance;
9595

9696
private final List<View> mButtons = new ArrayList<>();
97+
private final Rect mButtonRect = new Rect();
9798

9899
public CircleMenuView(@NonNull Context context, @Nullable AttributeSet attrs) {
99100
super(context, attrs);
@@ -130,16 +131,20 @@ private void init(@NonNull Context context, @Nullable AttributeSet attrs,
130131
final int colorArrayId = a.getResourceId(R.styleable.CircleMenuView_button_colors, 0);
131132

132133
final TypedArray iconsIds = getResources().obtainTypedArray(iconArrayId);
133-
final int[] colorsIds = getResources().getIntArray(colorArrayId);
134+
try {
135+
final int[] colorsIds = getResources().getIntArray(colorArrayId);
134136

135-
final int buttonsCount = Math.min(iconsIds.length(), colorsIds.length);
137+
final int buttonsCount = Math.min(iconsIds.length(), colorsIds.length);
136138

137-
icons = new ArrayList<>(buttonsCount);
138-
colors = new ArrayList<>(buttonsCount);
139+
icons = new ArrayList<>(buttonsCount);
140+
colors = new ArrayList<>(buttonsCount);
139141

140-
for (int i = 0; i < buttonsCount; i++) {
141-
icons.add(iconsIds.getResourceId(i, -1));
142-
colors.add(colorsIds[i]);
142+
for (int i = 0; i < buttonsCount; i++) {
143+
icons.add(iconsIds.getResourceId(i, -1));
144+
colors.add(colorsIds[i]);
145+
}
146+
} finally {
147+
iconsIds.recycle();
143148
}
144149
}
145150

@@ -254,15 +259,14 @@ protected void onLayout(boolean changed, int left, int top, int right, int botto
254259
button.setY(y);
255260
}
256261

257-
final Rect buttonRect = new Rect();
258-
mMenuButton.getContentRect(buttonRect);
262+
mMenuButton.getContentRect(mButtonRect);
259263

260264
mRingView.setX(getWidth() / 2f - mRingView.getWidth() / 2f);
261265
mRingView.setY(getHeight() / 2f - mRingView.getHeight() / 2f);
262-
mRingView.setStrokeWidth(buttonRect.width());
266+
mRingView.setStrokeWidth(mButtonRect.width());
263267

264268
if (mDistance == -1) {
265-
mDistance = buttonRect.width() * 1.5f;
269+
mDistance = mButtonRect.width() * 1.5f;
266270
}
267271

268272
final LayoutParams lp = (LayoutParams) mRingView.getLayoutParams();
@@ -320,14 +324,12 @@ public void onAnimationEnd(Animator animation) {
320324

321325
final float elevation = mMenuButton.getCompatElevation();
322326

327+
mRingView.setVisibility(View.INVISIBLE);
323328
mRingView.setStartAngle(startAngle);
324329
mRingView.setAngle(0);
325-
mRingView.setAlpha(1f);
326-
mRingView.setScaleX(1f);
327-
mRingView.setScaleY(1f);
328330
mRingView.setStrokeColor(button.getBackgroundTintList().getDefaultColor());
329331

330-
final ObjectAnimator angle = ObjectAnimator.ofFloat(mRingView, "angle", 360);
332+
final ObjectAnimator ring = ObjectAnimator.ofFloat(mRingView, "angle", 360);
331333
final ObjectAnimator scaleX = ObjectAnimator.ofFloat(mRingView, "scaleX", 1f, 1.3f);
332334
final ObjectAnimator scaleY = ObjectAnimator.ofFloat(mRingView, "scaleY", 1f, 1.3f);
333335
final ObjectAnimator visible = ObjectAnimator.ofFloat(mRingView, "alpha", 1f, 0f);
@@ -336,7 +338,7 @@ public void onAnimationEnd(Animator animation) {
336338
lastSet.playTogether(scaleX, scaleY, visible, getCloseMenuAnimation());
337339

338340
final AnimatorSet firstSet = new AnimatorSet();
339-
firstSet.playTogether(rotateButton, angle);
341+
firstSet.playTogether(rotateButton, ring);
340342
firstSet.addListener(new AnimatorListenerAdapter() {
341343
@Override
342344
public void onAnimationStart(Animator animation) {
@@ -347,6 +349,9 @@ public void onAnimationStart(Animator animation) {
347349
button.setCompatElevation(elevation + 2);
348350
ViewCompat.setZ(mRingView, elevation + 1);
349351
}
352+
mRingView.setScaleX(1f);
353+
mRingView.setScaleY(1f);
354+
mRingView.setVisibility(View.VISIBLE);
350355
}
351356
@Override
352357
public void onAnimationEnd(Animator animation) {

circle-menu/src/main/java/com/ramotion/circlemenu/RingEffectView.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import android.graphics.Paint;
66
import android.graphics.RectF;
77
import android.support.annotation.FloatRange;
8-
import android.util.Log;
98
import android.view.View;
109

1110

0 commit comments

Comments
 (0)