Skip to content

Commit 943cd05

Browse files
committed
#5 Feature added
1 parent 64ce03a commit 943cd05

File tree

6 files changed

+49
-142
lines changed

6 files changed

+49
-142
lines changed

app/app.iml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,10 @@
7676
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
7777
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
7878
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
79+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
7980
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
81+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
82+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
8083
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support.test.espresso/espresso-core/2.2.2/jars" />
8184
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support.test.espresso/espresso-idling-resource/2.2.2/jars" />
8285
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support.test/exposed-instrumentation-api-publish/0.5/jars" />
@@ -87,11 +90,17 @@
8790
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/23.4.0/jars" />
8891
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-vector-drawable/23.4.0/jars" />
8992
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
93+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-safeguard" />
94+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
9095
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
96+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/pre-dexed" />
9197
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
9298
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
99+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" />
93100
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
101+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
94102
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
103+
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
95104
</content>
96105
<orderEntry type="jdk" jdkName="Android API 23 Platform" jdkType="Android SDK" />
97106
<orderEntry type="sourceFolder" forTests="false" />

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
app:squareFabSize="80"
3232
app:fabColor="@color/colorPrimaryDark"
3333
android:id="@+id/sm"
34+
app:autoClose="false"
3435
app:iconM1="@drawable/ic_delete_forever_white_24dp"
3536
app:iconM2="@drawable/ic_call_white_24dp"
3637
app:iconM3="@drawable/ic_chat_white_24dp"

squaremenu/build.gradle

Lines changed: 3 additions & 136 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,16 @@
11
apply plugin: 'com.android.library'
22

