net.libaier.chinesestringuppuzzle.ScreenSlideActivity.java Source code

Java tutorial

Introduction

Here is the source code for net.libaier.chinesestringuppuzzle.ScreenSlideActivity.java

Source

/*
 * Copyright 2012 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 net.libaier.chinesestringuppuzzle;

import java.io.IOException;
import java.util.ArrayList;

import net.libaier.chinesestringuppuzzle.ScreenSlidePageFragment.OnEnterClickListener;
import net.libaier.chinesestringuppuzzle.animation.ZoomOutPageTransformer;
import android.app.Fragment;
import android.app.FragmentManager;
import android.content.pm.ActivityInfo;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v13.app.FragmentStatePagerAdapter;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Toast;

/**
 * Demonstrates a "screen-slide" animation using a {@link ViewPager}. Because {@link ViewPager}
 * automatically plays such an animation when calling {@link ViewPager#setCurrentItem(int)}, there
 * isn't any animation-specific code in this sample.
 *
 * <p>This sample shows a "next" button that advances the user to the next step in a wizard,
 * animating the current screen out (to the left) and the next screen in (from the right). The
 * reverse animation is played when the user presses the "previous" button.</p>
 *
 * @see ScreenSlidePageFragment
 */
public class ScreenSlideActivity extends FragmentActivity implements OnEnterClickListener {
    /**
     * he number of pages (wizard steps) to show in this demo     */

    private SQLiteDatabase database;

    private PuzzleUtils puzzleUtils;

    /**
     * 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 ScreenSlidePagerAdapter mPagerAdapter;

    private void fullScreenAndLandscape() {

        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        fullScreenAndLandscape();
        setContentView(R.layout.activity_screen_slide);
        Toast.makeText(getApplicationContext(), "??...", Toast.LENGTH_SHORT).show();

        DataBaseHelper myDbHelper = new DataBaseHelper(this);

        try {

            myDbHelper.createDataBase();

        } catch (IOException ioe) {

            throw new Error("Unable to create database");

        }

        try {

            database = myDbHelper.openDataBase();

        } catch (SQLException sqle) {

            throw sqle;

        }
        puzzleUtils = PuzzleUtils.getInstance();
        puzzleUtils.setDatabase(database);

        TypefaceUtils.init(this);
        //TypefaceUtils.msyh =null;
        Toast.makeText(getApplicationContext(), "????", Toast.LENGTH_SHORT).show();

        // Instantiate a ViewPager and a PagerAdapter.
        mPager = (ViewPager) findViewById(R.id.pager);
        //mPager.setPageTransformer(true, new ZoomOutPageTransformer());
        mPagerAdapter = new ScreenSlidePagerAdapter(getFragmentManager());
        mPager.setAdapter(mPagerAdapter);
        mPagerAdapter.addFragment(0, "?", "?", false, false);
        puzzleUtils.initIdiomsList();
        mPagerAdapter.addFragment(1, puzzleUtils.getCurrentIdiom().getName(), "...", true, true);

    }

    /**
     * A simple pager adapter that represents 5 {@link ScreenSlidePageFragment} objects, in
     * sequence.
     */
    public class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
        private ArrayList<ScreenSlidePageFragment> mFragments = new ArrayList<ScreenSlidePageFragment>();

        public ScreenSlidePagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Object instantiateItem(ViewGroup arg0, int arg1) {
            // TODO Auto-generated method stub

            return super.instantiateItem(arg0, arg1);
        }

        public boolean addFragment(int position, String idiomNameString, String userAnswerString,
                boolean isEnabled_answer, boolean isEnabled_enter) {

            ScreenSlidePageFragment StartFragment = new ScreenSlidePageFragment();
            StartFragment.updateFragmentView(position, idiomNameString, userAnswerString, isEnabled_answer,
                    isEnabled_enter);
            mFragments.add(StartFragment);
            return true;
        }

        public boolean setFragment(int position, String idiomNameString, String userAnswerString,
                boolean isEnabled_answer, boolean isEnabled_enter) {
            mFragments.get(position).updateFragmentView(position, idiomNameString, userAnswerString,
                    isEnabled_answer, isEnabled_enter);
            return true;
        }

        public boolean getCorrectAnswer(String Answer) {
            mFragments.get(puzzleUtils.getIdiomsList().size() - 1).setEnabled_answer(false);
            mFragments.get(puzzleUtils.getIdiomsList().size() - 1).setEnabled_enter(false);
            mFragments.get(puzzleUtils.getIdiomsList().size() - 1).setUserAnswerString(Answer);
            mFragments.get(puzzleUtils.getIdiomsList().size() - 1).updateFragmentView();
            return false;

        }

        @Override
        public Fragment getItem(int position) {
            return mFragments.get(position);
        }

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return mFragments.size();
        }
    }

    @Override
    public void OnEnterClickListener(String answer) {
        // TODO Auto-generated method stub
        if (puzzleUtils.isRightAnswer(answer)) {
            mPagerAdapter.getCorrectAnswer(answer);
            mPagerAdapter.addFragment(puzzleUtils.getIdiomsList().size(), puzzleUtils.getCurrentIdiom().getName(),
                    "...", true, true);
            mPager.setCurrentItem(puzzleUtils.getIdiomsList().size());
        }
    }
}