com.laquysoft.droidconnl.ScreenSlidePagerActivity.java Source code

Java tutorial

Introduction

Here is the source code for com.laquysoft.droidconnl.ScreenSlidePagerActivity.java

Source

/*
 * Copyright 2013 Google Inc.
 *
 * 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.laquysoft.droidconnl;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

import com.google.android.gms.common.SignInButton;
import com.google.example.games.basegameutils.BaseGameActivity;

public class ScreenSlidePagerActivity extends BaseGameActivity {

    /**
     * The number of miliseconds to wait after logging in.
     */
    private static final int WAIT_TIME = 2800;

    /**
     * The number of pages (wizard steps) to show in this demo.
     */
    private static final int NUM_PAGES = 4;

    /**
     * The pager widget, which handles animation and allows swiping horizontally
     * to access previous and next wizard steps.
     */
    private ViewPager mPager;

    /**
     * The pager adapter, which provides the pages to the view pager widget.
     */
    private PagerAdapter mPagerAdapter;

    private SignInButton mSignInButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_screen_slide_pager);

        // Instantiate a ViewPager and a PagerAdapter.
        mPager = (ViewPager) findViewById(R.id.pager);
        android.support.v4.app.FragmentManager fm = getSupportFragmentManager();
        mPagerAdapter = new ScreenSlidePagerAdapter(fm);
        mPager.setAdapter(mPagerAdapter);

        getGameHelper().setMaxAutoSignInAttempts(0);

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.limited, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.menu_about:
            Intent intent = new Intent(this, AboutActivity.class);
            startActivity(intent);
            return true;
        case R.id.menu_reload:
            intent = new Intent(this, TagsActivity.class);
            startActivity(intent);
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onBackPressed() {
        if (mPager.getCurrentItem() == 0) {
            // If the user is currently looking at the first step, allow the
            // system to handle the
            // Back button. This calls finish() on this activity and pops the
            // back stack.
            super.onBackPressed();
        } else {
            // Otherwise, select the previous step.
            mPager.setCurrentItem(mPager.getCurrentItem() - 1);
        }
    }

    public void onBack(View view) {
        if (mPager.getCurrentItem() == 0) {
            return;
        }

        onBackPressed();
    }

    public void onNext(View view) {
        mPager.setCurrentItem(mPager.getCurrentItem() + 1);
    }

    /**
     * A simple pager adapter that represents 4 ScreenSlidePageFragment objects,
     * in sequence, and then allows you to log in at the end.
     */
    private class ScreenSlidePagerAdapter extends FragmentPagerAdapter {
        public ScreenSlidePagerAdapter(android.support.v4.app.FragmentManager fm) {
            super(fm);
        }

        @Override
        public void finishUpdate(ViewGroup container) {
            super.finishUpdate(container);

            Button nextButton = (Button) findViewById(R.id.next_button);
            Button prevButton = (Button) findViewById(R.id.prev_button);

            // We play around with the button labels as you page.
            if (mPager.getCurrentItem() == 0) {
                prevButton.setText("");
                prevButton.setEnabled(false);
                nextButton.setText("NEXT");
                nextButton.setEnabled(true);
            } else if (mPager.getCurrentItem() == NUM_PAGES - 2) {
                prevButton.setText("BACK");
                prevButton.setEnabled(true);
                nextButton.setText("LET'S GO!");
                nextButton.setEnabled(true);
            } else if (mPager.getCurrentItem() == NUM_PAGES - 1) {
                prevButton.setText("BACK");
                prevButton.setEnabled(true);
                nextButton.setText("");
                nextButton.setEnabled(false);

                mSignInButton = (SignInButton) findViewById(R.id.sign_in_button);

                mSignInButton.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if (mSignInButton != null && mSignInButton.isEnabled()) {
                            beginUserInitiatedSignIn();
                            mSignInButton.setEnabled(false);
                        }
                    }
                });
            } else {
                prevButton.setText("BACK");
                prevButton.setEnabled(true);
                nextButton.setText("NEXT");
                nextButton.setEnabled(true);
            }
        }

        @Override
        public android.support.v4.app.Fragment getItem(int position) {
            ScreenSlidePageFragment ssl = new ScreenSlidePageFragment();

            switch (position) {
            case 0:
                ssl.layoutId = R.layout.story_frag_1;
                break;
            case 1:
                ssl.layoutId = R.layout.story_frag_1a;
                break;
            case 2:
                ssl.layoutId = R.layout.story_frag_2;
                break;
            case 3:
                ssl.layoutId = R.layout.story_frag_3;
                break;
            }

            return ssl;
        }

        @Override
        public int getCount() {
            return NUM_PAGES;
        }
    }

    @Override
    public void onSignInFailed() {
        Log.e("AndroidHunt", "Connection failed.");

        if (mSignInButton != null) {
            mSignInButton.setEnabled(true);
        }
    }

    private Handler mHandler;

    @Override
    public void onSignInSucceeded() {
        Log.e("AndroidHunt", "Connection succeeded.");

        mHandler = new Handler();

        final Activity bind = this;

        // If you log in on one activity but switch out before the popup appears,
        // the popup is just lost.  So, we hang around for a few seconds because
        // we're giving time for the Play Games services login dialog to appear.
        mHandler.postDelayed(new Runnable() {
            @Override
            public void run() {

                Intent newIntent = new Intent(bind, ClueActivity.class);
                startActivity(newIntent);
                Hunt hunt = Hunt.getHunt(getResources(), getApplicationContext());
                hunt.setIntroSeen(true);
                hunt.save(getResources(), getApplicationContext());

                bind.finish();
            }
        }, WAIT_TIME);

        return;
    }

}