3-
ext {
4-
bintrayRepo = 'maven'
5-
bintrayName = 'squaremenu'
6-
orgName = 'ideal'
7-
8-
publishedGroupId = 'com.devs'
9-
libraryName = 'SquareMenu'
10-
artifact = 'squaremenu'
11-
12-
libraryDescription = 'SquareMenu is a custom Floating Action Button with a different shape from traditional FABs and with three sub menu buttons.'
13-
14-
siteUrl = 'https://github.com/devsideal/SquareMenu'
15-
gitUrl = 'https://github.com/devsideal/SquareMenu.git'
16-
17-
libraryVersion = '1.0.1'
18-
19-
developerId = 'ideal'
20-
developerName = 'deven'
21-
developerEmail = 'devs.ideal@gmail.com'
22-
23-
licenseName = 'The Apache Software License, Version 2.0'
24-
licenseUrl = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
25-
allLicenses = ["Apache-2.0"]
26-
}
27-
283
android {
294
compileSdkVersion 23
305
buildToolsVersion "23.0.3"
31-
326
defaultConfig {
337
minSdkVersion 11
34-
targetSdkVersion 21
8+
targetSdkVersion 23
359
versionCode 1
36-
versionName "1.0.1"
37-
10+
versionName "1.0.0"
3811
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
39-
4012
}
13+
4114
buildTypes {
4215
release {
4316
minifyEnabled false
@@ -50,109 +23,3 @@ dependencies {
5023
compile fileTree(dir: 'libs', include: ['*.jar'])
5124
compile 'com.nineoldandroids:library:2.4.0'
5225
}
53-
54-
//===============================================
55-
apply plugin: 'com.jfrog.bintray'
56-
57-
version = libraryVersion
58-
59-
if (project.hasProperty("android")) { // Android libraries
60-
task sourcesJar(type: Jar) {
61-
classifier = 'sources'
62-
from android.sourceSets.main.java.srcDirs
63-
}
64-
65-
task javadoc(type: Javadoc) {
66-
source = android.sourceSets.main.java.srcDirs
67-
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
68-
}
69-
} else { // Java libraries
70-
task sourcesJar(type: Jar, dependsOn: classes) {
71-
classifier = 'sources'
72-
from sourceSets.main.allSource
73-
}
74-
}
75-
76-
task javadocJar(type: Jar, dependsOn: javadoc) {
77-
classifier = 'javadoc'
78-
from javadoc.destinationDir
79-
}
80-
81-
artifacts {
82-
archives javadocJar
83-
archives sourcesJar
84-
}
85-
86-
// Bintray
87-
Properties properties = new Properties()
88-
properties.load(project.rootProject.file('local.properties').newDataInputStream())
89-
90-
bintray {
91-
user = properties.getProperty("bintray.user")
92-
key = properties.getProperty("bintray.apikey")
93-
94-
configurations = ['archives']
95-
pkg {
96-
repo = bintrayRepo
97-
name = bintrayName
98-
userOrg = orgName
99-
desc = libraryDescription
100-
websiteUrl = siteUrl
101-
vcsUrl = gitUrl
102-
licenses = allLicenses
103-
publish = true
104-
publicDownloadNumbers = true
105-
version {
106-
desc = libraryDescription
107-
gpg {
108-
sign = true //Determines whether to GPG sign the files. The default is false
109-
passphrase = properties.getProperty("bintray.gpg.password")
110-
//Optional. The passphrase for GPG signing'
111-
}
112-
}
113-
}
114-
}
115-
116-
//============================================
117-
apply plugin: 'com.github.dcendents.android-maven'
118-
119-
group = publishedGroupId // Maven Group ID for the artifact
120-
121-
install {
122-
repositories.mavenInstaller {
123-
// This generates POM.xml with proper parameters
124-
pom {
125-
project {
126-
packaging 'aar'
127-
groupId publishedGroupId
128-
artifactId artifact
129-
130-
// Add your description here
131-
name libraryName
132-
description libraryDescription
133-
url siteUrl
134-
135-
// Set your license
136-
licenses {
137-
license {
138-
name licenseName
139-
url licenseUrl
140-
}
141-
}
142-
developers {
143-
developer {
144-
id developerId
145-
name developerName
146-
email developerEmail
147-
}
148-
}
149-
scm {
150-
connection gitUrl
151-
developerConnection gitUrl
152-
url siteUrl
153-
154-
}
155-
}
156-
}
157-
}
158-
}

squaremenu/squaremenu.iml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,18 @@
7878
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
7979
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
8080
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />
81+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
82+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
8183
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
84+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-safeguard" />
85+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
8286
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint" />
8387
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
8488
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
8589
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" />
90+
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
8691
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
92+
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
8793
</content>
8894
<orderEntry type="jdk" jdkName="Android API 23 Platform" jdkType="Android SDK" />
8995
<orderEntry type="sourceFolder" forTests="false" />

squaremenu/src/main/java/com/devs/squaremenu/SquareMenu.java

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ public class SquareMenu extends View {
4646
// Custom values
4747
private int fabWidth = FAB_SIZE, fabHeight = FAB_SIZE;
4848
private int fabColor = FAB_COLOR;
49+
private boolean autoClose = false;
4950
private String menuOpenDirection = DEFAULT_DIRECTION;
5051
private Paint paintFAB, paintFabBG, paintFabBGWidShadow, paintFabBGWithoutShadow, paintFabPlus, paintIcons;
5152

@@ -75,6 +76,7 @@ private void setupAttributes(AttributeSet attrs) {
7576
// Extract custom attributes into member variables
7677
Drawable iconM1, iconM2, iconM3;
7778
try {
79+
autoClose = a.getBoolean(R.styleable.SquareMenu_autoClose, false);
7880
fabColor = a.getColor(R.styleable.SquareMenu_fabColor, FAB_COLOR);
7981
fabWidth = fabHeight = a.getInteger(R.styleable.SquareMenu_squareFabSize, FAB_SIZE);
8082
menuOpenDirection = a.getString(R.styleable.SquareMenu_menuOpenDirection);
@@ -308,25 +310,32 @@ private void touch4TopLeftMenu(MotionEvent event) {
308310
else {
309311
// Touch of BOTTOM_RIGHT
310312
if(event.getX() > fabWidth && event.getY() > fabHeight) {
311-
isOpened = false;
312-
resetAnimationTopLeftMenu();
313-
if(onMenuClickListener!=null)onMenuClickListener.onMenuClose();
313+
closeTopLeftM();
314314
}
315315
// Touch of TOP-LEFT
316316
else if(event.getX() < fabWidth && event.getY() < fabHeight) {
317317
if(onMenuClickListener!=null)onMenuClickListener.onClickMenu2();
318+
if(autoClose)closeTopLeftM();
318319
}
319320
// Touch of TOP-RIGHT
320321
else if(event.getX() > fabWidth && event.getY() < fabHeight) {
321322
if(onMenuClickListener!=null)onMenuClickListener.onClickMenu3();
323+
if(autoClose)closeTopLeftM();
322324
}
323325
// Touch of BOTTOM-LEFT
324326
else if(event.getX() < fabWidth && event.getY() > fabHeight) {
325327
if(onMenuClickListener!=null)onMenuClickListener.onClickMenu1();
328+
if(autoClose)closeTopLeftM();
326329
}
327330
}
328331
}
329332

333+
private void closeTopLeftM(){
334+
isOpened = false;
335+
resetAnimationTopLeftMenu();
336+
if(onMenuClickListener!=null)onMenuClickListener.onMenuClose();
337+
}
338+
330339
private void touch4TopRightMenu(MotionEvent event) {
331340
Log.i(TAG, "touch4TopRightMenu");
332341
if(!isOpened) {
@@ -339,25 +348,32 @@ private void touch4TopRightMenu(MotionEvent event) {
339348
else {
340349
// Touch of BOTTOM_LEFT
341350
if(event.getX() < fabWidth && event.getY() > fabHeight) {
342-
isOpened = false;
343-
resetAnimationTopRightMenu();
344-
if(onMenuClickListener!=null)onMenuClickListener.onMenuClose();
351+
closeTopRightM();
345352
}
346353
// Touch of TOP-RIGHT
347354
else if(event.getX() > fabWidth && event.getY() < fabHeight) {
348355
if(onMenuClickListener!=null)onMenuClickListener.onClickMenu2();
356+
if(autoClose) closeTopRightM();
349357
}
350358
// Touch of TOP-LEFT
351359
else if(event.getX() < fabWidth && event.getY() < fabHeight) {
352360
if(onMenuClickListener!=null)onMenuClickListener.onClickMenu3();
361+
if(autoClose) closeTopRightM();
353362
}
354363
// Touch of BOTTOM-RIGHT
355364
else if(event.getX() > fabWidth && event.getY() > fabHeight) {
356365
if(onMenuClickListener!=null)onMenuClickListener.onClickMenu1();
366+
if(autoClose) closeTopRightM();
357367
}
358368
}
359369
}
360370

371+
private void closeTopRightM(){
372+
isOpened = false;
373+
resetAnimationTopRightMenu();
374+
if(onMenuClickListener!=null)onMenuClickListener.onMenuClose();
375+
}
376+
361377
private void startAnimationTopRightMenu() {
362378
// Setup Background and Foreground Shadow
363379
paintFabBG = paintFabBGWithoutShadow;
@@ -629,6 +645,13 @@ public void setFABColor(int color) {
629645
requestLayout();
630646
}
631647

648+
/**
649+
* @param autoClose true or false : default is false
650+
*/
651+
public void setAutoClose(boolean autoClose) {
652+
this.autoClose = autoClose;
653+
}
654+
632655
/**
633656
* Register callbacks to be invoked when this Menu is clicked.
634657
*

squaremenu/src/main/res/values/attrs.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
<attr name="iconM1" format="integer" />
4242
<attr name="iconM2" format="integer" />
4343
<attr name="iconM3" format="integer" />
44+
<attr name="autoClose" format="boolean" />
4445
</declare-styleable>
4546

4647
</resources>

0 commit comments

Comments
 (0)