diff options
author | Tiem Song <tiem@google.com> | 2018-01-09 13:22:50 -0800 |
---|---|---|
committer | Tiem Song <tiem@google.com> | 2018-01-12 13:39:27 -0800 |
commit | 92fd7ba084f04cca400c28b86b78f0dc7f50584e (patch) | |
tree | 129c449db43a36256f51e4f854b39a671121decf /ui/views | |
parent | ec550d462ec2a795fee204250f9205166e04a215 (diff) | |
download | android-92fd7ba084f04cca400c28b86b78f0dc7f50584e.tar.gz |
Create Kotlin version of NavigationDrawer sample.
Bug: 64766094
Test: manual
Change-Id: I0b8f76dc05fa6b2124909f058e37707f03c51995
Diffstat (limited to 'ui/views')
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 Binary files differnew file mode 100755 index 00000000..f12e005e --- /dev/null +++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-hdpi/action_search.png 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 Binary files differnew file mode 100644 index 00000000..224cc4ff --- /dev/null +++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-hdpi/drawer_shadow.9.png 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 Binary files differnew file mode 100644 index 00000000..ff7b1def --- /dev/null +++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-hdpi/ic_drawer.png 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 Binary files differnew file mode 100755 index 00000000..b460d602 --- /dev/null +++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-hdpi/ic_launcher.png 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 Binary files differnew file mode 100644 index 00000000..13586288 --- /dev/null +++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-hdpi/tile.9.png 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 Binary files differnew file mode 100755 index 00000000..587d9e0b --- /dev/null +++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-mdpi/action_search.png 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 Binary files differnew file mode 100644 index 00000000..3797f99c --- /dev/null +++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-mdpi/drawer_shadow.9.png 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 Binary files differnew file mode 100644 index 00000000..fb681ba2 --- /dev/null +++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-mdpi/ic_drawer.png 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 Binary files differnew file mode 100755 index 00000000..dee53f40 --- /dev/null +++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-mdpi/ic_launcher.png 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 Binary files differnew file mode 100755 index 00000000..3549f84d --- /dev/null +++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-xhdpi/action_search.png 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 Binary files differnew file mode 100644 index 00000000..fa3d853e --- /dev/null +++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-xhdpi/drawer_shadow.9.png 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 Binary files differnew file mode 100644 index 00000000..b9bc3d70 --- /dev/null +++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-xhdpi/ic_drawer.png 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 Binary files differnew file mode 100755 index 00000000..d4e12153 --- /dev/null +++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-xhdpi/ic_launcher.png 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 Binary files differnew file mode 100644 index 00000000..6ef21e1f --- /dev/null +++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable-xxhdpi/ic_launcher.png 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 Binary files differnew file mode 100644 index 00000000..6cabbf4a --- /dev/null +++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/earth.jpg 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 Binary files differnew file mode 100644 index 00000000..24e8eea3 --- /dev/null +++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/jupiter.jpg 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 Binary files differnew file mode 100644 index 00000000..db253ef5 --- /dev/null +++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/mars.jpg 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 Binary files differnew file mode 100644 index 00000000..531790b9 --- /dev/null +++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/mercury.jpg 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 Binary files differnew file mode 100644 index 00000000..88467c5f --- /dev/null +++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/neptune.jpg 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 Binary files differnew file mode 100644 index 00000000..8219d187 --- /dev/null +++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/saturn.jpg 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 Binary files differnew file mode 100644 index 00000000..fa32e379 --- /dev/null +++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/uranus.jpg 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 Binary files differnew file mode 100644 index 00000000..e04f0789 --- /dev/null +++ b/ui/views/NavigationDrawer/kotlinApp/Application/src/main/res/drawable/venus.jpg 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 Binary files differnew file mode 100644 index 00000000..8c0fb64a --- /dev/null +++ b/ui/views/NavigationDrawer/kotlinApp/gradle/wrapper/gradle-wrapper.jar 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' |