diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1adbe4c..cf3a456 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -10,13 +10,13 @@ android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" - android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen"> + > + android:screenOrientation="portrait" + android:theme="@style/AppTheme"> - diff --git a/app/src/main/java/de/trac/spherical/MainActivity.java b/app/src/main/java/de/trac/spherical/MainActivity.java index ce2839b..e51f84e 100644 --- a/app/src/main/java/de/trac/spherical/MainActivity.java +++ b/app/src/main/java/de/trac/spherical/MainActivity.java @@ -3,11 +3,16 @@ package de.trac.spherical; import android.content.Intent; import android.graphics.BitmapFactory; import android.net.Uri; +import android.os.Bundle; +import android.support.design.widget.AppBarLayout; import android.support.design.widget.FloatingActionButton; import android.support.v7.app.AppCompatActivity; -import android.os.Bundle; +import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.GestureDetector; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import android.widget.LinearLayout; @@ -19,7 +24,6 @@ import java.io.InputStream; import de.trac.spherical.parser.PhotoSphereMetadata; import de.trac.spherical.parser.PhotoSphereParser; - import de.trac.spherical.rendering.Renderer; import de.trac.spherical.rendering.SphereSurfaceView; @@ -33,35 +37,41 @@ public class MainActivity extends AppCompatActivity { private SphereSurfaceView surfaceView; private Renderer renderer; private FloatingActionButton fab; + private Toolbar toolbar; + private AppBarLayout appBarLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); - // Initialize renderer and setup surface view. - surfaceView = new SphereSurfaceView(this); - renderer = new Renderer(surfaceView); - ((LinearLayout) findViewById(R.id.container)).addView(surfaceView); - + // Prepare UI + toolbar = (Toolbar) findViewById(R.id.toolbar); + setSupportActionBar(toolbar); + appBarLayout = (AppBarLayout) findViewById(R.id.lay_toolbar); + AppBarLayout.LayoutParams lp = (AppBarLayout.LayoutParams) toolbar.getLayoutParams(); + lp.topMargin += getStatusBarHeight(); + appBarLayout.bringToFront(); fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SphereSurfaceView.USE_TOUCH = !SphereSurfaceView.USE_TOUCH; - fab.setVisibility(View.INVISIBLE); + displayUI(false); } }); + // Initialize renderer and setup surface view. + LinearLayout container = (LinearLayout) findViewById(R.id.container); + surfaceView = new SphereSurfaceView(this); + container.addView(surfaceView); + renderer = new Renderer(surfaceView); + // Detect gestures like single taps. final GestureDetector gestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() { @Override public boolean onSingleTapConfirmed(MotionEvent event) { - if (fab.isShown()) { - fab.setVisibility(View.INVISIBLE); - } else { - fab.show(); - } + displayUI(!fab.isShown()); return true; } @@ -88,10 +98,38 @@ public class MainActivity extends AppCompatActivity { } } + private void displayUI(boolean display) { + if (display) { + fab.show(); + appBarLayout.setExpanded(true, true); + } else { + fab.setVisibility(View.INVISIBLE); + appBarLayout.setExpanded(false, true); + } + } + @Override public void onResume() { super.onResume(); - fab.show(); + displayUI(true); + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + MenuInflater inflater = getMenuInflater(); + inflater.inflate(R.menu.main_menu, menu); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.menu_force_sphere: + Toast.makeText(this, R.string.not_yet_implemented, Toast.LENGTH_SHORT).show(); + return true; + } + + return super.onOptionsItemSelected(item); } /** @@ -186,4 +224,13 @@ public class MainActivity extends AppCompatActivity { Log.d(TAG, "Display Flat Image!"); } + public int getStatusBarHeight() { + int result = 0; + int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); + if (resourceId > 0) { + result = getResources().getDimensionPixelSize(resourceId); + } + return result; + } + } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 782bb0d..19819dc 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,11 +1,37 @@ - + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-v19/styles.xml b/app/src/main/res/values-v19/styles.xml new file mode 100644 index 0000000..32f6420 --- /dev/null +++ b/app/src/main/res/values-v19/styles.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c818c5d..fefa961 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -4,4 +4,6 @@ File not found. An Error has occurred: IOError. WOW! SUCH 3D!!! + Show as Sphere + Not yet implemented! diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index b60e4d3..fcc851f 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -1,8 +1,22 @@ - + + + + +