aboutsummaryrefslogtreecommitdiff
path: root/ui/views
diff options
context:
space:
mode:
authorTiem Song <tiem@google.com>2018-01-09 13:22:50 -0800
committerTiem Song <tiem@google.com>2018-01-12 13:39:27 -0800
commit92fd7ba084f04cca400c28b86b78f0dc7f50584e (patch)
tree129c449db43a36256f51e4f854b39a671121decf /ui/views
parentec550d462ec2a795fee204250f9205166e04a215 (diff)
downloadandroid-92fd7ba084f04cca400c28b86b78f0dc7f50584e.tar.gz
Create Kotlin version of NavigationDrawer sample.
Bug: 64766094 Test: manual Change-Id: I0b8f76dc05fa6b2124909f058e37707f03c51995
Diffstat (limited to 'ui/views')
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/.google/packaging.yaml15
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/build.gradle35
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/AndroidManifest.xml41
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/MainActivity.kt76
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/NavigationDrawerActivity.kt194
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/PlanetAdapter.kt58
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/PlanetFragment.kt58
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/Sample.kt21
-rwxr-xr-xui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-hdpi/action_search.pngbin0 -> 1764 bytes
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-hdpi/drawer_shadow.9.pngbin0 -> 171 bytes
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-hdpi/ic_drawer.pngbin0 -> 2842 bytes
-rwxr-xr-xui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-hdpi/ic_launcher.pngbin0 -> 3860 bytes
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-hdpi/tile.9.pngbin0 -> 196 bytes
-rwxr-xr-xui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-mdpi/action_search.pngbin0 -> 1394 bytes
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-mdpi/drawer_shadow.9.pngbin0 -> 158 bytes
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-mdpi/ic_drawer.pngbin0 -> 2837 bytes
-rwxr-xr-xui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-mdpi/ic_launcher.pngbin0 -> 2378 bytes
-rwxr-xr-xui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-xhdpi/action_search.pngbin0 -> 2127 bytes
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-xhdpi/drawer_shadow.9.pngbin0 -> 182 bytes
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-xhdpi/ic_drawer.pngbin0 -> 1056 bytes
-rwxr-xr-xui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-xhdpi/ic_launcher.pngbin0 -> 5525 bytes
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-xxhdpi/ic_launcher.pngbin0 -> 11040 bytes
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/earth.jpgbin0 -> 98592 bytes
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/jupiter.jpgbin0 -> 32610 bytes
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/mars.jpgbin0 -> 144054 bytes
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/mercury.jpgbin0 -> 81442 bytes
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/neptune.jpgbin0 -> 32548 bytes
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/saturn.jpgbin0 -> 21019 bytes
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/uranus.jpgbin0 -> 13956 bytes
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/venus.jpgbin0 -> 12409 bytes
-rwxr-xr-xui/views/NavigationDrawer/kotlinApp/Application/src/main/res/layout/activity_main.xml42
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/layout/activity_navigation_drawer.xml52
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/layout/drawer_list_item.xml28
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/layout/fragment_planet.xml26
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/layout/sample_dashboard_item.xml50
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/menu/navigation_drawer.xml25
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values-v20/styles.xml20
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values-v21/base-template-styles.xml20
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values/activitycards-colors.xml22
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values/activitycards-dimens.xml21
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values/activitycards-strings.xml24
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values/colors.xml20
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values/dimens.xml22
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values/strings.xml43
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values/template-dimens.xml33
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values/template-styles.xml77
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/CONTRIB.md35
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/README.md50
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/build.gradle29
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/gradle/wrapper/gradle-wrapper.jarbin0 -> 49896 bytes
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/gradle/wrapper/gradle-wrapper.properties6
-rwxr-xr-xui/views/NavigationDrawer/kotlinApp/gradlew164
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/gradlew.bat90
-rw-r--r--ui/views/NavigationDrawer/kotlinApp/settings.gradle1
54 files changed, 1398 insertions, 0 deletions
diff --git a/ui/views/NavigationDrawer/kotlinApp/.google/packaging.yaml b/ui/views/NavigationDrawer/kotlinApp/.google/packaging.yaml
new file mode 100644
index 00000000..d85e3672
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/.google/packaging.yaml
@@ -0,0 +1,15 @@
+# GOOGLE SAMPLE PACKAGING DATA
+#
+# This file is used by Google as part of our samples packaging process.
+# End users may safely ignore this file. It has no relevance to other systems.
+---
+
+status: PUBLISHED
+technologies: [Android]
+categories: [UI]
+languages: [Kotlin]
+solutions: [Mobile]
+github: googlesamples/android-Navigation Drawer
+level: BEGINNER
+icon: Navigation DrawerSample/src/main/res/drawable-xxhdpi/ic_launcher.png
+license: apache2
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/build.gradle b/ui/views/NavigationDrawer/kotlinApp/Application/build.gradle
new file mode 100644
index 00000000..36d1ab8c
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/build.gradle
@@ -0,0 +1,35 @@
+apply plugin: 'com.android.application'
+apply plugin: 'kotlin-android'
+apply plugin: 'kotlin-android-extensions'
+
+android {
+ compileSdkVersion rootProject.ext.compileSdkVersion
+ defaultConfig {
+ applicationId "com.example.android.navigationdrawer"
+ minSdkVersion rootProject.ext.minSdkVersion
+ targetSdkVersion rootProject.ext.targetSdkVersion
+ versionCode 1
+ versionName "1.0"
+ }
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+ }
+ }
+ sourceSets {
+ main {
+ java.srcDirs "src/main/java"
+ res.srcDirs "src/main/res"
+ }
+ androidTest.setRoot('tests')
+ androidTest.java.srcDirs = ['tests/src']
+ }
+}
+
+dependencies {
+ implementation "com.android.support:appcompat-v7:$rootProject.ext.supportLibVersion"
+ implementation "com.android.support:cardview-v7:$rootProject.ext.supportLibVersion"
+ implementation "com.android.support:recyclerview-v7:$rootProject.supportLibVersion"
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$rootProject.ext.kotlinVersion"
+} \ No newline at end of file
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/AndroidManifest.xml b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..53119647
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/AndroidManifest.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2018 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.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.example.android.navigationdrawer">
+
+ <application
+ android:allowBackup="false"
+ android:icon="@drawable/ic_launcher"
+ android:label="@string/app_name"
+ android:theme="@style/AppTheme" >
+ <activity
+ android:name=".MainActivity"
+ android:label="@string/app_name" >
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ <activity
+ android:name=".NavigationDrawerActivity"
+ android:label="@string/app_name" >
+ </activity>
+ </application>
+
+</manifest>
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/MainActivity.kt b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/MainActivity.kt
new file mode 100644
index 00000000..97a65242
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/MainActivity.kt
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2018 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.navigationdrawer
+
+import android.app.Activity
+import android.content.Intent
+import android.os.Bundle
+import android.view.View
+import android.view.ViewGroup
+import android.widget.AdapterView
+import android.widget.BaseAdapter
+import android.widget.GridView
+import android.widget.TextView
+
+/**
+ * A simple launcher activity offering access to the individual samples in this project.
+ */
+class MainActivity : Activity(), AdapterView.OnItemClickListener {
+
+ private lateinit var samples: Array<Sample>
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_main)
+
+ // Prepare list of samples in this dashboard.
+ samples = arrayOf(Sample(R.string.navigationdraweractivity_title,
+ R.string.navigationdraweractivity_description,
+ Intent(this, NavigationDrawerActivity::class.java)))
+
+ // Prepare the GridView.
+ findViewById<GridView>(android.R.id.list).run {
+ adapter = SampleAdapter()
+ onItemClickListener = this@MainActivity
+ }
+ }
+
+ override fun onItemClick(container: AdapterView<*>, view: View, position: Int, id: Long) {
+ startActivity(samples[position].intent)
+ }
+
+ private inner class SampleAdapter : BaseAdapter() {
+
+ override fun getCount() = samples.size
+
+ override fun getItem(position: Int) = samples[position]
+
+ override fun getItemId(position: Int) = samples[position].hashCode().toLong()
+
+ override fun getView(position: Int, convertView: View?, container: ViewGroup): View {
+ return (convertView ?: layoutInflater.inflate(R.layout.sample_dashboard_item,
+ container, false)).apply {
+ findViewById<TextView>(android.R.id.text1)?.setText(
+ samples[position].titleResId)
+ findViewById<TextView>(android.R.id.text2)?.setText(
+ samples[position].descriptionResId)
+ }
+ }
+
+ }
+
+}
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/NavigationDrawerActivity.kt b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/NavigationDrawerActivity.kt
new file mode 100644
index 00000000..56f8d5ab
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/NavigationDrawerActivity.kt
@@ -0,0 +1,194 @@
+/*
+ * Copyright (C) 2018 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.navigationdrawer
+
+import android.annotation.SuppressLint
+import android.app.Activity
+import android.app.SearchManager
+import android.content.Intent
+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.ActionBarDrawerToggle
+import android.support.v7.widget.RecyclerView
+import android.view.Menu
+import android.view.MenuItem
+import android.view.View
+import android.widget.Toast
+
+/**
+ * This example illustrates a common usage of [DrawerLayout] in the Android support library.
+ *
+ * When a navigation (left) drawer is present, the host activity should detect presses of
+ * the action bar's Up affordance as a signal to open and close the navigation drawer. The
+ * ActionBarDrawerToggle facilitates this behavior.
+ * Items within the drawer should fall into one of two categories:
+ *
+ * * **View switches**. A view switch follows the same basic policies as
+ * list or tab navigation in that a view switch does not create navigation history.
+ * This pattern should only be used at the root activity of a task, leaving some form
+ * of Up navigation active for activities further down the navigation hierarchy.
+ *
+ * * **Selective Up**. The drawer allows the user to choose an alternate
+ * parent for Up navigation. This allows a user to jump across an app's navigation
+ * hierarchy at will. The application should treat this as it treats Up navigation from
+ * a different task, replacing the current task stack using TaskStackBuilder or similar.
+ * This is the only form of navigation drawer that should be used outside of the root
+ * activity of a task.
+ *
+ * Right side drawers should be used for actions, not navigation. This follows the pattern
+ * established by the Action Bar that navigation should be to the left and actions to the right.
+ * An action should be an operation performed on the current contents of the window,
+ * for example enabling or disabling a data overlay on top of the current content.
+ */
+class NavigationDrawerActivity : Activity(), PlanetAdapter.OnItemClickListener {
+
+ private lateinit var drawerLayout: DrawerLayout
+ private lateinit var drawerList: RecyclerView
+ private lateinit var drawerToggle: ActionBarDrawerToggle
+ private lateinit var newTitle: CharSequence
+ private lateinit var planetTitles: Array<String>
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_navigation_drawer)
+
+ val drawerTitle = title
+ newTitle = title
+ planetTitles = resources.getStringArray(R.array.planets_array)
+ drawerLayout = findViewById<DrawerLayout>(R.id.drawer_layout).apply {
+ setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START)
+ }
+
+ drawerList = findViewById<RecyclerView>(R.id.left_drawer).apply {
+ // Improve performance by indicating the list if fixed size.
+ setHasFixedSize(true)
+ // Set up the drawer's list view with items and click listener.
+ adapter = PlanetAdapter(planetTitles, this@NavigationDrawerActivity)
+ }
+
+ // Enable ActionBar app icon to behave as action to toggle nav drawer.
+ actionBar.run {
+ setDisplayHomeAsUpEnabled(true)
+ setHomeButtonEnabled(true)
+ }
+
+ // ActionBarDrawerToggle ties together the the proper interactions
+ // between the sliding drawer and the action bar app icon.
+ drawerToggle = object : ActionBarDrawerToggle(
+ this, /* Host Activity */
+ drawerLayout, /* DrawerLayout object */
+ R.string.drawer_open, /* "Open drawer" description for accessibility */
+ R.string.drawer_close /* "Close drawer" description for accessibility */
+ ) {
+
+ override fun onDrawerClosed(drawerView: View) {
+ actionBar.title = newTitle
+ invalidateOptionsMenu() // Creates call to onPrepareOptionsMenu().
+ }
+
+ override fun onDrawerOpened(drawerView: View) {
+ actionBar.title = drawerTitle
+ invalidateOptionsMenu() // Creates call to onPrepareOptionsMenu().
+ }
+ }
+
+ // Set a custom shadow that overlays the main content when the drawer opens.
+ drawerLayout.addDrawerListener(drawerToggle)
+
+ if (savedInstanceState == null) selectItem(0)
+ }
+
+
+ override fun onCreateOptionsMenu(menu: Menu): Boolean {
+ menuInflater.inflate(R.menu.navigation_drawer, menu)
+ return true
+ }
+
+ /**
+ * Called whenever we call [invalidateOptionsMenu].
+ * If the nav drawer is open, hide action items related to the content view.
+ */
+ override fun onPrepareOptionsMenu(menu: Menu) =
+ super.onPrepareOptionsMenu(menu.apply {
+ findItem(R.id.action_websearch).isVisible = !drawerLayout.isDrawerOpen(drawerList)
+ })
+
+ override fun onOptionsItemSelected(item: MenuItem): Boolean {
+ // The action bar home/up action should open or close the drawer.
+ // ActionBarDrawerToggle will take care of this.
+ if (drawerToggle.onOptionsItemSelected(item)) {
+ return true
+ }
+
+ // Handle action buttons
+ return when (item.itemId) {
+ R.id.action_websearch -> {
+ // Create intent to perform web search for this planet.
+ val intent = Intent(Intent.ACTION_WEB_SEARCH).apply {
+ putExtra(SearchManager.QUERY, actionBar.title)
+ }
+ // Catch event that there's no activity to handle intent.
+ if (intent.resolveActivity(packageManager) != null) {
+ startActivity(intent)
+ } else {
+ Toast.makeText(this, R.string.app_not_available, Toast.LENGTH_LONG).show()
+ }
+ true
+ }
+ else -> super.onOptionsItemSelected(item)
+ }
+ }
+
+ /* The click listener for RecyclerView in the navigation drawer. */
+ override fun onClick(view: View, position: Int) {
+ selectItem(position)
+ }
+
+ override fun setTitle(title: CharSequence) {
+ newTitle = title
+ actionBar.title = title
+ }
+
+ /**
+ * If [ActionBarDrawerToggle] is used, it must be called in [onPostCreate] and
+ * [onConfigurationChanged].
+ */
+ override fun onPostCreate(savedInstanceState: Bundle?) {
+ super.onPostCreate(savedInstanceState)
+ // Sync the toggle state after has occurred.
+ drawerToggle.syncState()
+ }
+
+ override fun onConfigurationChanged(newConfig: Configuration) {
+ super.onConfigurationChanged(newConfig)
+ // Pass any configuration change to the drawer toggle.
+ drawerToggle.onConfigurationChanged(newConfig)
+ }
+
+ @SuppressLint("CommitTransaction") // commit() is called
+ private fun selectItem(position: Int) {
+ fragmentManager.beginTransaction().run {
+ replace(R.id.content_frame, PlanetFragment.newInstance(position))
+ commit()
+ }
+ title = planetTitles[position]
+ drawerLayout.closeDrawer(drawerList)
+ }
+
+}
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/PlanetAdapter.kt b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/PlanetAdapter.kt
new file mode 100644
index 00000000..3ded2b16
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/PlanetAdapter.kt
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2018 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.navigationdrawer
+
+import android.support.v7.widget.RecyclerView
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+
+/**
+ * Adapter for the planet data used in our drawer menu.
+ */
+class PlanetAdapter(
+ private val dataset: Array<String>,
+ private val listener: OnItemClickListener
+) : RecyclerView.Adapter<PlanetAdapter.ViewHolder>() {
+
+ /**
+ * Interface for receiving click events from cells.
+ */
+ interface OnItemClickListener {
+ fun onClick(view: View, position: Int)
+ }
+
+ /**
+ * Custom [ViewHolder] for our planet views.
+ */
+ class ViewHolder(val textView: TextView) : RecyclerView.ViewHolder(textView)
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) =
+ ViewHolder(LayoutInflater.from(parent.context)
+ .inflate(R.layout.drawer_list_item, parent, false)
+ .findViewById(android.R.id.text1))
+
+ override fun onBindViewHolder(holder: ViewHolder, position: Int) {
+ holder.apply {
+ textView.text = dataset[position]
+ textView.setOnClickListener { view -> listener.onClick(view, position) }
+ }
+ }
+
+ override fun getItemCount() = dataset.size
+}
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/PlanetFragment.kt b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/PlanetFragment.kt
new file mode 100644
index 00000000..cd1c9379
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/PlanetFragment.kt
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2018 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.navigationdrawer
+
+import android.app.Fragment
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.ImageView
+
+import java.util.Locale
+
+/**
+ * Fragment that appears in the "content_frame" and shows a planet.
+ */
+class PlanetFragment : Fragment() {
+
+ override fun onCreateView(
+ inflater: LayoutInflater,
+ container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ val planetNumber = arguments.getInt(ARG_PLANET_NUMBER)
+ val planet = resources.getStringArray(R.array.planets_array)[planetNumber]
+ val imageId = resources.getIdentifier(planet.toLowerCase(Locale.getDefault()),
+ "drawable", activity.packageName)
+ activity.title = planet
+
+ return inflater.inflate(R.layout.fragment_planet, container, false).apply {
+ findViewById<ImageView>(R.id.image).setImageResource(imageId)
+ }
+ }
+
+ companion object {
+ private val ARG_PLANET_NUMBER = "planet_number"
+
+ fun newInstance(position: Int) = PlanetFragment().apply {
+ arguments = Bundle().apply {
+ putInt(ARG_PLANET_NUMBER, position)
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/Sample.kt b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/Sample.kt
new file mode 100644
index 00000000..0a13e985
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/Sample.kt
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2018 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.navigationdrawer
+
+import android.content.Intent
+
+class Sample(var titleResId: Int, var descriptionResId: Int, var intent: Intent)
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-hdpi/action_search.png b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-hdpi/action_search.png
new file mode 100755
index 00000000..f12e005e
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-hdpi/action_search.png
Binary files differ
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-hdpi/drawer_shadow.9.png b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-hdpi/drawer_shadow.9.png
new file mode 100644
index 00000000..224cc4ff
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-hdpi/drawer_shadow.9.png
Binary files differ
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-hdpi/ic_drawer.png b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-hdpi/ic_drawer.png
new file mode 100644
index 00000000..ff7b1def
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-hdpi/ic_drawer.png
Binary files differ
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-hdpi/ic_launcher.png b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-hdpi/ic_launcher.png
new file mode 100755
index 00000000..b460d602
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-hdpi/tile.9.png b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-hdpi/tile.9.png
new file mode 100644
index 00000000..13586288
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-hdpi/tile.9.png
Binary files differ
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-mdpi/action_search.png b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-mdpi/action_search.png
new file mode 100755
index 00000000..587d9e0b
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-mdpi/action_search.png
Binary files differ
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-mdpi/drawer_shadow.9.png b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-mdpi/drawer_shadow.9.png
new file mode 100644
index 00000000..3797f99c
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-mdpi/drawer_shadow.9.png
Binary files differ
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-mdpi/ic_drawer.png b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-mdpi/ic_drawer.png
new file mode 100644
index 00000000..fb681ba2
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-mdpi/ic_drawer.png
Binary files differ
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-mdpi/ic_launcher.png b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-mdpi/ic_launcher.png
new file mode 100755
index 00000000..dee53f40
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-xhdpi/action_search.png b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-xhdpi/action_search.png
new file mode 100755
index 00000000..3549f84d
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-xhdpi/action_search.png
Binary files differ
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-xhdpi/drawer_shadow.9.png b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-xhdpi/drawer_shadow.9.png
new file mode 100644
index 00000000..fa3d853e
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-xhdpi/drawer_shadow.9.png
Binary files differ
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-xhdpi/ic_drawer.png b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-xhdpi/ic_drawer.png
new file mode 100644
index 00000000..b9bc3d70
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-xhdpi/ic_drawer.png
Binary files differ
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-xhdpi/ic_launcher.png b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-xhdpi/ic_launcher.png
new file mode 100755
index 00000000..d4e12153
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-xxhdpi/ic_launcher.png b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-xxhdpi/ic_launcher.png
new file mode 100644
index 00000000..6ef21e1f
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/earth.jpg b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/earth.jpg
new file mode 100644
index 00000000..6cabbf4a
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/earth.jpg
Binary files differ
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/jupiter.jpg b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/jupiter.jpg
new file mode 100644
index 00000000..24e8eea3
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/jupiter.jpg
Binary files differ
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/mars.jpg b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/mars.jpg
new file mode 100644
index 00000000..db253ef5
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/mars.jpg
Binary files differ
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/mercury.jpg b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/mercury.jpg
new file mode 100644
index 00000000..531790b9
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/mercury.jpg
Binary files differ
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/neptune.jpg b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/neptune.jpg
new file mode 100644
index 00000000..88467c5f
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/neptune.jpg
Binary files differ
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/saturn.jpg b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/saturn.jpg
new file mode 100644
index 00000000..8219d187
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/saturn.jpg
Binary files differ
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/uranus.jpg b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/uranus.jpg
new file mode 100644
index 00000000..fa32e379
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/uranus.jpg
Binary files differ
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/venus.jpg b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/venus.jpg
new file mode 100644
index 00000000..e04f0789
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/venus.jpg
Binary files differ
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/layout/activity_main.xml b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/layout/activity_main.xml
new file mode 100755
index 00000000..b5d00b6c
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/layout/activity_main.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2018 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.
+ -->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+ <TextView style="@style/Widget.SampleMessage"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="@dimen/horizontal_page_margin"
+ android:layout_marginRight="@dimen/horizontal_page_margin"
+ android:layout_marginTop="@dimen/vertical_page_margin"
+ android:layout_marginBottom="@dimen/vertical_page_margin"
+ android:text="@string/intro_message" />
+
+ <GridView android:id="@android:id/list"
+ style="@style/Widget.SampleDashboard.Grid"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1"
+ android:paddingLeft="@dimen/horizontal_page_margin"
+ android:paddingRight="@dimen/horizontal_page_margin"
+ android:paddingBottom="@dimen/vertical_page_margin"
+ android:scrollbarStyle="outsideOverlay" />
+
+</LinearLayout>
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/layout/activity_navigation_drawer.xml b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/layout/activity_navigation_drawer.xml
new file mode 100644
index 00000000..2069035d
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/layout/activity_navigation_drawer.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2018 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 intended 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"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:id="@+id/drawer_layout"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ tools:openDrawer="start" >
+
+ <!-- As the main content view, the view below consumes the entire
+ space available using match_parent in both dimensions. -->
+ <FrameLayout
+ android:id="@+id/content_frame"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" />
+
+ <!-- android:layout_gravity="start" tells DrawerLayout to treat
+ this as a sliding drawer on the left side for left-to-right
+ languages and on the right side for right-to-left languages.
+ 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. -->
+ <android.support.v7.widget.RecyclerView
+ android:id="@+id/left_drawer"
+ android:scrollbars="vertical"
+ android:layout_width="@dimen/recycler_view_width"
+ android:layout_height="match_parent"
+ android:layout_gravity="start"
+ android:choiceMode="singleChoice"
+ android:divider="@null"
+ app:layoutManager="LinearLayoutManager"
+ />
+</android.support.v4.widget.DrawerLayout>
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/layout/drawer_list_item.xml b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/layout/drawer_list_item.xml
new file mode 100644
index 00000000..bb343a7a
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/layout/drawer_list_item.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2018 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.
+ -->
+
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@android:id/text1"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:textAppearance="?android:attr/textAppearanceListItemSmall"
+ android:gravity="center_vertical"
+ android:paddingLeft="@dimen/list_item_padding"
+ android:paddingRight="@dimen/list_item_padding"
+ android:textColor="@color/list_item_text_color"
+ android:background="?android:attr/activatedBackgroundIndicator"
+ android:minHeight="?android:attr/listPreferredItemHeightSmall"/>
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/layout/fragment_planet.xml b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/layout/fragment_planet.xml
new file mode 100644
index 00000000..dad1c8c0
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/layout/fragment_planet.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2018 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.
+ -->
+
+<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/image"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@android:color/black"
+ android:gravity="center"
+ android:padding="@dimen/fragment_imageview_padding"
+ android:contentDescription="@string/image_of_planet" />
+
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/layout/sample_dashboard_item.xml b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/layout/sample_dashboard_item.xml
new file mode 100644
index 00000000..a50dec82
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/layout/sample_dashboard_item.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2018 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.
+ -->
+
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+
+ <!-- The CardView needs to be wrapped to ensure spacing is applied correctly. -->
+ <android.support.v7.widget.CardView
+ style="@style/Widget.SampleDashboard.Card"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+
+ <LinearLayout
+ style="@style/Widget.SampleDashboard.Item"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical">
+
+ <TextView
+ android:id="@android:id/text1"
+ style="@style/Widget.SampleDashboard.Item.Title"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content" />
+
+ <TextView
+ android:id="@android:id/text2"
+ style="@style/Widget.SampleDashboard.Item.Description"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content" />
+
+ </LinearLayout>
+
+ </android.support.v7.widget.CardView>
+
+</FrameLayout>
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/menu/navigation_drawer.xml b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/menu/navigation_drawer.xml
new file mode 100644
index 00000000..0b8073cd
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/menu/navigation_drawer.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2018 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.
+ -->
+
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto">
+
+ <item android:id="@+id/action_websearch"
+ android:title="@string/action_websearch"
+ app:showAsAction="withText" />
+
+</menu> \ No newline at end of file
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values-v20/styles.xml b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values-v20/styles.xml
new file mode 100644
index 00000000..3ebee21b
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values-v20/styles.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2018 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.
+ -->
+
+<resources>
+ <style name="AppTheme" parent="android:Theme.Material.Light" />
+</resources> \ No newline at end of file
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values-v21/base-template-styles.xml b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values-v21/base-template-styles.xml
new file mode 100644
index 00000000..64366f81
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values-v21/base-template-styles.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2018 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.
+ -->
+
+<resources>
+ <style name="Theme.Base" parent="android:Theme.Material.Light" />
+</resources>
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values/activitycards-colors.xml b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values/activitycards-colors.xml
new file mode 100644
index 00000000..707a7a58
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values/activitycards-colors.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2018 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.
+ -->
+
+<resources>
+ <color name="teal">#009688</color>
+ <color name="black_87">#DD000000</color>
+ <color name="black_54">#89000000</color>
+</resources>
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values/activitycards-dimens.xml b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values/activitycards-dimens.xml
new file mode 100644
index 00000000..118ca768
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values/activitycards-dimens.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2018 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.
+ -->
+
+<resources>
+ <dimen name="card_padding">16dp</dimen>
+ <dimen name="card_margin">8dp</dimen>
+</resources> \ No newline at end of file
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values/activitycards-strings.xml b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values/activitycards-strings.xml
new file mode 100644
index 00000000..d89af25d
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values/activitycards-strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2018 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.
+ -->
+
+<resources>
+ <string name="navigationdraweractivity_title">Navigation Drawer Example</string>
+ <string name="navigationdraweractivity_description">
+ This example illustrates a common usage of the DrawerLayout widget in the Android support
+ library.
+ </string>
+</resources>
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values/colors.xml b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values/colors.xml
new file mode 100644
index 00000000..59e97064
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values/colors.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2018 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.
+ -->
+
+<resources>
+ <color name="list_item_text_color">#fff</color>
+</resources> \ No newline at end of file
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values/dimens.xml b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values/dimens.xml
new file mode 100644
index 00000000..e2252c67
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values/dimens.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2018 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.
+ -->
+
+<resources>
+ <dimen name="recycler_view_width">240dp</dimen>
+ <dimen name="list_item_padding">16dp</dimen>
+ <dimen name="fragment_imageview_padding">32dp</dimen>
+</resources> \ No newline at end of file
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values/strings.xml b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values/strings.xml
new file mode 100644
index 00000000..a1966244
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values/strings.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2018 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.
+ -->
+
+<resources>
+ <string name="app_name">Navigation Drawer</string>
+ <string name="intro_message">
+ <![CDATA[
+
+ This example illustrates a common usage of the DrawerLayout widget in the Android
+ support library.
+
+ ]]>
+ </string>
+ <string-array name="planets_array">
+ <item>Mercury</item>
+ <item>Venus</item>
+ <item>Earth</item>
+ <item>Mars</item>
+ <item>Jupiter</item>
+ <item>Saturn</item>
+ <item>Uranus</item>
+ <item>Neptune</item>
+ </string-array>
+ <string name="drawer_open">Open navigation drawer</string>
+ <string name="drawer_close">Close navigation drawer</string>
+ <string name="action_websearch">Web search</string>
+ <string name="app_not_available">Sorry, there\'s no web browser available</string>
+ <string name="image_of_planet">Image of planet</string>
+</resources>
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values/template-dimens.xml b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values/template-dimens.xml
new file mode 100644
index 00000000..03308092
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values/template-dimens.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2018 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.
+ -->
+
+<resources>
+
+ <!-- Define standard dimensions to comply with Holo-style grids and rhythm. -->
+
+ <dimen name="margin_tiny">4dp</dimen>
+ <dimen name="margin_small">8dp</dimen>
+ <dimen name="margin_medium">16dp</dimen>
+ <dimen name="margin_large">32dp</dimen>
+ <dimen name="margin_huge">64dp</dimen>
+
+ <!-- Semantic definitions -->
+
+ <dimen name="horizontal_page_margin">@dimen/margin_medium</dimen>
+ <dimen name="vertical_page_margin">@dimen/margin_medium</dimen>
+
+</resources>
diff --git a/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values/template-styles.xml b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values/template-styles.xml
new file mode 100644
index 00000000..ad1a2826
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/values/template-styles.xml
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2018 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.
+ -->
+
+<resources>
+
+ <!-- Activity themes -->
+
+ <style name="Theme.Base" parent="android:Theme.Holo.Light" />
+
+ <style name="Theme.Sample" parent="Theme.Base" />
+
+ <style name="AppTheme" parent="Theme.Sample" />
+ <!-- Widget styling -->
+
+ <style name="Widget" />
+
+ <style name="Widget.SampleContentContainer">
+ <item name="android:paddingTop">@dimen/vertical_page_margin</item>
+ <item name="android:paddingBottom">@dimen/vertical_page_margin</item>
+ <item name="android:paddingLeft">@dimen/horizontal_page_margin</item>
+ <item name="android:paddingRight">@dimen/horizontal_page_margin</item>
+ </style>
+
+<style name="Widget.SampleMessage">
+ <item name="android:textAppearance">?android:textAppearanceMedium</item>
+ <item name="android:lineSpacingMultiplier">1.1</item>
+ <item name="android:textColor">@color/black_54</item>
+ </style>
+
+ <style name="Widget.SampleDashboard.Grid" parent="Widget">
+ <item name="android:stretchMode">columnWidth</item>
+ <item name="android:columnWidth">200dp</item>
+ <item name="android:numColumns">auto_fit</item>
+ <item name="android:drawSelectorOnTop">true</item>
+ <item name="android:horizontalSpacing">0dp</item>
+ <item name="android:verticalSpacing">0dp</item>
+ </style>
+
+ <style name="Widget.SampleDashboard.Card" parent="Widget">
+ <item name="android:gravity">center</item>
+ <item name="android:layout_margin">@dimen/card_margin</item>
+ <item name="cardCornerRadius">4dp</item>
+ <item name="cardElevation">5dp</item>
+ <item name="contentPadding">@dimen/card_padding</item>
+ </style>
+
+ <style name="Widget.SampleDashboard.Item" parent="Widget">
+ </style>
+
+ <style name="Widget.SampleDashboard.Item.Title" parent="Widget">
+ <item name="android:layout_marginBottom">@dimen/margin_tiny</item>
+ <item name="android:textAppearance">?android:textAppearanceLarge</item>
+ <item name="android:textColor">@color/teal</item>
+ <item name="android:fontFamily">sans-serif</item>
+ <item name="android:textSize">24sp</item>
+ </style>
+
+ <style name="Widget.SampleDashboard.Item.Description" parent="Widget">
+ <item name="android:textAppearance">?android:textAppearanceSmall</item>
+ <item name="android:fontFamily">sans-serif-light</item>
+ <item name="android:textColor">@color/black_87</item>
+ </style>
+</resources>
diff --git a/ui/views/NavigationDrawer/kotlinApp/CONTRIB.md b/ui/views/NavigationDrawer/kotlinApp/CONTRIB.md
new file mode 100644
index 00000000..14a4fcff
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/CONTRIB.md
@@ -0,0 +1,35 @@
+# How to become a contributor and submit your own code
+
+## Contributor License Agreements
+
+We'd love to accept your sample apps and patches! Before we can take them, we
+have to jump a couple of legal hurdles.
+
+Please fill out either the individual or corporate Contributor License Agreement (CLA).
+
+ * If you are an individual writing original source code and you're sure you
+ own the intellectual property, then you'll need to sign an [individual CLA]
+ (https://developers.google.com/open-source/cla/individual).
+ * If you work for a company that wants to allow you to contribute your work,
+ then you'll need to sign a [corporate CLA]
+ (https://developers.google.com/open-source/cla/corporate).
+
+Follow either of the two links above to access the appropriate CLA and
+instructions for how to sign and return it. Once we receive it, we'll be able to
+accept your pull requests.
+
+## Contributing A Patch
+
+1. Submit an issue describing your proposed change to the repo in question.
+1. The repo owner will respond to your issue promptly.
+1. If your proposed change is accepted, and you haven't already done so, sign a
+ Contributor License Agreement (see details above).
+1. Fork the desired repo, develop and test your code changes.
+1. Ensure that your code adheres to the existing style in the sample to which
+ you are contributing. Refer to the
+ [Android Code Style Guide]
+ (https://source.android.com/source/code-style.html) for the
+ recommended coding standards for this organization.
+1. Ensure that your code has an appropriate set of unit tests which all pass.
+1. Submit a pull request.
+
diff --git a/ui/views/NavigationDrawer/kotlinApp/README.md b/ui/views/NavigationDrawer/kotlinApp/README.md
new file mode 100644
index 00000000..734fa264
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/README.md
@@ -0,0 +1,50 @@
+
+Android Navigation Drawer Sample (Kotlin)
+=========================================
+
+This example illustrates a common usage of the DrawerLayout widget in the Android
+support library.
+
+Pre-requisites
+--------------
+
+- Android SDK 27
+- Android Support Repository
+
+Getting Started
+---------------
+
+This sample uses the Gradle build system. To build this project, use the
+"gradlew build" command or use "Import Project" in Android Studio.
+
+Support
+-------
+
+- Google+ Community: https://plus.google.com/communities/105153134372062985968
+- Stack Overflow: http://stackoverflow.com/questions/tagged/android
+
+If you've found an error in this sample, please file an issue:
+https://github.com/googlesamples/android-NavigationDrawer
+
+Patches are encouraged, and may be submitted by forking this project and
+submitting a pull request through GitHub. Please see CONTRIBUTING.md for more details.
+
+License
+-------
+
+Copyright 2018 The Android Open Source Project, Inc.
+
+Licensed to the Apache Software Foundation (ASF) under one or more contributor
+license agreements. See the NOTICE file distributed with this work for
+additional information regarding copyright ownership. The ASF licenses this
+file to you 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.
diff --git a/ui/views/NavigationDrawer/kotlinApp/build.gradle b/ui/views/NavigationDrawer/kotlinApp/build.gradle
new file mode 100644
index 00000000..3b2073ba
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/build.gradle
@@ -0,0 +1,29 @@
+buildscript {
+ ext {
+ compileSdkVersion = 27
+ minSdkVersion = 21
+ targetSdkVersion = 27
+
+ kotlinVersion = '1.2.10'
+ supportLibVersion = '27.0.2'
+ }
+ repositories {
+ google()
+ jcenter()
+ }
+ dependencies {
+ classpath 'com.android.tools.build:gradle:3.0.1'
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ jcenter()
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+} \ No newline at end of file
diff --git a/ui/views/NavigationDrawer/kotlinApp/gradle/wrapper/gradle-wrapper.jar b/ui/views/NavigationDrawer/kotlinApp/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..8c0fb64a
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/ui/views/NavigationDrawer/kotlinApp/gradle/wrapper/gradle-wrapper.properties b/ui/views/NavigationDrawer/kotlinApp/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..bd46b793
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Tue Jan 09 12:45:11 PST 2018
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
diff --git a/ui/views/NavigationDrawer/kotlinApp/gradlew b/ui/views/NavigationDrawer/kotlinApp/gradlew
new file mode 100755
index 00000000..91a7e269
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/gradlew
@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+ echo "$*"
+}
+
+die ( ) {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+ [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >&-
+APP_HOME="`pwd -P`"
+cd "$SAVED" >&-
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+ JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/ui/views/NavigationDrawer/kotlinApp/gradlew.bat b/ui/views/NavigationDrawer/kotlinApp/gradlew.bat
new file mode 100644
index 00000000..8a0b282a
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/gradlew.bat
@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windowz variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+if "%@eval[2+2]" == "4" goto 4NT_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+goto execute
+
+:4NT_args
+@rem Get arguments from the 4NT Shell from JP Software
+set CMD_LINE_ARGS=%$
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/ui/views/NavigationDrawer/kotlinApp/settings.gradle b/ui/views/NavigationDrawer/kotlinApp/settings.gradle
new file mode 100644
index 00000000..9464a359
--- /dev/null
+++ b/ui/views/NavigationDrawer/kotlinApp/settings.gradle
@@ -0,0 +1 @@
+include 'Application'