/*
* Copyright (C) 2016 Google Inc. All Rights Reserved.
*
* 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.google.android.apps.santatracker.presentquest.ui;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
import com.google.android.apps.santatracker.presentquest.R;
import com.google.android.apps.santatracker.util.FontHelper;
/**
* View that contains the onboarding slides.
*/
public class OnboardingView extends FrameLayout {
public interface OnFinishListener {
void onFinish();
}
private static final int NUM_STEPS = 4;
private static final int[] IMAGES = new int[] {
R.drawable.onboard_step_1,
R.drawable.onboard_step_2,
R.drawable.onboard_step_3,
R.drawable.onboard_step_4,
};
private static final int[] INSTRUCTIONS = new int[] {
R.string.onboarding_msg_1,
R.string.onboarding_msg_2,
R.string.onboarding_msg_3,
0,
};
private static final int[] BUTTON_TEXT = new int[] {
R.string.next,
R.string.next,
R.string.next,
R.string.play,
};
private ImageView mImageView;
private TextView mTextView;
private TextView mFinalTextView;
private Button mAdvanceButton;
private View[] mIndicators = new View[4];
private OnFinishListener mListener;
private int mStepIndex = 0;
public OnboardingView(Context context, AttributeSet attrs) {
super(context, attrs);
LayoutInflater.from(context).inflate(R.layout.layout_onboarding, this, true);
mImageView = (ImageView) findViewById(R.id.onboarding_image);
mTextView = (TextView) findViewById(R.id.onboarding_text);
mFinalTextView = (TextView) findViewById(R.id.onboarding_text_final);
mAdvanceButton = (Button) findViewById(R.id.onboarding_button);
FontHelper.makeLobster(mFinalTextView);
mIndicators[0] = findViewById(R.id.indicator_1);
mIndicators[1] = findViewById(R.id.indicator_2);
mIndicators[2] = findViewById(R.id.indicator_3);
mIndicators[3] = findViewById(R.id.indicator_4);
mAdvanceButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mStepIndex++;
if (mStepIndex < NUM_STEPS) {
setStep(mStepIndex);
} else {
setVisibility(View.GONE);
if (mListener != null) {
mListener.onFinish();
}
}
}
});
setStep(0);
}
private void setStep(int step) {
mStepIndex = step;
// Images and text
mImageView.setImageResource(IMAGES[mStepIndex]);
mAdvanceButton.setText(BUTTON_TEXT[mStepIndex]);
if (INSTRUCTIONS[mStepIndex] != 0) {
mTextView.setText(INSTRUCTIONS[mStepIndex]);
}
// Indicators
for (int i = 0; i < NUM_STEPS; i++) {
if (i == mStepIndex) {
mIndicators[i].setAlpha(1.0f);
} else {
mIndicators[i].setAlpha(0.5f);
}
}
// Last step has a special message
if (mStepIndex == NUM_STEPS - 1) {
mTextView.setVisibility(View.INVISIBLE);
mFinalTextView.setVisibility(View.VISIBLE);
} else {
mTextView.setVisibility(View.VISIBLE);
mFinalTextView.setVisibility(View.INVISIBLE);
}
}
public void setOnFinishListener(OnFinishListener listener) {
mListener = listener;
}
}