Index: remoting/android/java/src/org/chromium/chromoting/Chromoting.java |
diff --git a/remoting/android/java/src/org/chromium/chromoting/Chromoting.java b/remoting/android/java/src/org/chromium/chromoting/Chromoting.java |
index bf7dd02a4779ee9e7a8cdc0b96096a5a56c4975f..5dce18edfab8fe237d6f24904968a27c5b34889f 100644 |
--- a/remoting/android/java/src/org/chromium/chromoting/Chromoting.java |
+++ b/remoting/android/java/src/org/chromium/chromoting/Chromoting.java |
@@ -11,12 +11,15 @@ import android.content.DialogInterface; |
import android.content.Intent; |
import android.content.SharedPreferences; |
import android.content.res.Configuration; |
+import android.graphics.drawable.Drawable; |
import android.os.Bundle; |
import android.provider.Settings; |
+import android.support.v4.graphics.drawable.DrawableCompat; |
import android.support.v4.widget.DrawerLayout; |
import android.support.v7.app.ActionBarDrawerToggle; |
import android.support.v7.app.AppCompatActivity; |
import android.support.v7.widget.Toolbar; |
+import android.view.Gravity; |
import android.view.Menu; |
import android.view.MenuItem; |
import android.view.View; |
@@ -26,6 +29,7 @@ import android.widget.LinearLayout; |
import android.widget.ListView; |
import android.widget.Toast; |
+import org.chromium.base.ApiCompatibilityUtils; |
import org.chromium.base.Log; |
import org.chromium.chromoting.accountswitcher.AccountSwitcher; |
import org.chromium.chromoting.accountswitcher.AccountSwitcherFactory; |
@@ -185,10 +189,44 @@ public class Chromoting extends AppCompatActivity implements JniInterface.Connec |
findViewById(R.id.host_setup_link_android).setOnClickListener(this); |
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); |
- mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, |
+ mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, |
R.string.open_navigation_drawer, R.string.close_navigation_drawer); |
mDrawerLayout.setDrawerListener(mDrawerToggle); |
+ // Disable the hamburger icon animation. This is more complex than it ought to be. |
+ // The animation can be customized by tweaking some style parameters - see |
+ // http://developer.android.com/reference/android/support/v7/appcompat/R.styleable.html#DrawerArrowToggle . |
+ // But these can't disable the animation completely. |
+ // The icon can only be changed by disabling the drawer indicator, which has side-effects |
+ // that must be worked around. It disables the built-in click listener, so this has to be |
+ // implemented and added. This also requires that the toolbar be passed to the |
+ // ActionBarDrawerToggle ctor above (otherwise the listener is ignored and warnings are |
+ // logged). |
+ // Also, the animation itself is a private implementation detail - it is not possible to |
+ // simply access the first frame of the animation. And the hamburger menu icon doesn't |
+ // exist as a builtin Android resource, so it has to be provided as an application |
+ // resource instead (R.drawable.ic_menu). And, on Lollipop devices and above, it should be |
+ // tinted to match the colorControlNormal theme attribute. |
+ mDrawerToggle.setDrawerIndicatorEnabled(false); |
+ mDrawerToggle.setToolbarNavigationClickListener( |
+ new View.OnClickListener() { |
+ @Override |
+ public void onClick(View view) { |
+ if (mDrawerLayout.isDrawerOpen(Gravity.START)) { |
+ mDrawerLayout.closeDrawer(Gravity.START); |
+ } else { |
+ mDrawerLayout.openDrawer(Gravity.START); |
+ } |
+ } |
+ }); |
+ |
+ // Set the three-line icon instead of the default which is a tinted arrow icon. |
+ getSupportActionBar().setDisplayHomeAsUpEnabled(true); |
+ Drawable menuIcon = ApiCompatibilityUtils.getDrawable(getResources(), R.drawable.ic_menu); |
+ DrawableCompat.setTint(menuIcon.mutate(), |
+ ChromotingUtil.getColorAttribute(this, R.attr.colorControlNormal)); |
+ getSupportActionBar().setHomeAsUpIndicator(menuIcon); |
+ |
ListView navigationMenu = new ListView(this); |
navigationMenu.setChoiceMode(ListView.CHOICE_MODE_SINGLE); |
navigationMenu.setLayoutParams(new LinearLayout.LayoutParams( |
@@ -211,9 +249,6 @@ public class Chromoting extends AppCompatActivity implements JniInterface.Connec |
} |
}); |
- // Make the navigation drawer icon visible in the ActionBar. |
- getSupportActionBar().setDisplayHomeAsUpEnabled(true); |
- |
mAccountSwitcher = AccountSwitcherFactory.getInstance().createAccountSwitcher(this, this); |
mAccountSwitcher.setNavigation(navigationMenu); |
LinearLayout navigationDrawer = (LinearLayout) findViewById(R.id.navigation_drawer); |