Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 1 addition & 14 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion .idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions Sample/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<activity android:name=".ActivityWithBadge"></activity>
</application>

</manifest>
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
package com.luseen.spacenavigationview;

import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.luseen.spacenavigation.SpaceItem;
import com.luseen.spacenavigation.SpaceNavigationView;
import com.luseen.spacenavigation.SpaceOnClickListener;
import com.luseen.spacenavigation.SpaceOnLongClickListener;

import java.util.ArrayList;
import java.util.List;


public class ActivityWithBadge extends AppCompatActivity {

private SpaceNavigationView spaceNavigationView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_badge);

Button btnShowBadge = (Button) findViewById(R.id.btnBadge);
btnShowBadge.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
spaceNavigationView.shouldShowFullBadgeText(true);
spaceNavigationView.showBadgeAtIndex(0, 2, Color.RED);
spaceNavigationView.showBadgeAtIndex(1, 3, Color.DKGRAY);
spaceNavigationView.showBadgeAtIndex(2, 4, Color.MAGENTA);
spaceNavigationView.showBadgeAtIndex(3, 23, Color.BLUE);
}
});

spaceNavigationView = (SpaceNavigationView) findViewById(R.id.space);
spaceNavigationView.initWithSaveInstanceState(savedInstanceState);
spaceNavigationView.addSpaceItem(new SpaceItem(R.id.navigation_first,"HOME", R.drawable.account));
spaceNavigationView.addSpaceItem(new SpaceItem(R.id.navigation_second, "SEARCH", R.drawable.magnify));
spaceNavigationView.addSpaceItem(new SpaceItem(R.id.navigation_third, "HOME", R.drawable.account));
spaceNavigationView.addSpaceItem(new SpaceItem(R.id.navigation_forth, "SEARCH", R.drawable.magnify));
spaceNavigationView.shouldShowFullBadgeText(false);

spaceNavigationView.setCentreButtonId(R.id.navigation_centre);
spaceNavigationView.setCentreButtonIconColorFilterEnabled(false);

spaceNavigationView.setSpaceOnClickListener(new SpaceOnClickListener() {
@Override
public void onCentreButtonClick() {
Log.d("onCentreButtonClick ", "onCentreButtonClick");
}

@Override
public void onItemClick(int itemIndex, String itemName) {
Log.d("onItemClick ", "" + itemIndex + " " + itemName);
}

@Override
public void onItemReselected(int itemIndex, String itemName) {
Log.d("onItemReselected ", "" + itemIndex + " " + itemName);
}
});

spaceNavigationView.setSpaceOnLongClickListener(new SpaceOnLongClickListener() {
@Override
public void onCentreButtonLongClick() {
Toast.makeText(ActivityWithBadge.this, "onCentreButtonLongClick", Toast.LENGTH_SHORT).show();
}

@Override
public void onItemLongClick(int itemIndex, String itemName) {
Toast.makeText(ActivityWithBadge.this, itemIndex + " " + itemName, Toast.LENGTH_SHORT).show();
}
});
spaceNavigationView.showIconOnly();
setUpRecyclerView();
}

@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
spaceNavigationView.onSaveInstanceState(outState);
}

private void setUpRecyclerView() {
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
RecyclerAdapter adapter = new RecyclerAdapter(dummyStrings());
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new GridLayoutManager(this, 2));
recyclerView.setAdapter(adapter);
adapter.setRecyclerClickListener(new RecyclerAdapter.RecyclerClickListener() {
@Override
public void onClick(int position) {
if (position == 0) {
spaceNavigationView.showBadgeAtIndex(1, 54, ContextCompat.getColor(ActivityWithBadge.this, R.color.badge_background_color));
} else if (position == 1) {
spaceNavigationView.hideBudgeAtIndex(1);
}
}
});
}

