1 /* 2 * Copyright (C) 2016 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package androidx.appcompat.app; 18 19 import android.view.View; 20 import android.widget.AdapterView; 21 import android.widget.ArrayAdapter; 22 import android.widget.ListView; 23 import android.widget.TextView; 24 25 import androidx.appcompat.test.R; 26 import androidx.appcompat.testutils.BaseTestActivity; 27 import androidx.appcompat.testutils.Shakespeare; 28 import androidx.appcompat.widget.Toolbar; 29 import androidx.core.view.GravityCompat; 30 import androidx.drawerlayout.widget.DrawerLayout; 31 32 /** 33 * Test activity for testing various APIs and interactions for DrawerLayout with start and end 34 * drawers. 35 */ 36 public class DrawerLayoutDoubleActivity extends BaseTestActivity { 37 private DrawerLayout mDrawerLayout; 38 private ListView mStartDrawer; 39 private View mEndDrawer; 40 private TextView mContent; 41 42 private Toolbar mToolbar; 43 44 @Override getContentViewLayoutResId()45 protected int getContentViewLayoutResId() { 46 return R.layout.drawer_double_layout; 47 } 48 49 @Override onContentViewSet()50 protected void onContentViewSet() { 51 super.onContentViewSet(); 52 53 mDrawerLayout = findViewById(R.id.drawer_layout); 54 mStartDrawer = findViewById(R.id.start_drawer); 55 mEndDrawer = findViewById(R.id.end_drawer); 56 mContent = findViewById(R.id.content_text); 57 58 mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); 59 60 // The drawer title must be set in order to announce state changes when 61 // accessibility is turned on. This is typically a simple description, 62 // e.g. "Navigation". 63 mDrawerLayout.setDrawerTitle(GravityCompat.START, getString(R.string.drawer_title)); 64 65 mStartDrawer.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, 66 Shakespeare.TITLES)); 67 mStartDrawer.setOnItemClickListener(new DrawerItemClickListener()); 68 69 // Find the toolbar in our layout and set it as the support action bar on the activity. 70 // This is required to have the drawer slide "over" the toolbar. 71 mToolbar = findViewById(R.id.toolbar); 72 mToolbar.setTitle(R.string.drawer_title); 73 setSupportActionBar(mToolbar); 74 75 getSupportActionBar().setDisplayHomeAsUpEnabled(true); 76 getSupportActionBar().setDisplayShowHomeEnabled(false); 77 78 // Configure the background color fill of the system status bar (on supported platform 79 // versions) and the toolbar itself. We're using the same color, and android:statusBar 80 // from the theme makes the status bar slightly darker. 81 final int metalBlueColor = getResources().getColor(R.color.drawer_sample_metal_blue); 82 mDrawerLayout.setStatusBarBackgroundColor(metalBlueColor); 83 mToolbar.setBackgroundColor(metalBlueColor); 84 } 85 86 @Override onBackPressed()87 public void onBackPressed() { 88 // Is the start drawer open? 89 if (mDrawerLayout.isDrawerOpen(mStartDrawer)) { 90 // Close the drawer and return. 91 mDrawerLayout.closeDrawer(mStartDrawer); 92 return; 93 } 94 95 // Is the end drawer open? 96 if (mDrawerLayout.isDrawerOpen(mEndDrawer)) { 97 // Close the drawer and return. 98 mDrawerLayout.closeDrawer(mEndDrawer); 99 return; 100 } 101 102 super.onBackPressed(); 103 } 104 105 /** 106 * This list item click listener implements very simple view switching by changing 107 * the primary content text. The drawer is closed when a selection is made. 108 */ 109 private class DrawerItemClickListener implements ListView.OnItemClickListener { 110 @Override onItemClick(AdapterView<?> parent, View view, int position, long id)111 public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 112 mContent.setText(Shakespeare.DIALOGUE[position]); 113 mToolbar.setTitle(Shakespeare.TITLES[position]); 114 mDrawerLayout.closeDrawer(mStartDrawer); 115 } 116 } 117 } 118