Skip to content

Commit 53f05d2

Browse files
committed
add option for radius & degree
1 parent 0c59e91 commit 53f05d2

File tree

6 files changed

+45
-31
lines changed

6 files changed

+45
-31
lines changed

Diff for: androidarcmenu/src/main/java/com/hackplan/androidarcmenu/ArcMenu.java

+23-13
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import android.app.Activity;
44
import android.graphics.Rect;
55
import android.support.annotation.DrawableRes;
6-
import android.support.v7.widget.RecyclerView;
76
import android.view.MotionEvent;
87
import android.view.View;
98
import android.view.ViewGroup;
@@ -33,10 +32,7 @@ public void showOn(View view) {
3332
if (view == null) return;
3433
Rect rect = new Rect();
3534
view.getGlobalVisibleRect(rect);
36-
builder.arcMenuLayout.show(this, rect.centerX(),
37-
rect.centerY(),
38-
builder.btnList,
39-
builder.hideOnTouchUp);
35+
builder.show(rect.centerX(), rect.centerY());
4036
}
4137

4238
public int getId() {
@@ -49,19 +45,22 @@ public static class Builder{
4945
private ArrayList<ArcButton.Builder> btnList = new ArrayList<>();
5046
private OnClickMenuListener onClickMenuListener;
5147
private Activity activity;
52-
private ArcMenuInterceptLayout arcMenuLayout;
48+
private ArcMenuInterceptLayout arcMenuInterceptLayout;
5349
private HashSet<View> onTouchViews = new HashSet<>();
5450
private boolean hideOnTouchUp = true;
51+
private int radius;
52+
private double degree = 90;
5553

5654

5755
public Builder(Activity activity) {
5856
this.activity = activity;
57+
radius = activity.getResources().getDimensionPixelSize(R.dimen.default_radius);
5958
}
6059

6160
public ArcMenu build() {
6261
if (arcMenu != null) throw new RuntimeException("ArcMenu.Build already built");
63-
arcMenuLayout = attachToActivity(activity);
64-
arcMenuLayout.setOnClickBtnListener(onClickMenuListener);
62+
arcMenuInterceptLayout = attachToActivity(activity);
63+
arcMenuInterceptLayout.setOnClickBtnListener(onClickMenuListener);
6564
arcMenu = new ArcMenu(this);
6665
return arcMenu;
6766
}
@@ -71,6 +70,16 @@ public Builder setId(int id){
7170
return this;
7271
}
7372

73+
public Builder setRadius(int radius) {
74+
this.radius = radius;
75+
return this;
76+
}
77+
78+
public Builder setDegree(double degree) {
79+
this.degree = degree;
80+
return this;
81+
}
82+
7483
public Builder setListener(OnClickMenuListener listener) {
7584
this.onClickMenuListener = listener;
7685
return this;
@@ -103,11 +112,15 @@ public Builder hideOnTouchUp(boolean h) {
103112
return this;
104113
}
105114

115+
private void show(int x, int y) {
116+
arcMenuInterceptLayout.show(arcMenu, x, y,
117+
btnList, hideOnTouchUp, radius, degree);
118+
}
106119

107120
private View.OnLongClickListener longClickListener = new View.OnLongClickListener() {
108121
@Override
109122
public boolean onLongClick(View v) {
110-
arcMenuLayout.show(arcMenu, lastTouchX, lastTouchY, btnList, hideOnTouchUp);
123+
show(lastTouchX, lastTouchY);
111124
return true;
112125
}
113126
};
@@ -118,10 +131,7 @@ public boolean onLongClick(View v) {
118131
public boolean onTouch(View v, MotionEvent event) {
119132
if (event.getAction() == MotionEvent.ACTION_DOWN){
120133
if (onTouchViews.contains(v)) {
121-
arcMenuLayout.show(arcMenu,
122-
(int) event.getRawX(),
123-
(int) event.getRawY(),
124-
btnList, hideOnTouchUp);
134+
show((int) event.getRawX(), (int) event.getRawY());
125135
}else {
126136
//Used in onLongClick(View v)
127137
lastTouchX = (int) event.getRawX();

Diff for: androidarcmenu/src/main/java/com/hackplan/androidarcmenu/ArcMenuInterceptLayout.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,16 @@ private void init() {
3535
childViewParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
3636
}
3737

38-
public void show(ArcMenu arcMenu, int x, int y, ArrayList<ArcButton.Builder> btnList, boolean hideOnTouchUp) {
38+
public void show(ArcMenu arcMenu, int x, int y, ArrayList<ArcButton.Builder> btnList,
39+
boolean hideOnTouchUp, int radius, double degree) {
3940
if (indexOfChild(arcMenuLayout) == -1) {
4041
addView(arcMenuLayout);
4142
}
4243
arcMenuLayout.removeAllViews();
4344
for (ArcButton.Builder builder : btnList) {
4445
arcMenuLayout.addView(builder.getButton(getContext()), childViewParams);
4546
}
46-
arcMenuLayout.show(arcMenu, x, y, hideOnTouchUp);
47+
arcMenuLayout.show(arcMenu, x, y, hideOnTouchUp, radius, degree);
4748

4849
}
4950

Diff for: androidarcmenu/src/main/java/com/hackplan/androidarcmenu/ArcMenuLayout.java

+3-8
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,11 @@ public boolean isShow() {
5252
}
5353

5454
private ArrayList<PointF> menuPoints = new ArrayList<>();
55-
private int radius = (int) dpToPx(80f);
56-
private double arcRadians = Math.toRadians(90d);
5755

58-
public void show(ArcMenu arcMenu, int x, int y, boolean hideOnTouchUp) {
56+
public void show(ArcMenu arcMenu, int x, int y, boolean hideOnTouchUp,
57+
int radius, double degree) {
5958
if (getChildCount() <= 0) return;
59+
double arcRadians = Math.toRadians(degree);
6060
this.hideOnTouchUp = hideOnTouchUp;
6161
this.arcMenu = arcMenu;
6262
show = true;
@@ -173,11 +173,6 @@ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
173173
setMeasuredDimension(w, h);
174174
}
175175

176-
public float dpToPx(float dipValue) {
177-
DisplayMetrics metrics = getContext().getResources().getDisplayMetrics();
178-
return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dipValue, metrics);
179-
}
180-
181176
private boolean animFinished = true;
182177

183178
private AnimatorListenerAdapter animListener = new AnimatorListenerAdapter() {

Diff for: androidarcmenu/src/main/res/values/dimens.xml

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<resources>
2+
<dimen name="default_radius">80dp</dimen>
3+
</resources>

Diff for: app/src/main/java/com/hackplan/androidarcmenu/demo/MainActivity.java

+6-1
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,15 @@ protected void onCreate(Bundle savedInstanceState) {
4141
arcMenu2 = new ArcMenu.Builder(MainActivity.this)
4242
.setId(ARC_MENU_ID_2)
4343
.addBtn(R.drawable.w, 6)
44+
.addBtn(R.drawable.w, 6)
45+
.addBtn(R.drawable.w, 6)
46+
.addBtn(R.drawable.w, 6)
4447
.addBtns(new ArcButton.Builder(menuBtn, 2))
4548
.setListener(MainActivity.this)
4649
.showOnTouch(btn2)
4750
.hideOnTouchUp(true)
51+
.setDegree(160)
52+
.setRadius(222)
4853
.build();
4954

5055
btn3.setOnLongClickListener(this);
@@ -58,7 +63,7 @@ public void onClick(View v) {
5863

5964
LinearLayoutManager mLayoutManager = new LinearLayoutManager(this);
6065
mRecyclerView.setLayoutManager(mLayoutManager);
61-
MyAdapter mAdapter = new MyAdapter(new String[]{"Pomotodo", "hackplan", "http://one.hackplan.com/", "Dacer"}, this, this);
66+
MyAdapter mAdapter = new MyAdapter(new String[]{"HACKPLAN", "Pomotodo", "http://one.hackplan.com/", "Dacer"}, this, this);
6267
mRecyclerView.setAdapter(mAdapter);
6368

6469
}

Diff for: app/src/main/res/layout/activity_main.xml

+7-7
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
android:layout_alignParentStart="true"
1515
android:layout_alignParentLeft="true"
1616
android:layout_centerVertical="true"
17-
android:text="btn1"/>
17+
android:text="HOLD(btn1)"/>
1818

1919
<Button
2020
android:id="@+id/btn2"
@@ -23,27 +23,27 @@
2323
android:layout_alignParentEnd="true"
2424
android:layout_alignParentRight="true"
2525
android:layout_centerVertical="true"
26-
android:text="btn2"/>
26+
android:text="TOUCH(btn2)"/>
2727

2828
<Button
2929
android:id="@+id/btn3"
3030
android:layout_width="wrap_content"
3131
android:layout_height="wrap_content"
32-
android:layout_centerInParent="true"
33-
android:text="btn3"/>
32+
android:layout_alignParentTop="true"
33+
android:text="ANOTHER HOLD(btn3)"/>
3434

3535
<Button
3636
android:id="@+id/btn4"
3737
android:layout_width="wrap_content"
3838
android:layout_height="wrap_content"
39-
android:layout_above="@+id/btn3"
39+
android:layout_above="@+id/btn1"
4040
android:layout_marginBottom="20dp"
41-
android:text="btn4"/>
41+
android:text="CLICK(btn4)"/>
4242

4343

4444
<android.support.v7.widget.RecyclerView
4545
android:id="@+id/my_recycler_view"
46-
android:layout_below="@+id/btn3"
46+
android:layout_below="@+id/btn2"
4747
android:scrollbars="vertical"
4848
android:layout_width="match_parent"
4949
android:layout_height="match_parent"/>

0 commit comments

Comments
 (0)