/* * Copyright (C) 2016 eschao <esc.chao@gmail.com> * * 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.eschao.android.widget.sample.pageflip; import android.app.Activity; import android.app.AlertDialog; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.os.Build; import android.os.Bundle; import android.preference.PreferenceManager; import android.text.Html; import android.text.method.LinkMovementMethod; import android.view.GestureDetector; import android.view.GestureDetector.OnGestureListener; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import android.view.WindowManager; import android.widget.TextView; /** * Sample Activity * * @author eschao */ public class SampleActivity extends Activity implements OnGestureListener { PageFlipView mPageFlipView; GestureDetector mGestureDetector; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mPageFlipView = new PageFlipView(this); setContentView(mPageFlipView); mGestureDetector = new GestureDetector(this, this); if (Build.VERSION.SDK_INT < 16) { getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); } else { mPageFlipView.setSystemUiVisibility( View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); } } @Override protected void onResume() { super.onResume(); LoadBitmapTask.get(this).start(); mPageFlipView.onResume(); } @Override protected void onPause() { super.onPause(); mPageFlipView.onPause(); LoadBitmapTask.get(this).stop(); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.optionmenus, menu); int duration = mPageFlipView.getAnimateDuration(); if (duration == 1000) { menu.findItem(R.id.animation_1s).setChecked(true); } else if (duration == 2000) { menu.findItem(R.id.animation_2s).setChecked(true); } else if (duration == 5000) { menu.findItem(R.id.animation_5s).setChecked(true); } if (mPageFlipView.isAutoPageEnabled()) { menu.findItem(R.id.auoto_page).setChecked(true); } else { menu.findItem(R.id.single_page).setChecked(true); } SharedPreferences pref = PreferenceManager .getDefaultSharedPreferences(this); int pixels = pref.getInt("MeshPixels", mPageFlipView.getPixelsOfMesh()); switch (pixels) { case 2: menu.findItem(R.id.mesh_2p).setChecked(true); break; case 5: menu.findItem(R.id.mesh_5p).setChecked(true); break; case 10: menu.findItem(R.id.mesh_10p).setChecked(true); break; case 20: menu.findItem(R.id.mesh_20p).setChecked(true); break; default: break; } return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { boolean isHandled = true; SharedPreferences pref = PreferenceManager .getDefaultSharedPreferences(this); Editor editor = pref.edit(); switch (item.getItemId()) { case R.id.animation_1s: mPageFlipView.setAnimateDuration(1000); editor.putInt(Constants.PREF_DURATION, 1000); break; case R.id.animation_2s: mPageFlipView.setAnimateDuration(2000); editor.putInt(Constants.PREF_DURATION, 2000); break; case R.id.animation_5s: mPageFlipView.setAnimateDuration(5000); editor.putInt(Constants.PREF_DURATION, 5000); break; case R.id.auoto_page: mPageFlipView.enableAutoPage(true); editor.putBoolean(Constants.PREF_PAGE_MODE, true); break; case R.id.single_page: mPageFlipView.enableAutoPage(false); editor.putBoolean(Constants.PREF_PAGE_MODE, false); break; case R.id.mesh_2p: editor.putInt(Constants.PREF_MESH_PIXELS, 2); break; case R.id.mesh_5p: editor.putInt(Constants.PREF_MESH_PIXELS, 5); break; case R.id.mesh_10p: editor.putInt(Constants.PREF_MESH_PIXELS, 10); break; case R.id.mesh_20p: editor.putInt(Constants.PREF_MESH_PIXELS, 20); break; case R.id.about_menu: showAbout(); return true; default: isHandled = false; break; } if (isHandled) { item.setChecked(true); editor.apply(); return true; } return super.onOptionsItemSelected(item); } @Override public boolean onTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_UP) { mPageFlipView.onFingerUp(event.getX(), event.getY()); return true; } return mGestureDetector.onTouchEvent(event); } @Override public boolean onDown(MotionEvent e) { mPageFlipView.onFingerDown(e.getX(), e.getY()); return true; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { return false; } @Override public void onLongPress(MotionEvent e) { } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { mPageFlipView.onFingerMove(e2.getX(), e2.getY()); return true; } @Override public void onShowPress(MotionEvent e) { } public boolean onSingleTapUp(MotionEvent e) { return false; } private void showAbout() { View aboutView = getLayoutInflater().inflate(R.layout.about, null, false); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setIcon(R.mipmap.ic_launcher); builder.setTitle(R.string.app_name); builder.setView(aboutView); builder.create(); builder.show(); } }