OboeTester: allow collapse of settings

Use View.GONE
Make room in crowded layouts.
diff --git a/apps/OboeTester/app/CMakeLists.txt b/apps/OboeTester/app/CMakeLists.txt
index 2bca76c..2390007 100644
--- a/apps/OboeTester/app/CMakeLists.txt
+++ b/apps/OboeTester/app/CMakeLists.txt
@@ -28,7 +28,6 @@
 
 ### END OBOE INCLUDE SECTION ###
 
-
 # link to oboe
 target_link_libraries(oboetester log oboe atomic)
 
diff --git a/apps/OboeTester/app/src/main/cpp/NativeAudioContext.cpp b/apps/OboeTester/app/src/main/cpp/NativeAudioContext.cpp
index 9a72bbd..db563b6 100644
--- a/apps/OboeTester/app/src/main/cpp/NativeAudioContext.cpp
+++ b/apps/OboeTester/app/src/main/cpp/NativeAudioContext.cpp
@@ -272,6 +272,7 @@
     mSinkFloat = std::make_unique<SinkFloat>(mChannelCount);
     mSinkI16 = std::make_unique<SinkI16>(mChannelCount);
 
+    // TODO Use ActivityContext classes instead of switches.
     switch(mActivityType) {
         case ActivityType::Undefined:
             break;
diff --git a/apps/OboeTester/app/src/main/java/com/google/sample/oboe/manualtest/StreamConfigurationView.java b/apps/OboeTester/app/src/main/java/com/google/sample/oboe/manualtest/StreamConfigurationView.java
index f0b8754..5d108c6 100644
--- a/apps/OboeTester/app/src/main/java/com/google/sample/oboe/manualtest/StreamConfigurationView.java
+++ b/apps/OboeTester/app/src/main/java/com/google/sample/oboe/manualtest/StreamConfigurationView.java
@@ -19,6 +19,7 @@
 import android.content.Context;
 import android.media.AudioManager;
 import android.util.AttributeSet;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.AdapterView;
@@ -63,6 +64,22 @@
 
     private TextView mStreamInfoView;
     private TextView mStreamStatusView;
+    private TextView mOptionExpander;
+    private String mHideSettingsText;
+    private String mShowSettingsText;
+
+    // Create an anonymous implementation of OnClickListener
+    private View.OnClickListener mToggleListener = new View.OnClickListener() {
+        public void onClick(View v) {
+            if (mOptionTable.isShown()) {
+                mOptionTable.setVisibility(View.GONE);
+                mOptionExpander.setText(mShowSettingsText);
+            } else {
+                mOptionTable.setVisibility(View.VISIBLE);
+                mOptionExpander.setText(mHideSettingsText);
+            }
+        }
+    };
 
     public StreamConfigurationView(Context context) {
         super(context);
@@ -92,8 +109,14 @@
                 .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
         inflater.inflate(R.layout.stream_config, this);
 
+        mHideSettingsText = getResources().getString(R.string.hint_hide_settings);
+        mShowSettingsText = getResources().getString(R.string.hint_show_settings);
+
         mOptionTable = (TableLayout) findViewById(R.id.optionTable);
 
+        mOptionExpander = (TextView) findViewById(R.id.toggle_stream_config);
+        mOptionExpander.setOnClickListener(mToggleListener);
+
         mNativeApiSpinner = (Spinner) findViewById(R.id.spinnerNativeApi);
         mNativeApiSpinner.setOnItemSelectedListener(new NativeApiSpinnerListener());
         mNativeApiSpinner.setSelection(StreamConfiguration.NATIVE_API_UNSPECIFIED);
@@ -159,6 +182,7 @@
         });
     }
 
+
     public void setOutput(boolean output) {
         if (output) {
             mDeviceSpinner.setDirectionType(AudioManager.GET_DEVICES_OUTPUTS);
diff --git a/apps/OboeTester/app/src/main/res/layout/stream_config.xml b/apps/OboeTester/app/src/main/res/layout/stream_config.xml
index b0d3c9f..2bf4fb8 100644
--- a/apps/OboeTester/app/src/main/res/layout/stream_config.xml
+++ b/apps/OboeTester/app/src/main/res/layout/stream_config.xml
@@ -6,6 +6,13 @@
         android:layout_height="wrap_content"
         android:orientation="vertical">
 
+        <TextView   android:id="@+id/toggle_stream_config"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="#C0F0E0"
+            android:clickable="true"
+            android:text="@string/hint_hide_settings" />
+
         <TableLayout
             android:id="@+id/optionTable"
             android:layout_width="wrap_content"
@@ -167,30 +174,24 @@
                     android:text="\?" />
 
             </TableRow>
+            <TableRow
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content">
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="Device: " />
+
+                <com.google.sample.audio_device.AudioDeviceSpinner
+                    android:id="@+id/devices_spinner"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"/>
+
+            </TableRow>
+
         </TableLayout>
 
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:orientation="horizontal">
-
-            <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="Device: " />
-
-            <com.google.sample.audio_device.AudioDeviceSpinner
-                android:id="@+id/devices_spinner"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"/>
-
-        </LinearLayout>
-
-<!--        <TextView
-            android:id="@+id/device_name"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="\?" />-->
 
         <TextView
             android:id="@+id/streamInfo"
diff --git a/apps/OboeTester/app/src/main/res/values/strings.xml b/apps/OboeTester/app/src/main/res/values/strings.xml
index 24f9513..a09c31a 100644
--- a/apps/OboeTester/app/src/main/res/values/strings.xml
+++ b/apps/OboeTester/app/src/main/res/values/strings.xml
@@ -15,6 +15,8 @@
     <string name="GetParam">Get Param</string>
     <string name="device_name">Device Name</string>
     <string name="auto_select">Auto select</string>
+    <string name="hint_hide_settings">Hide Settings</string>
+    <string name="hint_show_settings">Show Settings</string>
 
     <string name="output_prompt">Choose an Output Mode</string>
     <string-array name="output_modes">