diff --git a/briar-android/build.gradle b/briar-android/build.gradle
index f06ca62b1..8e043ff7f 100644
--- a/briar-android/build.gradle
+++ b/briar-android/build.gradle
@@ -6,7 +6,7 @@ dependencies {
compile fileTree(dir: '../briar-core/libs', include: '*.jar')
compile project(':briar-core')
compile fileTree(dir: 'libs', include: '*.jar')
- compile "com.android.support:appcompat-v7:23.1.1"
+ compile 'com.android.support:design:23.1.1'
compile 'com.android.support:recyclerview-v7:23.1.1'
}
diff --git a/briar-android/res/drawable/ic_add_white.xml b/briar-android/res/drawable/ic_add_white.xml
new file mode 100644
index 000000000..3052692a0
--- /dev/null
+++ b/briar-android/res/drawable/ic_add_white.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/briar-android/res/drawable/social_add_person.xml b/briar-android/res/drawable/social_add_person.xml
deleted file mode 100644
index 982183dea..000000000
--- a/briar-android/res/drawable/social_add_person.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
diff --git a/briar-android/res/layout/activity_contact_list.xml b/briar-android/res/layout/activity_contact_list.xml
index acde6fdc9..02faeff9b 100644
--- a/briar-android/res/layout/activity_contact_list.xml
+++ b/briar-android/res/layout/activity_contact_list.xml
@@ -1,18 +1,39 @@
-
+ android:layout_height="match_parent">
+
+
+
+
+
+
-
\ No newline at end of file
diff --git a/briar-android/res/values/styles.xml b/briar-android/res/values/styles.xml
index 0e0c2c0b9..8a706c0a2 100644
--- a/briar-android/res/values/styles.xml
+++ b/briar-android/res/values/styles.xml
@@ -5,6 +5,7 @@
- @style/BriarActionBar
- @color/briar_primary
- @color/briar_primary_dark
+ - @color/briar_primary
- @color/briar_text_primary
- @color/briar_text_primary_inverse
- @color/briar_text_primary
diff --git a/briar-android/src/org/briarproject/android/contact/ContactListActivity.java b/briar-android/src/org/briarproject/android/contact/ContactListActivity.java
index 7f9298089..b3fec8962 100644
--- a/briar-android/src/org/briarproject/android/contact/ContactListActivity.java
+++ b/briar-android/src/org/briarproject/android/contact/ContactListActivity.java
@@ -1,13 +1,11 @@
package org.briarproject.android.contact;
import android.content.Intent;
-import android.graphics.PorterDuff;
import android.os.Bundle;
+import android.support.design.widget.FloatingActionButton;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
+import android.view.View;
import android.view.View.OnCreateContextMenuListener;
import android.widget.ProgressBar;
import android.widget.TextView;
@@ -81,6 +79,19 @@ public class ContactListActivity extends BriarActivity
// Show a progress bar while the list is loading
loading = (ProgressBar) findViewById(R.id.progressBar);
loading.setVisibility(VISIBLE);
+
+ // Show a floating action button
+ FloatingActionButton fab = (FloatingActionButton) findViewById(
+ R.id.addContactFAB);
+
+ // handle FAB click
+ fab.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ startActivity(new Intent(ContactListActivity.this,
+ AddContactActivity.class));
+ }
+ });
}
@Override
@@ -96,32 +107,6 @@ public class ContactListActivity extends BriarActivity
loadContacts();
}
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // Inflate the menu items for use in the action bar
- MenuInflater inflater = getMenuInflater();
- inflater.inflate(R.menu.contact_list_actions, menu);
-
- // adapt icon color to dark action bar
- menu.findItem(R.id.action_social_add_person).getIcon().setColorFilter(
- getResources().getColor(R.color.action_bar_text),
- PorterDuff.Mode.SRC_IN);
-
- return super.onCreateOptionsMenu(menu);
- }
-
- @Override
- public boolean onOptionsItemSelected(final MenuItem item) {
- // Handle presses on the action bar items
- switch (item.getItemId()) {
- case R.id.action_social_add_person:
- startActivity(new Intent(this, AddContactActivity.class));
- return true;
- default:
- return super.onOptionsItemSelected(item);
- }
- }
-
private void loadContacts() {
runOnUiThread(new Runnable() {
@@ -169,7 +154,7 @@ public class ContactListActivity extends BriarActivity
private void displayContacts(final List contacts) {
runOnUiThread(new Runnable() {
public void run() {
- if(contacts.size() > 0) {
+ if (contacts.size() > 0) {
list.setVisibility(VISIBLE);
empty.setVisibility(GONE);
} else {
diff --git a/briar-android/src/org/briarproject/android/util/HideFabOnScrollBehavior.java b/briar-android/src/org/briarproject/android/util/HideFabOnScrollBehavior.java
new file mode 100644
index 000000000..9d847b9c2
--- /dev/null
+++ b/briar-android/src/org/briarproject/android/util/HideFabOnScrollBehavior.java
@@ -0,0 +1,42 @@
+package org.briarproject.android.util;
+
+import android.content.Context;
+import android.support.design.widget.CoordinatorLayout;
+import android.support.design.widget.FloatingActionButton;
+import android.support.v4.view.ViewCompat;
+import android.util.AttributeSet;
+import android.view.View;
+
+public class HideFabOnScrollBehavior extends FloatingActionButton.Behavior {
+
+ public HideFabOnScrollBehavior(Context context, AttributeSet attrs) {
+ super();
+ }
+
+ @Override
+ public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout,
+ FloatingActionButton child, View directTargetChild, View target,
+ int nestedScrollAxes) {
+ return nestedScrollAxes == ViewCompat.SCROLL_AXIS_VERTICAL ||
+ super.onStartNestedScroll(coordinatorLayout, child,
+ directTargetChild, target,
+ nestedScrollAxes);
+ }
+
+ @Override
+ public void onNestedScroll(CoordinatorLayout coordinatorLayout,
+ FloatingActionButton child,
+ View target, int dxConsumed, int dyConsumed, int dxUnconsumed,
+ int dyUnconsumed) {
+ super.onNestedScroll(coordinatorLayout, child, target, dxConsumed,
+ dyConsumed, dxUnconsumed,
+ dyUnconsumed);
+
+ if (dyConsumed > 0 && child.getVisibility() == View.VISIBLE) {
+ child.hide();
+ } else if (dyConsumed < 0 && child.getVisibility() != View.VISIBLE) {
+ child.show();
+ }
+ }
+
+}
\ No newline at end of file