Skip to content

Commit 0f5848f

Browse files
committed
New updates
1 parent e8ca2a0 commit 0f5848f

File tree

13 files changed

+85
-661
lines changed

13 files changed

+85
-661
lines changed

ArcMenuLibrary/src/main/java/com/bvapp/arcmenulibrary/ArcMenu.java

Lines changed: 84 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,16 @@
2020
import android.content.res.ColorStateList;
2121
import android.content.res.Resources;
2222
import android.content.res.TypedArray;
23+
import android.graphics.Bitmap;
24+
import android.graphics.BitmapFactory;
2325
import android.graphics.Color;
2426
import android.graphics.Typeface;
27+
import android.graphics.drawable.BitmapDrawable;
2528
import android.graphics.drawable.Drawable;
2629
import android.graphics.drawable.GradientDrawable;
2730
import android.os.Build;
2831
import android.support.annotation.ColorRes;
32+
import android.support.annotation.DrawableRes;
2933
import android.support.annotation.NonNull;
3034
import android.support.v7.widget.RecyclerView;
3135
import android.util.AttributeSet;
@@ -168,6 +172,13 @@ public int getDuration() {
168172
private int mCornerRadius;
169173
private ColorStateList mTextColor;
170174
private Typeface mTypeface = Typeface.DEFAULT;
175+
176+
private Drawable iconClose;
177+
private Drawable iconOpen;
178+
private boolean isDoubleIconSet;
179+
private boolean isOneIconSet;
180+
181+
private OnClickListener clickListener;
171182
/**
172183
*
173184
* @param context
@@ -209,13 +220,25 @@ private void init(Context context) {
209220
@Override
210221
public void onClick(View view) {
211222
if(menuAnim && mArcLayout.isAnimDone()){
223+
if(clickListener != null){
224+
clickListener.onClick(fabMenu);
225+
}
212226
ViewAnim.shrinkExpandAnimation(fabMenu);
227+
213228
if(isMenuClicked){
214229
isMenuClicked = false;
215-
ViewAnim.rotateAnimation(mIcon, false);
230+
if(!isDoubleIconSet && !isOneIconSet){
231+
ViewAnim.rotateAnimation(mIcon, false);
232+
}else if(isDoubleIconSet && !isOneIconSet){
233+
fabMenu.setIcon(iconClose, true);
234+
}
216235
}else{
217236
isMenuClicked = true;
218-
ViewAnim.rotateAnimation(mIcon, true);
237+
if(!isDoubleIconSet && !isOneIconSet){
238+
ViewAnim.rotateAnimation(mIcon, true);
239+
}else if(isDoubleIconSet && !isOneIconSet){
240+
fabMenu.setIcon(iconOpen, true);
241+
}
219242
}
220243
}
221244
if(mArcLayout.isAnimDone()){
@@ -420,7 +443,11 @@ public void run() {
420443
}
421444
if(isMenuClicked){
422445
isMenuClicked = false;
423-
ViewAnim.rotateAnimation(mIcon, false);
446+
if(!isDoubleIconSet && !isOneIconSet){
447+
ViewAnim.rotateAnimation(mIcon, false);
448+
}else if(isDoubleIconSet && !isOneIconSet){
449+
fabMenu.setIcon(iconClose, true);
450+
}
424451
}
425452
mArcLayout.invalidate();
426453
mArcLayout.setExpandDone(false);
@@ -586,6 +613,9 @@ public boolean isClose(){
586613
return false;
587614
}
588615

616+
public void setOnClickListener(OnClickListener listener){
617+
clickListener = listener;
618+
}
589619
/**
590620
*
591621
* @return menu status, true = open, false = close
@@ -641,8 +671,58 @@ public void setChildSize(int size) {
641671

642672
/**
643673
*
644-
* @param colorResId
645674
*/
675+
public void setDefaultIcon(){
676+
isDoubleIconSet = false;
677+
isOneIconSet = true;
678+
mIcon.setVisibility(VISIBLE);
679+
}
680+
681+
public void setIcon(@DrawableRes int iconClose, @DrawableRes int iconOpen) {
682+
try{
683+
Bitmap b = new BitmapFactory().decodeResource(getResources(), iconClose);
684+
Drawable c1 = new BitmapDrawable(getResources(), b);
685+
b = new BitmapFactory().decodeResource(getResources(), iconOpen);
686+
Drawable c2 = new BitmapDrawable(getResources(), b);
687+
setIcon(c1, c2);
688+
}catch (Exception e){
689+
e.printStackTrace();
690+
isDoubleIconSet = false;
691+
}
692+
}
693+
694+
public void setIcon(Drawable iconClose, Drawable iconOpen) {
695+
if(iconClose != null && iconOpen != null){
696+
this.iconClose = iconClose;
697+
this.iconOpen = iconOpen;
698+
fabMenu.setIcon(this.iconClose);
699+
mIcon.setVisibility(GONE);
700+
isDoubleIconSet = true;
701+
isOneIconSet = false;
702+
}
703+
}
704+
705+
public void setIcon(@DrawableRes int iconClose) {
706+
try{
707+
Bitmap b = new BitmapFactory().decodeResource(getResources(), iconClose);
708+
Drawable c = new BitmapDrawable(getResources(), b);
709+
setIcon(c);
710+
}catch (Exception e){
711+
e.printStackTrace();
712+
isOneIconSet = false;
713+
}
714+
}
715+
716+
public void setIcon(Drawable iconClose) {
717+
if(iconClose != null){
718+
this.iconClose = iconClose;
719+
fabMenu.setIcon(this.iconClose);
720+
mIcon.setVisibility(GONE);
721+
isDoubleIconSet = false;
722+
isOneIconSet = true;
723+
}
724+
}
725+
646726
public void setColorNormalResId(@ColorRes int colorResId) {
647727
setColorNormal(getColor(colorResId));
648728
}

app/src/main/java/com/bvapp/arcmenu/ActivityTooltip.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ protected void onCreate(Bundle savedInstanceState) {
4545
arcMenuY.setToolTipPadding(8);
4646
arcMenuY.setColorNormal(getResources().getColor(R.color.colorPrimary));
4747
arcMenuY.setDuration(600);
48+
arcMenuY.setIcon(R.mipmap.facebook_w, R.mipmap.github_w);
4849
arcMenuY.showTooltip(true);
4950

5051
initArcMenu(arcMenu, str, ITEM_DRAWABLES, ITEM_DRAWABLES.length - 1);

app/src/main/java/com/bvapp/floatingarcmenu/ActivityFragment.java

Lines changed: 0 additions & 183 deletions
This file was deleted.

0 commit comments

Comments
 (0)