/*
* MIT License
*
* Copyright (c) 2017 Jan Heinrich Reimer
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package com.heinrichreimersoftware.materialintro.demo;
import android.Manifest;
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.Snackbar;
import android.view.Gravity;
import android.view.View;
import android.widget.Toast;
import com.heinrichreimersoftware.materialintro.app.IntroActivity;
import com.heinrichreimersoftware.materialintro.app.OnNavigationBlockedListener;
import com.heinrichreimersoftware.materialintro.slide.FragmentSlide;
import com.heinrichreimersoftware.materialintro.slide.SimpleSlide;
import com.heinrichreimersoftware.materialintro.slide.Slide;
public class MainIntroActivity extends IntroActivity {
public static final String EXTRA_FULLSCREEN = "com.heinrichreimersoftware.materialintro.demo.EXTRA_FULLSCREEN";
public static final String EXTRA_SCROLLABLE = "com.heinrichreimersoftware.materialintro.demo.EXTRA_SCROLLABLE";
public static final String EXTRA_CUSTOM_FRAGMENTS = "com.heinrichreimersoftware.materialintro.demo.EXTRA_CUSTOM_FRAGMENTS";
public static final String EXTRA_PERMISSIONS = "com.heinrichreimersoftware.materialintro.demo.EXTRA_PERMISSIONS";
public static final String EXTRA_SHOW_BACK = "com.heinrichreimersoftware.materialintro.demo.EXTRA_SHOW_BACK";
public static final String EXTRA_SHOW_NEXT = "com.heinrichreimersoftware.materialintro.demo.EXTRA_SHOW_NEXT";
public static final String EXTRA_SKIP_ENABLED = "com.heinrichreimersoftware.materialintro.demo.EXTRA_SKIP_ENABLED";
public static final String EXTRA_FINISH_ENABLED = "com.heinrichreimersoftware.materialintro.demo.EXTRA_FINISH_ENABLED";
public static final String EXTRA_GET_STARTED_ENABLED = "com.heinrichreimersoftware.materialintro.demo.EXTRA_GET_STARTED_ENABLED";
@Override
protected void onCreate(Bundle savedInstanceState) {
Intent intent = getIntent();
boolean fullscreen = intent.getBooleanExtra(EXTRA_FULLSCREEN, false);
boolean scrollable = intent.getBooleanExtra(EXTRA_SCROLLABLE, false);
boolean customFragments = intent.getBooleanExtra(EXTRA_CUSTOM_FRAGMENTS, true);
boolean permissions = intent.getBooleanExtra(EXTRA_PERMISSIONS, true);
boolean showBack = intent.getBooleanExtra(EXTRA_SHOW_BACK, true);
boolean showNext = intent.getBooleanExtra(EXTRA_SHOW_NEXT, true);
boolean skipEnabled = intent.getBooleanExtra(EXTRA_SKIP_ENABLED, true);
boolean finishEnabled = intent.getBooleanExtra(EXTRA_FINISH_ENABLED, true);
boolean getStartedEnabled = intent.getBooleanExtra(EXTRA_GET_STARTED_ENABLED, true);
setFullscreen(fullscreen);
super.onCreate(savedInstanceState);
setButtonBackFunction(skipEnabled ? BUTTON_BACK_FUNCTION_SKIP : BUTTON_BACK_FUNCTION_BACK);
setButtonNextFunction(
finishEnabled ? BUTTON_NEXT_FUNCTION_NEXT_FINISH : BUTTON_NEXT_FUNCTION_NEXT);
setButtonBackVisible(showBack);
setButtonNextVisible(showNext);
setButtonCtaVisible(getStartedEnabled);
setButtonCtaTintMode(BUTTON_CTA_TINT_MODE_TEXT);
addSlide(new SimpleSlide.Builder()
.title(R.string.title_material_metaphor)
.description(R.string.description_material_metaphor)
.image(R.drawable.art_material_metaphor)
.background(R.color.color_material_metaphor)
.backgroundDark(R.color.color_dark_material_metaphor)
.scrollable(scrollable)
.build());
addSlide(new SimpleSlide.Builder()
.title(R.string.title_material_bold)
.description(R.string.description_material_bold)
.image(R.drawable.art_material_bold)
.background(R.color.color_material_bold)
.backgroundDark(R.color.color_dark_material_bold)
.scrollable(scrollable)
.buttonCtaLabel("Hello")
.buttonCtaClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast toast = Toast
.makeText(MainIntroActivity.this, R.string.toast_button_cta, Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
nextSlide();
}
})
.build());
addSlide(new SimpleSlide.Builder()
.title(R.string.title_material_motion)
.description(R.string.description_material_motion)
.image(R.drawable.art_material_motion)
.background(R.color.color_material_motion)
.backgroundDark(R.color.color_dark_material_motion)
.scrollable(scrollable)
.build());
addSlide(new SimpleSlide.Builder()
.title(R.string.title_material_shadow)
.description(R.string.description_material_shadow)
.image(R.drawable.art_material_shadow)
.background(R.color.color_material_shadow)
.backgroundDark(R.color.color_dark_material_shadow)
.scrollable(scrollable)
.build());
final Slide permissionsSlide;
if (permissions) {
permissionsSlide = new SimpleSlide.Builder()
.title(R.string.title_permissions)
.description(R.string.description_permissions)
.background(R.color.color_permissions)
.backgroundDark(R.color.color_dark_permissions)
.scrollable(scrollable)
.permissions(new String[]{Manifest.permission.CAMERA,
Manifest.permission.WRITE_EXTERNAL_STORAGE})
.build();
addSlide(permissionsSlide);
} else {
permissionsSlide = null;
}
final Slide loginSlide;
if (customFragments) {
loginSlide = new FragmentSlide.Builder()
.background(R.color.color_custom_fragment_1)
.backgroundDark(R.color.color_dark_custom_fragment_1)
.fragment(LoginFragment.newInstance())
.build();
addSlide(loginSlide);
addSlide(new FragmentSlide.Builder()
.background(R.color.color_custom_fragment_2)
.backgroundDark(R.color.color_dark_custom_fragment_2)
.fragment(R.layout.fragment_custom, R.style.AppThemeDark)
.build());
} else {
loginSlide = null;
}
//Feel free to add a navigation policy to define when users can go forward/backward
/*
setNavigationPolicy(new NavigationPolicy() {
@Override
public boolean canGoForward(int position) {
return true;
}
@Override
public boolean canGoBackward(int position) {
return true;
}
});
*/
addOnNavigationBlockedListener(new OnNavigationBlockedListener() {
@Override
public void onNavigationBlocked(int position, int direction) {
View contentView = findViewById(android.R.id.content);
if (contentView != null) {
Slide slide = getSlide(position);
if (slide == permissionsSlide) {
Snackbar.make(contentView, R.string.label_grant_permissions, Snackbar.LENGTH_LONG)
.show();
} else if (slide == loginSlide) {
Snackbar.make(contentView, R.string.label_fill_out_form, Snackbar.LENGTH_LONG).show();
}
}
}
});
//Feel free to add and remove page change listeners
/*
addOnPageChangeListener(new ViewPager.OnPageChangeListener(){
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
*/
}
}