diff --git a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/main/MainActivity.java b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/main/MainActivity.java index 5c3871290f4675c8f88ec0edf1a9d5598e9c68bc..e361178857cbfbf47c866894fe7108f8d3697976 100644 --- a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/main/MainActivity.java +++ b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/main/MainActivity.java @@ -42,7 +42,7 @@ public class MainActivity extends AppCompatActivity private ImageView imageView; private Comic currentComic; - private ImageButton favoriteButton; + private MenuItem favoriteButton; @Override protected void onCreate(Bundle savedInstanceState) { @@ -61,22 +61,13 @@ public class MainActivity extends AppCompatActivity NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); - - findViewById(R.id.favorite_button).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - favoriteButton.setClickable(false); - mainPresenter.saveComic(currentComic); - } - }); this.imageView = findViewById(R.id.imageView); - this.favoriteButton = findViewById(R.id.favorite_button); findViewById(R.id.next_button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - favoriteButton.setClickable(false); + favoriteButton.setCheckable(false); mainPresenter.getNext(); } }); @@ -84,7 +75,7 @@ public class MainActivity extends AppCompatActivity findViewById(R.id.previous_button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - favoriteButton.setClickable(false); + favoriteButton.setCheckable(false); mainPresenter.getPrevious(); } }); @@ -92,10 +83,37 @@ public class MainActivity extends AppCompatActivity findViewById(R.id.random_button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - favoriteButton.setClickable(false); + favoriteButton.setCheckable(false); mainPresenter.getRandom(); } }); + + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + // Inflate the menu; this adds items to the action bar if it is present. + + getMenuInflater().inflate(R.menu.main_menu, menu); + this.favoriteButton = menu.getItem(0); + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + // Handle action bar item clicks here. The action bar will + // automatically handle clicks on the Home/Up button, so long + // as you specify a parent activity in AndroidManifest.xml. + int id = item.getItemId(); + + //noinspection SimplifiableIfStatement + if (id == R.id.favorite_button) { + favoriteButton.setCheckable(false); + mainPresenter.saveComic(currentComic); + return true; + } + + return super.onOptionsItemSelected(item); } @Override @@ -168,6 +186,7 @@ public class MainActivity extends AppCompatActivity .setAction("Action", null).show(); } else { imageView.setImageBitmap(finalMIcon_val); + setTitle(c.getTitle()); } } }; @@ -181,7 +200,7 @@ public class MainActivity extends AppCompatActivity Runnable myRunnable = new Runnable() { @Override public void run() { - favoriteButton.setImageDrawable(getDrawable(R.drawable.ic_star)); + favoriteButton.setIcon(getDrawable(R.drawable.ic_star)); Snackbar.make(findViewById(android.R.id.content), "Saved!", Snackbar.LENGTH_SHORT) .setAction("Action", null).show(); } @@ -190,13 +209,23 @@ public class MainActivity extends AppCompatActivity } @Override - public void setFavorite(boolean exists) { + public void setFavorite(final boolean exists) { + + Handler mainHandler = new Handler(getApplicationContext().getMainLooper()); + + Runnable myRunnable = new Runnable() { + @Override + public void run() { + if (exists) { + favoriteButton.setIcon(getDrawable(R.drawable.ic_star)); + } else { + favoriteButton.setIcon(getDrawable(R.drawable.ic_star_border)); + favoriteButton.setCheckable(true); + } + } + }; + mainHandler.post(myRunnable); + - if (exists) { - favoriteButton.setImageDrawable(getDrawable(R.drawable.ic_star)); - } else { - favoriteButton.setImageDrawable(getDrawable(R.drawable.ic_star_border)); - favoriteButton.setClickable(true); - } } } diff --git a/app/src/main/res/layout/activity_detail.xml b/app/src/main/res/layout/activity_detail.xml index 84494634cb06eaaf6dab08dd69ecbc9f00bb667f..b0c06b3c5777eeb6a9f5a72552abb7cd5f1ad7eb 100644 --- a/app/src/main/res/layout/activity_detail.xml +++ b/app/src/main/res/layout/activity_detail.xml @@ -4,7 +4,8 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".ui.detail.DetailActivity"> + tools:context=".ui.detail.DetailActivity" + android:fitsSystemWindows="true"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" diff --git a/app/src/main/res/layout/app_bar_main.xml b/app/src/main/res/layout/app_bar_main.xml index 54bfacb0d575db66b22e5ad95a050aeec405c7e4..03f12f703b3190ce748d21aad33473415dc03aa3 100644 --- a/app/src/main/res/layout/app_bar_main.xml +++ b/app/src/main/res/layout/app_bar_main.xml @@ -14,30 +14,10 @@ <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" - android:layout_height="?attr/actionBarSize" + android:layout_height="wrap_content" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay"> - <LinearLayout - android:layout_width="match_parent" - android:layout_height="match_parent" - android:gravity="right" - android:orientation="vertical"> - - <ImageButton - android:id="@+id/favorite_button" - android:layout_width="50dp" - android:layout_height="wrap_content" - android:adjustViewBounds="false" - android:background="@null" - android:cropToPadding="false" - android:padding="10dp" - android:scaleType="centerInside" - app:srcCompat="@drawable/ic_star_border" - android:clickable="false"/> - - - </LinearLayout> </android.support.v7.widget.Toolbar> </android.support.design.widget.AppBarLayout> diff --git a/app/src/main/res/menu/main_menu.xml b/app/src/main/res/menu/main_menu.xml new file mode 100644 index 0000000000000000000000000000000000000000..2bdd84166ddd9eb9567dc8ff80662b9d6736932a --- /dev/null +++ b/app/src/main/res/menu/main_menu.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto"> + <item + android:id="@+id/favorite_button" + android:orderInCategory="100" + android:title="@string/action_settings" + android:icon="@drawable/ic_star_border" + app:showAsAction="ifRoom" /> +</menu> \ 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 7711ace014e281b735f9445e94ddb515bceec1ac..259fb49642461fa8f07f8c14f4552d2e731eca4c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -6,7 +6,7 @@ <string name="nav_header_title">Android Studio</string> <string name="nav_header_subtitle">android.studio@android.com</string> <string name="nav_header_desc">Navigation header</string> - <string name="action_settings">Settings</string> - <string name="title_activity_favorites">FavoritesActivity</string> - <string name="title_activity_detail">DetailActivity</string> + <string name="action_settings">Favorite</string> + <string name="title_activity_favorites">Favorites</string> + <string name="title_activity_detail">Detail</string> </resources> diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 545b9c6d2c45df7938f8ffd5ac2d806dec36f122..5e399fa2ef03d01365e9c9dff7940aec2c4ba97b 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -1,7 +1,7 @@ <resources> <!-- Base application theme. --> - <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> + <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item>