Skip to content

Commit acdb7d4

Browse files
committed
update onClickArcMenu interface
1 parent f724ffa commit acdb7d4

File tree

5 files changed

+22
-12
lines changed

5 files changed

+22
-12
lines changed

app/src/main/java/com/hackplan/androidarcmenu/demo/MainActivity.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,14 @@ public void onClick(View v) {
7575
}
7676

7777
@Override
78-
public void onClickArcMenu(ArcMenu arcMenu, int viewId) {
79-
Toast.makeText(this, String.format("Click #%s, arcMenu id: %s", viewId, arcMenu.getId()), Toast.LENGTH_SHORT).show();
78+
public void onClickArcMenu(ArcMenu arcMenu, View v, int viewId) {
79+
boolean isInRecyclerView = v.getTag() != null;
80+
if (isInRecyclerView) {
81+
Toast.makeText(this, String.format("Click #%s, arcMenu id: %s, RecyclerView pos: %s",
82+
viewId, arcMenu.getId(), (int)v.getTag()), Toast.LENGTH_SHORT).show();
83+
} else {
84+
Toast.makeText(this, String.format("Click #%s, arcMenu id: %s", viewId, arcMenu.getId()), Toast.LENGTH_SHORT).show();
85+
}
8086
}
8187

8288
@Override

app/src/main/java/com/hackplan/androidarcmenu/demo/MyAdapter.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
5555
@Override
5656
public void onBindViewHolder(ViewHolder holder, int position) {
5757
holder.mTextView.setText(mDataset[position]);
58+
holder.mTextView.setTag(position);
5859
builder.showOnLongClick(holder.mTextView);
5960
}
6061

library/src/main/java/com/hackplan/androidarcmenu/ArcMenu.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
public class ArcMenu {
2020

2121
public interface OnClickMenuListener {
22-
void onClickArcMenu(ArcMenu arcMenu, int clickedMenuId);
22+
void onClickArcMenu(ArcMenu arcMenu, View v, int clickedMenuId);
2323
}
2424

2525
private Builder builder;
@@ -32,7 +32,7 @@ public void showOn(View view) {
3232
if (view == null) return;
3333
Rect rect = new Rect();
3434
view.getGlobalVisibleRect(rect);
35-
builder.show(rect.centerX(), rect.centerY());
35+
builder.show(view, rect.centerX(), rect.centerY());
3636
}
3737

3838
public int getId() {
@@ -112,15 +112,15 @@ public Builder hideOnTouchUp(boolean h) {
112112
return this;
113113
}
114114

115-
private void show(int x, int y) {
116-
arcMenuInterceptLayout.show(arcMenu, x, y,
115+
private void show(View v, int x, int y) {
116+
arcMenuInterceptLayout.show(arcMenu, v, x, y,
117117
btnList, hideOnTouchUp, radius, degree);
118118
}
119119

120120
private View.OnLongClickListener longClickListener = new View.OnLongClickListener() {
121121
@Override
122122
public boolean onLongClick(View v) {
123-
show(lastTouchX, lastTouchY);
123+
show(v, lastTouchX, lastTouchY);
124124
return true;
125125
}
126126
};
@@ -131,7 +131,7 @@ public boolean onLongClick(View v) {
131131
public boolean onTouch(View v, MotionEvent event) {
132132
if (event.getAction() == MotionEvent.ACTION_DOWN){
133133
if (onTouchViews.contains(v)) {
134-
show((int) event.getRawX(), (int) event.getRawY());
134+
show(v, (int) event.getRawX(), (int) event.getRawY());
135135
}else {
136136
//Used in onLongClick(View v)
137137
lastTouchX = (int) event.getRawX();

library/src/main/java/com/hackplan/androidarcmenu/ArcMenuInterceptLayout.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import android.content.Context;
44
import android.util.AttributeSet;
55
import android.view.MotionEvent;
6+
import android.view.View;
67
import android.widget.FrameLayout;
78

89
import com.hackplan.androidarcmenu.ArcMenu.OnClickMenuListener;
@@ -35,7 +36,7 @@ private void init() {
3536
childViewParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
3637
}
3738

38-
public void show(ArcMenu arcMenu, int x, int y, ArrayList<ArcButton.Builder> btnList,
39+
public void show(ArcMenu arcMenu, View v, int x, int y, ArrayList<ArcButton.Builder> btnList,
3940
boolean hideOnTouchUp, int radius, double degree) {
4041
if (indexOfChild(arcMenuLayout) == -1) {
4142
addView(arcMenuLayout);
@@ -44,7 +45,7 @@ public void show(ArcMenu arcMenu, int x, int y, ArrayList<ArcButton.Builder> btn
4445
for (ArcButton.Builder builder : btnList) {
4546
arcMenuLayout.addView(builder.getButton(getContext()), childViewParams);
4647
}
47-
arcMenuLayout.show(arcMenu, x, y, hideOnTouchUp, radius, degree);
48+
arcMenuLayout.show(arcMenu, v, x, y, hideOnTouchUp, radius, degree);
4849

4950
}
5051

library/src/main/java/com/hackplan/androidarcmenu/ArcMenuLayout.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ public class ArcMenuLayout extends ViewGroup {
3434
private OnClickMenuListener onClickMenuListener;
3535
private boolean show = false;
3636
private boolean hideOnTouchUp = true;
37+
private View viewForListener;
3738

3839
public ArcMenuLayout(Context context) {
3940
this(context, null);
@@ -53,12 +54,13 @@ public boolean isShow() {
5354

5455
private ArrayList<PointF> menuPoints = new ArrayList<>();
5556

56-
public void show(ArcMenu arcMenu, int x, int y, boolean hideOnTouchUp,
57+
public void show(ArcMenu arcMenu, View v, int x, int y, boolean hideOnTouchUp,
5758
int radius, double degree) {
5859
if (getChildCount() <= 0) return;
5960
double arcRadians = Math.toRadians(degree);
6061
this.hideOnTouchUp = hideOnTouchUp;
6162
this.arcMenu = arcMenu;
63+
this.viewForListener = v;
6264
show = true;
6365
if (x == mScreenRect.centerX() && y == mScreenRect.centerY()) y += 1;
6466

@@ -125,7 +127,7 @@ public boolean onTouchEvent(MotionEvent event) {
125127
AnimatorUtils.openMenu(this, lastFocusIndex, animListener);
126128
if (onClickMenuListener != null) {
127129
View clickedView = getChildAt(lastFocusIndex);
128-
onClickMenuListener.onClickArcMenu(arcMenu, (int) clickedView.getTag());
130+
onClickMenuListener.onClickArcMenu(arcMenu, viewForListener, (int) clickedView.getTag());
129131
}
130132
} else if (hideOnTouchUp) {
131133
AnimatorUtils.hideMenu(this, touchPoint);

0 commit comments

Comments
 (0)