First of all, a few screenshots:
Smartphone | Tablet |
---|---|
Collapsing Toolbar | Navigation Drawer |
---|---|
Support Design Library Views | Preferences |
---|---|
This is a State of the Art Android Material Design template. You can use this project as a template for upcoming App projects. Just clone the project, change package name and make all necessary customisations.
The focus of this project lies on the view layer and app navigation. It uses the following dependencies:
- AppCompat Support Library
- Support Design Library
- Support Card View Library
- Butterknife
- Glide
The template support every device with a SDK level of at least 14 (Android 4+).
Nothing special here. Please note that the version of the support library is extracted to gradle.properties:
compile "com.android.support:appcompat-v7:${android_support_lib_version}"
compile "com.android.support:design:${android_support_lib_version}"
compile "com.android.support:cardview-v7:${android_support_lib_version}"
compile 'com.github.bumptech.glide:glide:3.6.1'
compile 'com.jakewharton:butterknife:7.0.1'
There are only three Activities declared. The main theme is @style/Theme.Main.
The project contains three styles.xml.
- res/values/styles.xml (basic colors, styles)
- res/values-v21/styles.xml (contains Android 5 statusbar/systembar features)
- res/values-sw600dp-land/styles.xml (used for tablet layout)
You can easily change the colors of your app. You only have to set the color values in colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="theme_primary_accent">#8BC34A</color>
<color name="theme_primary_dark">#1976D2</color>
<color name="theme_primary_light">#2196F3</color>
<color name="theme_window_background">#FFF5F5F5</color>
<color name="theme_divider">#B6B6B6</color>
<color name="primary_text">#212121</color>
<color name="secondary_text">#727272</color>
</resources>
The navigation drawer is configured in menu/drawer_view.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_quotes"
android:icon="@drawable/ic_discuss"
android:title="@string/navigation_quotes" />
<item
android:id="@+id/nav_samples"
android:icon="@drawable/ic_forum"
android:title="@string/navigation_samples" />
...
BaseActivity is the parent class for every Activity inside this template. This class creates and provides the navigation drawer and toolbar.
BaseFragment is the parent for every Fragment class. It is responsible for view inflating and view binding (via ButterKnife).
The ListActivity is the start Activity and supports two differend layout modes:
- One pane mode: Used on devices with a small screen size. The Activity shows only a list of all available quotes.
- Two pane mode: Used on tablets and every device with a high screen size (>= 600dp width). The Activity shows the list of quotes and displays the selected item in a seperate Fragment.
The SettingsActivity represents some dummy preferences. You can easily configure your settings by modifying the settings_prefs.xml.
The ViewSamplesActivity shows some stuff from the Support Design Library.
Butterknife is not only used for view binding, furthermore it is also used for configuring click listeners:
@OnClick(R.id.fab)
public void onFabClicked(View view) {
// floating action button clicked
}
For example, the following snippet (ArticleDetailFragment.java) binds automatically the view:
@Bind(R.id.quote)
TextView quote;
@Bind(R.id.author)
TextView author;
@Bind(R.id.backdrop)
ImageView backdropImg;
@Bind(R.id.collapsing_toolbar)
CollapsingToolbarLayout collapsingToolbar;
My name is Andreas Schrade and I am a freelance software developer with an interest in Android and Java backend development.