Merge "SupportV7 Navigation Bar Demo" into lmp-dev
This commit is contained in:
@@ -1,3 +1,18 @@
|
||||
/*
|
||||
* Copyright (C) 2014 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.example.android.supportv4;
|
||||
|
||||
public final class Shakespeare {
|
||||
|
||||
@@ -176,6 +176,16 @@
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<activity android:name=".app.ActionBarWithDrawerLayout"
|
||||
android:label="@string/action_bar_with_navigation_drawer"
|
||||
android:theme="@style/Theme.AppCompat"
|
||||
>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="com.example.android.supportv7.SAMPLE_CODE" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<!-- RecyclerView samples -->
|
||||
<activity android:name=".widget.RecyclerViewActivity"
|
||||
android:label="@string/recycler_view"
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (C) 2014 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<!--
|
||||
A DrawerLayout is indended to be used as the top-level content view
|
||||
using match_parent for both width and height to consume the full space available.
|
||||
-->
|
||||
<android.support.v4.widget.DrawerLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/drawer_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
<!-- As the main content view, the view below consumes the entire
|
||||
space available using match_parent in both dimensions. -->
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:scrollbarStyle="outsideOverlay">
|
||||
<TextView android:id="@+id/content_text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:text="@string/drawer_layout_summary"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium"/>
|
||||
</ScrollView>
|
||||
<!-- android:layout_gravity="start" tells DrawerLayout to treat
|
||||
this as a sliding drawer on the starting side, which is
|
||||
left for left-to-right locales. The drawer is given a fixed
|
||||
width in dp and extends the full height of the container. A
|
||||
solid background is used for contrast with the content view. -->
|
||||
<ListView android:id="@+id/start_drawer"
|
||||
android:layout_width="300dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="start"
|
||||
android:background="#ff333333"/>
|
||||
</android.support.v4.widget.DrawerLayout>
|
||||
@@ -54,6 +54,7 @@
|
||||
<string name="action_bar_tabs">AppCompat/Action Bar/Action Bar Tabs</string>
|
||||
<string name="action_bar_settings_action_provider">AppCompat/Action Bar/Settings Action Provider</string>
|
||||
<string name="action_bar_settings_action_provider_no_handling">Handling in onOptionsItemSelected avoided</string>
|
||||
<string name="action_bar_with_navigation_drawer">AppCompat/Action Bar/Navigation Drawer Toggle</string>
|
||||
|
||||
<string name="action_bar_search">Search</string>
|
||||
<string name="action_bar_add">Add</string>
|
||||
@@ -91,6 +92,36 @@
|
||||
<string name="action_bar_fragment_has_options_menu">Set has options menu to true</string>
|
||||
<string name="action_bar_fragment_menu_visibility">Set menu visibility to true</string>
|
||||
|
||||
<!-- actionbar w/ drawer layout -->
|
||||
<string name="drawer_layout_support">Widget/Drawer layout</string>
|
||||
|
||||
<string name="drawer_layout_summary">This activity illustrates the use of sliding drawers. The
|
||||
drawer may be pulled out from the starting edge, which is left on left-to-right locales,
|
||||
with an edge swipe. If this demo is running on Ice Cream Sandwich or newer you may tap the
|
||||
icon at the starting side of the action bar to open the drawer as well.
|
||||
</string>
|
||||
|
||||
<!-- Title of the navigation drawer, used by accessibility to announce state changes. -->
|
||||
<string name="drawer_title">Navigation</string>
|
||||
|
||||
<!-- Description of the icon that opens the navigation drawer, used by accessibility. -->
|
||||
<string name="drawer_open">Open navigation drawer</string>
|
||||
|
||||
<!-- Description of the icon that closes the navigation drawer, used by accessibility. -->
|
||||
<string name="drawer_close">Close navigation drawer</string>
|
||||
|
||||
<string name="sliding_pane_layout_support">Widget/Sliding pane layout</string>
|
||||
|
||||
<string name="sliding_pane_layout_summary">This activity illustrates the use of sliding panes.
|
||||
The content pane may be slid to one side on narrow devices to reveal the left pane used to
|
||||
select content. Sliding panes can be used to fit a UI intended for wider screens in a
|
||||
smaller space. Tapping the Action Bar\'s Up button at the left side of the bar will navigate
|
||||
up in the hierarchy, represented by the left pane. If you rotate the device to landscape
|
||||
mode, on most devices you will see that both panes fit together side by side with no sliding
|
||||
necessary.
|
||||
</string>
|
||||
|
||||
|
||||
<string name="sample_media_route_provider_remote">Remote Playback (Simulated)</string>
|
||||
<string name="sample_media_route_activity_local">Local Playback</string>
|
||||
<string name="sample_media_route_activity_presentation">Local Playback on Presentation Display</string>
|
||||
|
||||
@@ -0,0 +1,239 @@
|
||||
/*
|
||||
* Copyright (C) 2014 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.supportv7;
|
||||
|
||||
public final class Shakespeare {
|
||||
/**
|
||||
* Our data, part 1.
|
||||
*/
|
||||
public static final String[] TITLES =
|
||||
{
|
||||
"Henry IV (1)",
|
||||
"Henry V",
|
||||
"Henry VIII",
|
||||
"Richard II",
|
||||
"Richard III",
|
||||
"Merchant of Venice",
|
||||
"Othello",
|
||||
"King Lear"
|
||||
};
|
||||
|
||||
/**
|
||||
* Our data, part 2.
|
||||
*/
|
||||
public static final String[] DIALOGUE =
|
||||
{
|
||||
"So shaken as we are, so wan with care," +
|
||||
"Find we a time for frighted peace to pant," +
|
||||
"And breathe short-winded accents of new broils" +
|
||||
"To be commenced in strands afar remote." +
|
||||
"No more the thirsty entrance of this soil" +
|
||||
"Shall daub her lips with her own children's blood;" +
|
||||
"Nor more shall trenching war channel her fields," +
|
||||
"Nor bruise her flowerets with the armed hoofs" +
|
||||
"Of hostile paces: those opposed eyes," +
|
||||
"Which, like the meteors of a troubled heaven," +
|
||||
"All of one nature, of one substance bred," +
|
||||
"Did lately meet in the intestine shock" +
|
||||
"And furious close of civil butchery" +
|
||||
"Shall now, in mutual well-beseeming ranks," +
|
||||
"March all one way and be no more opposed" +
|
||||
"Against acquaintance, kindred and allies:" +
|
||||
"The edge of war, like an ill-sheathed knife," +
|
||||
"No more shall cut his master. Therefore, friends," +
|
||||
"As far as to the sepulchre of Christ," +
|
||||
"Whose soldier now, under whose blessed cross" +
|
||||
"We are impressed and engaged to fight," +
|
||||
"Forthwith a power of English shall we levy;" +
|
||||
"Whose arms were moulded in their mothers' womb" +
|
||||
"To chase these pagans in those holy fields" +
|
||||
"Over whose acres walk'd those blessed feet" +
|
||||
"Which fourteen hundred years ago were nail'd" +
|
||||
"For our advantage on the bitter cross." +
|
||||
"But this our purpose now is twelve month old," +
|
||||
"And bootless 'tis to tell you we will go:" +
|
||||
"Therefore we meet not now. Then let me hear" +
|
||||
"Of you, my gentle cousin Westmoreland," +
|
||||
"What yesternight our council did decree" +
|
||||
"In forwarding this dear expedience.",
|
||||
|
||||
"Hear him but reason in divinity," +
|
||||
"And all-admiring with an inward wish" +
|
||||
"You would desire the king were made a prelate:" +
|
||||
"Hear him debate of commonwealth affairs," +
|
||||
"You would say it hath been all in all his study:" +
|
||||
"List his discourse of war, and you shall hear" +
|
||||
"A fearful battle render'd you in music:" +
|
||||
"Turn him to any cause of policy," +
|
||||
"The Gordian knot of it he will unloose," +
|
||||
"Familiar as his garter: that, when he speaks," +
|
||||
"The air, a charter'd libertine, is still," +
|
||||
"And the mute wonder lurketh in men's ears," +
|
||||
"To steal his sweet and honey'd sentences;" +
|
||||
"So that the art and practic part of life" +
|
||||
"Must be the mistress to this theoric:" +
|
||||
"Which is a wonder how his grace should glean it," +
|
||||
"Since his addiction was to courses vain," +
|
||||
"His companies unletter'd, rude and shallow," +
|
||||
"His hours fill'd up with riots, banquets, sports," +
|
||||
"And never noted in him any study," +
|
||||
"Any retirement, any sequestration" +
|
||||
"From open haunts and popularity.",
|
||||
|
||||
"I come no more to make you laugh: things now," +
|
||||
"That bear a weighty and a serious brow," +
|
||||
"Sad, high, and working, full of state and woe," +
|
||||
"Such noble scenes as draw the eye to flow," +
|
||||
"We now present. Those that can pity, here" +
|
||||
"May, if they think it well, let fall a tear;" +
|
||||
"The subject will deserve it. Such as give" +
|
||||
"Their money out of hope they may believe," +
|
||||
"May here find truth too. Those that come to see" +
|
||||
"Only a show or two, and so agree" +
|
||||
"The play may pass, if they be still and willing," +
|
||||
"I'll undertake may see away their shilling" +
|
||||
"Richly in two short hours. Only they" +
|
||||
"That come to hear a merry bawdy play," +
|
||||
"A noise of targets, or to see a fellow" +
|
||||
"In a long motley coat guarded with yellow," +
|
||||
"Will be deceived; for, gentle hearers, know," +
|
||||
"To rank our chosen truth with such a show" +
|
||||
"As fool and fight is, beside forfeiting" +
|
||||
"Our own brains, and the opinion that we bring," +
|
||||
"To make that only true we now intend," +
|
||||
"Will leave us never an understanding friend." +
|
||||
"Therefore, for goodness' sake, and as you are known" +
|
||||
"The first and happiest hearers of the town," +
|
||||
"Be sad, as we would make ye: think ye see" +
|
||||
"The very persons of our noble story" +
|
||||
"As they were living; think you see them great," +
|
||||
"And follow'd with the general throng and sweat" +
|
||||
"Of thousand friends; then in a moment, see" +
|
||||
"How soon this mightiness meets misery:" +
|
||||
"And, if you can be merry then, I'll say" +
|
||||
"A man may weep upon his wedding-day.",
|
||||
|
||||
"First, heaven be the record to my speech!" +
|
||||
"In the devotion of a subject's love," +
|
||||
"Tendering the precious safety of my prince," +
|
||||
"And free from other misbegotten hate," +
|
||||
"Come I appellant to this princely presence." +
|
||||
"Now, Thomas Mowbray, do I turn to thee," +
|
||||
"And mark my greeting well; for what I speak" +
|
||||
"My body shall make good upon this earth," +
|
||||
"Or my divine soul answer it in heaven." +
|
||||
"Thou art a traitor and a miscreant," +
|
||||
"Too good to be so and too bad to live," +
|
||||
"Since the more fair and crystal is the sky," +
|
||||
"The uglier seem the clouds that in it fly." +
|
||||
"Once more, the more to aggravate the note," +
|
||||
"With a foul traitor's name stuff I thy throat;" +
|
||||
"And wish, so please my sovereign, ere I move," +
|
||||
"What my tongue speaks my right drawn sword may prove.",
|
||||
|
||||
"Now is the winter of our discontent" +
|
||||
"Made glorious summer by this sun of York;" +
|
||||
"And all the clouds that lour'd upon our house" +
|
||||
"In the deep bosom of the ocean buried." +
|
||||
"Now are our brows bound with victorious wreaths;" +
|
||||
"Our bruised arms hung up for monuments;" +
|
||||
"Our stern alarums changed to merry meetings," +
|
||||
"Our dreadful marches to delightful measures." +
|
||||
"Grim-visaged war hath smooth'd his wrinkled front;" +
|
||||
"And now, instead of mounting barded steeds" +
|
||||
"To fright the souls of fearful adversaries," +
|
||||
"He capers nimbly in a lady's chamber" +
|
||||
"To the lascivious pleasing of a lute." +
|
||||
"But I, that am not shaped for sportive tricks," +
|
||||
"Nor made to court an amorous looking-glass;" +
|
||||
"I, that am rudely stamp'd, and want love's majesty" +
|
||||
"To strut before a wanton ambling nymph;" +
|
||||
"I, that am curtail'd of this fair proportion," +
|
||||
"Cheated of feature by dissembling nature," +
|
||||
"Deformed, unfinish'd, sent before my time" +
|
||||
"Into this breathing world, scarce half made up," +
|
||||
"And that so lamely and unfashionable" +
|
||||
"That dogs bark at me as I halt by them;" +
|
||||
"Why, I, in this weak piping time of peace," +
|
||||
"Have no delight to pass away the time," +
|
||||
"Unless to spy my shadow in the sun" +
|
||||
"And descant on mine own deformity:" +
|
||||
"And therefore, since I cannot prove a lover," +
|
||||
"To entertain these fair well-spoken days," +
|
||||
"I am determined to prove a villain" +
|
||||
"And hate the idle pleasures of these days." +
|
||||
"Plots have I laid, inductions dangerous," +
|
||||
"By drunken prophecies, libels and dreams," +
|
||||
"To set my brother Clarence and the king" +
|
||||
"In deadly hate the one against the other:" +
|
||||
"And if King Edward be as true and just" +
|
||||
"As I am subtle, false and treacherous," +
|
||||
"This day should Clarence closely be mew'd up," +
|
||||
"About a prophecy, which says that 'G'" +
|
||||
"Of Edward's heirs the murderer shall be." +
|
||||
"Dive, thoughts, down to my soul: here" +
|
||||
"Clarence comes.",
|
||||
|
||||
"To bait fish withal: if it will feed nothing else," +
|
||||
"it will feed my revenge. He hath disgraced me, and" +
|
||||
"hindered me half a million; laughed at my losses," +
|
||||
"mocked at my gains, scorned my nation, thwarted my" +
|
||||
"bargains, cooled my friends, heated mine" +
|
||||
"enemies; and what's his reason? I am a Jew. Hath" +
|
||||
"not a Jew eyes? hath not a Jew hands, organs," +
|
||||
"dimensions, senses, affections, passions? fed with" +
|
||||
"the same food, hurt with the same weapons, subject" +
|
||||
"to the same diseases, healed by the same means," +
|
||||
"warmed and cooled by the same winter and summer, as" +
|
||||
"a Christian is? If you prick us, do we not bleed?" +
|
||||
"if you tickle us, do we not laugh? if you poison" +
|
||||
"us, do we not die? and if you wrong us, shall we not" +
|
||||
"revenge? If we are like you in the rest, we will" +
|
||||
"resemble you in that. If a Jew wrong a Christian," +
|
||||
"what is his humility? Revenge. If a Christian" +
|
||||
"wrong a Jew, what should his sufferance be by" +
|
||||
"Christian example? Why, revenge. The villany you" +
|
||||
"teach me, I will execute, and it shall go hard but I" +
|
||||
"will better the instruction.",
|
||||
|
||||
"Virtue! a fig! 'tis in ourselves that we are thus" +
|
||||
"or thus. Our bodies are our gardens, to the which" +
|
||||
"our wills are gardeners: so that if we will plant" +
|
||||
"nettles, or sow lettuce, set hyssop and weed up" +
|
||||
"thyme, supply it with one gender of herbs, or" +
|
||||
"distract it with many, either to have it sterile" +
|
||||
"with idleness, or manured with industry, why, the" +
|
||||
"power and corrigible authority of this lies in our" +
|
||||
"wills. If the balance of our lives had not one" +
|
||||
"scale of reason to poise another of sensuality, the" +
|
||||
"blood and baseness of our natures would conduct us" +
|
||||
"to most preposterous conclusions: but we have" +
|
||||
"reason to cool our raging motions, our carnal" +
|
||||
"stings, our unbitted lusts, whereof I take this that" +
|
||||
"you call love to be a sect or scion.",
|
||||
|
||||
"Blow, winds, and crack your cheeks! rage! blow!" +
|
||||
"You cataracts and hurricanoes, spout" +
|
||||
"Till you have drench'd our steeples, drown'd the cocks!" +
|
||||
"You sulphurous and thought-executing fires," +
|
||||
"Vaunt-couriers to oak-cleaving thunderbolts," +
|
||||
"Singe my white head! And thou, all-shaking thunder," +
|
||||
"Smite flat the thick rotundity o' the world!" +
|
||||
"Crack nature's moulds, an germens spill at once," +
|
||||
"That make ingrateful man!"
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,191 @@
|
||||
/*
|
||||
* Copyright (C) 2014 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.example.android.supportv7.app;
|
||||
|
||||
import com.example.android.supportv7.Shakespeare;
|
||||
|
||||
import android.support.v7.app.ActionBarActivity;
|
||||
import android.content.res.Configuration;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.view.GravityCompat;
|
||||
import android.support.v4.widget.DrawerLayout;
|
||||
import android.support.v7.app.ActionBar;
|
||||
import android.support.v7.app.ActionBarDrawerToggle;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.ListView;
|
||||
import android.widget.TextView;
|
||||
import com.example.android.supportv7.R;
|
||||
|
||||
public class ActionBarWithDrawerLayout extends ActionBarActivity {
|
||||
private DrawerLayout mDrawerLayout;
|
||||
private ListView mDrawer;
|
||||
private TextView mContent;
|
||||
|
||||
private ActionBarHelper mActionBar;
|
||||
|
||||
private ActionBarDrawerToggle mDrawerToggle;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.action_bar_drawer_layout);
|
||||
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
|
||||
mDrawer = (ListView) findViewById(R.id.start_drawer);
|
||||
mContent = (TextView) findViewById(R.id.content_text);
|
||||
|
||||
mDrawerLayout.setDrawerListener(new DemoDrawerListener());
|
||||
|
||||
// The drawer title must be set in order to announce state changes when
|
||||
// accessibility is turned on. This is typically a simple description,
|
||||
// e.g. "Navigation".
|
||||
mDrawerLayout.setDrawerTitle(GravityCompat.START, getString(R.string.drawer_title));
|
||||
|
||||
mDrawer.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,
|
||||
Shakespeare.TITLES));
|
||||
mDrawer.setOnItemClickListener(new DrawerItemClickListener());
|
||||
|
||||
mActionBar = createActionBarHelper();
|
||||
mActionBar.init();
|
||||
|
||||
// ActionBarDrawerToggle provides convenient helpers for tying together the
|
||||
// prescribed interactions between a top-level sliding drawer and the action bar.
|
||||
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
|
||||
R.string.drawer_open, R.string.drawer_close);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostCreate(Bundle savedInstanceState) {
|
||||
super.onPostCreate(savedInstanceState);
|
||||
|
||||
// Sync the toggle state after onRestoreInstanceState has occurred.
|
||||
mDrawerToggle.syncState();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
/*
|
||||
* The action bar home/up action should open or close the drawer.
|
||||
* mDrawerToggle will take care of this.
|
||||
*/
|
||||
if (mDrawerToggle.onOptionsItemSelected(item)) {
|
||||
return true;
|
||||
}
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConfigurationChanged(Configuration newConfig) {
|
||||
super.onConfigurationChanged(newConfig);
|
||||
mDrawerToggle.onConfigurationChanged(newConfig);
|
||||
}
|
||||
|
||||
/**
|
||||
* This list item click listener implements very simple view switching by changing
|
||||
* the primary content text. The drawer is closed when a selection is made.
|
||||
*/
|
||||
private class DrawerItemClickListener implements ListView.OnItemClickListener {
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
||||
mContent.setText(Shakespeare.DIALOGUE[position]);
|
||||
mActionBar.setTitle(Shakespeare.TITLES[position]);
|
||||
mDrawerLayout.closeDrawer(mDrawer);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A drawer listener can be used to respond to drawer events such as becoming
|
||||
* fully opened or closed. You should always prefer to perform expensive operations
|
||||
* such as drastic relayout when no animation is currently in progress, either before
|
||||
* or after the drawer animates.
|
||||
*
|
||||
* When using ActionBarDrawerToggle, all DrawerLayout listener methods should be forwarded
|
||||
* if the ActionBarDrawerToggle is not used as the DrawerLayout listener directly.
|
||||
*/
|
||||
private class DemoDrawerListener implements DrawerLayout.DrawerListener {
|
||||
@Override
|
||||
public void onDrawerOpened(View drawerView) {
|
||||
mDrawerToggle.onDrawerOpened(drawerView);
|
||||
mActionBar.onDrawerOpened();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDrawerClosed(View drawerView) {
|
||||
mDrawerToggle.onDrawerClosed(drawerView);
|
||||
mActionBar.onDrawerClosed();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDrawerSlide(View drawerView, float slideOffset) {
|
||||
mDrawerToggle.onDrawerSlide(drawerView, slideOffset);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDrawerStateChanged(int newState) {
|
||||
mDrawerToggle.onDrawerStateChanged(newState);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a compatible helper that will manipulate the action bar if available.
|
||||
*/
|
||||
private ActionBarHelper createActionBarHelper() {
|
||||
return new ActionBarHelper();
|
||||
}
|
||||
|
||||
/**
|
||||
* Action bar helper for use on ICS and newer devices.
|
||||
*/
|
||||
private class ActionBarHelper {
|
||||
private final ActionBar mActionBar;
|
||||
private CharSequence mDrawerTitle;
|
||||
private CharSequence mTitle;
|
||||
|
||||
ActionBarHelper() {
|
||||
mActionBar = getSupportActionBar();
|
||||
}
|
||||
|
||||
public void init() {
|
||||
mActionBar.setDisplayHomeAsUpEnabled(true);
|
||||
mActionBar.setDisplayShowHomeEnabled(false);
|
||||
mTitle = mDrawerTitle = getTitle();
|
||||
}
|
||||
|
||||
/**
|
||||
* When the drawer is closed we restore the action bar state reflecting
|
||||
* the specific contents in view.
|
||||
*/
|
||||
public void onDrawerClosed() {
|
||||
mActionBar.setTitle(mTitle);
|
||||
}
|
||||
|
||||
/**
|
||||
* When the drawer is open we set the action bar to a generic title.
|
||||
* The action bar should only contain data relevant at the top level of
|
||||
* the nav hierarchy represented by the drawer, as the rest of your content
|
||||
* will be dimmed down and non-interactive.
|
||||
*/
|
||||
public void onDrawerOpened() {
|
||||
mActionBar.setTitle(mDrawerTitle);
|
||||
}
|
||||
|
||||
public void setTitle(CharSequence title) {
|
||||
mTitle = title;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user