private List<String> dummyStrings() {
List<String> colorList = new ArrayList<>();
colorList.add("#354045");
colorList.add("#20995E");
colorList.add("#76FF03");
colorList.add("#E26D1B");
colorList.add("#911717");
colorList.add("#9C27B0");
colorList.add("#FFC107");
colorList.add("#01579B");
return colorList;
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.luseen.spacenavigationview;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
Expand All @@ -26,6 +27,8 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Toast.makeText(getApplicationContext(), "Long press center button to show badge example", Toast.LENGTH_LONG).show();

spaceNavigationView = (SpaceNavigationView) findViewById(R.id.space);
spaceNavigationView.initWithSaveInstanceState(savedInstanceState);
spaceNavigationView.addSpaceItem(new SpaceItem("HOME", R.drawable.account));
Expand Down Expand Up @@ -54,7 +57,9 @@ public void onItemReselected(int itemIndex, String itemName) {
spaceNavigationView.setSpaceOnLongClickListener(new SpaceOnLongClickListener() {
@Override
public void onCentreButtonLongClick() {
Toast.makeText(MainActivity.this, "onCentreButtonLongClick", Toast.LENGTH_SHORT).show();
// Toast.makeText(MainActivity.this, "onCentreButtonLongClick", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(MainActivity.this, ActivityWithBadge.class);
startActivity(intent);
}

@Override
Expand Down
46 changes: 46 additions & 0 deletions Sample/src/main/res/layout/activity_badge.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.luseen.spacenavigationview.MainActivity">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="20dp"
android:text="This library doesn't support loading of badges during initialisation. It takes some time for bottom navigation to get initialize. Hence I have given a button below to load badges on click. In production you can call the showBadgeAtIndex method after a network call or use it by making a thread call of 3 second" />

<Button
android:id="@+id/btnBadge"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Click to Show Badge" />

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent" />

<com.luseen.spacenavigation.SpaceNavigationView
android:id="@+id/space"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_gravity="bottom"
app:centre_part_linear="false"
app:layout_behavior="com.luseen.spacenavigation.SpaceNavigationViewBehavior" />
</RelativeLayout>
</LinearLayout>
</android.support.design.widget.CoordinatorLayout>
8 changes: 8 additions & 0 deletions Sample/src/main/res/values/ids.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="navigation_first" type="id"/>
<item name="navigation_second" type="id"/>
<item name="navigation_third" type="id"/>
<item name="navigation_forth" type="id"/>
<item name="navigation_centre" type="id"/>
</resources>
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.0-beta3'
classpath 'com.novoda:bintray-release:0.3.4'
classpath 'com.android.tools.build:gradle:3.0.1'
classpath 'com.novoda:bintray-release:0.8.0'
}
}

Expand Down
4 changes: 2 additions & 2 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#Sun Jan 29 18:23:19 AMT 2017
#Wed Mar 14 18:44:51 IST 2018
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
19 changes: 19 additions & 0 deletions spacelib/src/main/java/com/luseen/spacenavigation/SpaceItem.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@

public class SpaceItem implements Serializable {

private int id = -1;

private String itemName;

private int itemIcon;
Expand All @@ -29,6 +31,23 @@ public SpaceItem(String itemName, int itemIcon) {
this.itemIcon = itemIcon;
}

public SpaceItem(int id, int itemIcon) {
this.id = id;
this.itemIcon = itemIcon;
}

public SpaceItem(int id, String itemName, int itemIcon) {
this(itemName, itemIcon);
this.id = id;
}

public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}

String getItemName() {
return itemName;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.ColorInt;
import android.support.annotation.IdRes;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.content.ContextCompat;
import android.util.AttributeSet;
Expand Down Expand Up @@ -70,6 +71,7 @@ public class SpaceNavigationView extends RelativeLayout {
private final int spaceNavigationHeight = (int) getResources().getDimension(com.luseen.spacenavigation.R.dimen.space_navigation_height);
private final int mainContentHeight = (int) getResources().getDimension(com.luseen.spacenavigation.R.dimen.main_content_height);
private final int centreContentWight = (int) getResources().getDimension(com.luseen.spacenavigation.R.dimen.centre_content_width);
private final int itemContentWight = (int) getResources().getDimension(com.luseen.spacenavigation.R.dimen.item_content_width);
private final int centreButtonSize = (int) getResources().getDimension(com.luseen.spacenavigation.R.dimen.space_centre_button_default_size);
private List<SpaceItem> spaceItems = new ArrayList<>();
private List<View> spaceItemList = new ArrayList<>();
Expand All @@ -93,6 +95,8 @@ public class SpaceNavigationView extends RelativeLayout {

private int spaceBackgroundColor = NOT_DEFINED;

private int centreButtonId = NOT_DEFINED;

private int centreButtonColor = NOT_DEFINED;

private int activeCentreButtonIconColor = NOT_DEFINED;
Expand Down Expand Up @@ -287,6 +291,11 @@ private void initAndAddViewsToMainView() {
centreContent = buildBezierView();

centreButton = new CentreButton(context);

if (centreButtonId != NOT_DEFINED) {
centreButton.setId(centreButtonId);
}

centreButton.setSize(FloatingActionButton.SIZE_NORMAL);
centreButton.setUseCompatPadding(false);
centreButton.setRippleColor(centreButtonRippleColor);
Expand Down Expand Up @@ -337,7 +346,7 @@ public boolean onLongClick(View v) {
/**
* Centre Background View content size and position
*/
LayoutParams centreBackgroundViewParams = new LayoutParams(centreContentWight, mainContentHeight);
LayoutParams centreBackgroundViewParams = new LayoutParams(itemContentWight, mainContentHeight);
centreBackgroundViewParams.addRule(RelativeLayout.CENTER_HORIZONTAL);
centreBackgroundViewParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);

Expand Down Expand Up @@ -441,6 +450,12 @@ private void addSpaceItems(LinearLayout leftContent, LinearLayout rightContent)
spaceItemText.setText(spaceItems.get(i).getItemName());
spaceItemText.setTextSize(TypedValue.COMPLEX_UNIT_PX, spaceItemTextSize);

/**
* Set a custom id to the item
*/
if (spaceItems.get(i).getId() != -1)
textAndIconContainer.setId(spaceItems.get(i).getId());

/**
* Set custom font to space item textView
*/
Expand Down Expand Up @@ -741,6 +756,10 @@ public void onSaveInstanceState(Bundle outState) {
outState.putSerializable(CHANGED_ICON_AND_TEXT_BUNDLE_KEY, changedItemAndIconHashMap);
}

public void setCentreButtonId(@IdRes int id) {
this.centreButtonId = id;
}

/**
* Set centre circle button background color
*
Expand Down
2 changes: 1 addition & 1 deletion spacelib/src/main/res/drawable/near_me.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@
android:width="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path android:fillColor="#fff" android:pathData="M21,3L3,10.53V11.5L9.84,14.16L12.5,21H13.46L21,3Z" />
<path android:fillColor="#ff0000" android:pathData="M21,3L3,10.53V11.5L9.84,14.16L12.5,21H13.46L21,3Z" />
</vector>
Loading