Advertisement
Guest User

Untitled

a guest
Mar 26th, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.51 KB | None | 0 0
  1. <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:app="http://schemas.android.com/apk/res-auto"
  3. android:id="@+id/drawer"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent"
  6. android:fitsSystemWindows="true">
  7.  
  8. <android.support.design.widget.CoordinatorLayout
  9. android:id="@+id/main_content"
  10. android:layout_width="match_parent"
  11. android:layout_height="match_parent">
  12.  
  13. <android.support.design.widget.AppBarLayout
  14. android:id="@+id/appbar"
  15. android:layout_width="match_parent"
  16. android:layout_height="wrap_content"
  17. android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
  18.  
  19. <android.support.v7.widget.Toolbar
  20. android:id="@+id/toolbar"
  21. android:layout_width="match_parent"
  22. android:layout_height="?attr/actionBarSize"
  23. android:background="?attr/colorPrimary"
  24. app:layout_scrollFlags="scroll|enterAlways"
  25. app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
  26.  
  27. <android.support.design.widget.TabLayout
  28. android:id="@+id/tabs"
  29. android:layout_width="match_parent"
  30. android:layout_height="wrap_content"
  31. app:tabGravity="fill"
  32. app:tabMode="scrollable"
  33. app:tabTextAppearance="@style/TabTextAppearance"/>
  34. </android.support.design.widget.AppBarLayout>
  35. <android.support.v4.view.ViewPager
  36. android:id="@+id/viewpager"
  37. android:layout_width="match_parent"
  38. android:layout_height="match_parent"
  39. app:layout_behavior="@string/appbar_scrolling_view_behavior" />
  40.  
  41. </android.support.design.widget.CoordinatorLayout>
  42. <android.support.design.widget.NavigationView
  43. android:id="@+id/nav_view"
  44. android:layout_width="wrap_content"
  45. android:layout_height="match_parent"
  46. android:layout_gravity="start"
  47. android:fitsSystemWindows="true"
  48. app:headerLayout="@layout/navheader"
  49. app:menu="@menu/menu_navigation" />
  50. </android.support.v4.widget.DrawerLayout>
  51.  
  52. protected void onCreate(Bundle savedInstanceState) {
  53. super.onCreate(savedInstanceState);
  54. setContentView(R.layout.activity_main);
  55. // Adding Toolbar to Main screen
  56. mHandler = new Handler();
  57. Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
  58. setSupportActionBar(toolbar);
  59. // Setting ViewPager for each Tabs
  60. ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
  61. setupViewPager(viewPager);
  62. // Set Tabs inside Toolbar
  63. TabLayout tabs = (TabLayout) findViewById(R.id.tabs);
  64. tabs.setupWithViewPager(viewPager);
  65. // Create Navigation drawer and inlfate layout
  66. NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
  67. mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer);
  68. // Adding menu icon to Toolbar
  69. ActionBar supportActionBar = getSupportActionBar();
  70. if (supportActionBar != null) {
  71. VectorDrawableCompat indicator =
  72. VectorDrawableCompat.create(getResources(), R.drawable.ic_menu, getTheme());
  73. indicator.setTint(ResourcesCompat.getColor(getResources(), R.color.white, getTheme()));
  74. supportActionBar.setHomeAsUpIndicator(indicator);
  75. supportActionBar.setDisplayHomeAsUpEnabled(true);
  76. }
  77. // Set behavior of Navigation drawer
  78. navigationView.setNavigationItemSelectedListener(
  79. new NavigationView.OnNavigationItemSelectedListener() {
  80. // This method will trigger on item Click of navigation menu
  81.  
  82. // public boolean onNavigationItemSelected(MenuItem menuItem) {
  83. // // Set item in checked state
  84. // menuItem.setChecked(true);
  85. //
  86. // // TODO: handle navigation
  87. //
  88. // // Closing drawer on item click
  89. // mDrawerLayout.closeDrawers();
  90. // return true;
  91. // }
  92.  
  93.  
  94. @Override
  95. public boolean onNavigationItemSelected(MenuItem menuItem) {
  96.  
  97. //Check to see which item was being clicked and perform appropriate action
  98. switch (menuItem.getItemId()) {
  99. //Replacing the main content with ContentFragment Which is our Inbox View;
  100. case R.id.nav_home:
  101. navItemIndex = 0;
  102. CURRENT_TAG = TAG_HOME;
  103. break;
  104. case R.id.nav_history:
  105. navItemIndex = 1;
  106. CURRENT_TAG = TAG_HISTORY;
  107. break;
  108. case R.id.nav_location:
  109. navItemIndex = 2;
  110. CURRENT_TAG = TAG_LOCATION;
  111. break;
  112. case R.id.nav_developments:
  113. navItemIndex = 3;
  114. CURRENT_TAG = TAG_DEVELOPMENTS;
  115. break;
  116. case R.id.nav_donations:
  117. navItemIndex = 4;
  118. CURRENT_TAG = TAG_DONATIONS;
  119. break;
  120. case R.id.nav_resources:
  121. navItemIndex = 5;
  122. CURRENT_TAG = TAG_RESOURCES;
  123. break;
  124. case R.id.nav_feedback:
  125. navItemIndex = 6;
  126. CURRENT_TAG = TAG_FEEDBACK;
  127. break;
  128. case R.id.nav_contactus:
  129. navItemIndex = 7;
  130. CURRENT_TAG = TAG_CONTACTUS;
  131. break;
  132.  
  133. default:
  134. navItemIndex = 0;
  135. }
  136.  
  137. //Checking if the item is in checked state or not, if not make it in checked state
  138. if (menuItem.isChecked()) {
  139. menuItem.setChecked(false);
  140. } else {
  141. menuItem.setChecked(true);
  142. }
  143. menuItem.setChecked(true);
  144.  
  145. loadHomeFragment();
  146.  
  147. return true;
  148. }
  149. });
  150. // Adding Floating Action Button to bottom right of main view
  151.  
  152. }
  153.  
  154. private void loadHomeFragment() {
  155.  
  156. // if user select the current navigation menu again, don't do anything
  157. // just close the navigation drawer
  158. if (getSupportFragmentManager().findFragmentByTag(CURRENT_TAG) != null) {
  159. mDrawerLayout.closeDrawers();
  160.  
  161. // show or hide the fab button
  162.  
  163. return;
  164. }
  165.  
  166. // Sometimes, when fragment has huge data, screen seems hanging
  167. // when switching between navigation menus
  168. // So using runnable, the fragment is loaded with cross fade effect
  169. // This effect can be seen in GMail app
  170. Runnable mPendingRunnable = new Runnable() {
  171. @Override
  172. public void run() {
  173. // update the main content by replacing fragments
  174.  
  175.  
  176.  
  177. Fragment fragment = getHomeFragment();
  178. FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
  179.  
  180. fragmentTransaction.replace(R.id.viewpager, fragment, CURRENT_TAG);
  181. fragmentTransaction.commitAllowingStateLoss();
  182. }
  183. };
  184.  
  185. // If mPendingRunnable is not null, then add to the message queue
  186. if (mPendingRunnable != null) {
  187. mHandler.post(mPendingRunnable);
  188. }
  189.  
  190. // show or hide the fab button
  191.  
  192.  
  193. //Closing drawer on item click
  194. mDrawerLayout.closeDrawers();
  195.  
  196.  
  197. }
  198.  
  199.  
  200.  
  201. private Fragment getHomeFragment() {
  202. switch (navItemIndex) {
  203. case 0:
  204. // home
  205. one_main oneMain = new one_main();
  206. return oneMain;
  207. case 1:
  208. // photos
  209. one_fragment oneFragment = new one_fragment();
  210. return oneFragment;
  211. case 2:
  212. // movies fragment
  213. two_location twoLocation = new two_location();
  214. return twoLocation;
  215. case 3:
  216. // notifications fragment
  217. four_future fourFuture = new four_future();
  218. return fourFuture;
  219.  
  220. case 4:
  221. // settings fragment
  222. three_donation threeDonation = new three_donation();
  223. return threeDonation;
  224.  
  225. case 5:
  226. // movies fragment
  227. six_download sixDownload = new six_download();
  228. return sixDownload;
  229. case 6:
  230. // notifications fragment
  231. five_feedback fiveFeedback = new five_feedback();
  232. return fiveFeedback;
  233.  
  234. case 7:
  235. // settings fragment
  236. seven_contact sevenContact = new seven_contact();
  237. return sevenContact;
  238. default:
  239. return new one_main();
  240. }
  241. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement