Java tutorial
/* * Copyright (C) 2014 Michell Bak * * 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.miz.mizuu; import android.annotation.SuppressLint; import android.os.Bundle; import android.os.Handler; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.SimpleOnPageChangeListener; import android.support.v7.widget.Toolbar; import android.view.MenuItem; import android.view.View; import android.view.View.OnSystemUiVisibilityChangeListener; import com.miz.base.MizActivity; import com.miz.functions.MizLib; import com.miz.mizuu.fragments.ActorPhotoFragment; import com.miz.utils.ViewUtils; import com.squareup.otto.Bus; import com.squareup.otto.Subscribe; public class ImageViewer extends MizActivity { private ViewPager mViewPager; private boolean mPortraitPhotos; private String[] mPhotos; private Bus mBus; private Handler mHandler = new Handler(); private Toolbar mToolbar; private Runnable mHideSystemUiRunnable = new Runnable() { @Override public void run() { hideSystemUi(); } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (MizLib.hasKitKat()) { setTheme(R.style.Mizuu_Theme_Translucent_FullScreen); } else { setTheme(R.style.Mizuu_Theme_Transparent_FullScreen); } ViewUtils.setupWindowFlagsForStatusbarOverlay(getWindow(), true); mToolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(mToolbar); ViewUtils.setProperToolbarSize(this, mToolbar); getSupportActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.transparent_actionbar)); mBus = MizuuApplication.getBus(); mPortraitPhotos = getIntent().getBooleanExtra("portraitPhotos", true); mPhotos = getIntent().getStringArrayExtra("photos"); getSupportActionBar().setTitle((getIntent().getIntExtra("selectedIndex", 0) + 1) + " " + getString(R.string.of) + " " + mPhotos.length); mViewPager = (ViewPager) findViewById(R.id.awesomepager); mViewPager.setPageMargin(MizLib.convertDpToPixels(getApplicationContext(), 16)); mViewPager.setAdapter(new ActorPhotosAdapter(getSupportFragmentManager())); mViewPager.setOnPageChangeListener(new SimpleOnPageChangeListener() { @Override public void onPageSelected(int arg0) { getSupportActionBar().setTitle((arg0 + 1) + " " + getString(R.string.of) + " " + mPhotos.length); } }); mViewPager.setCurrentItem(getIntent().getIntExtra("selectedIndex", 0)); View decorView = getWindow().getDecorView(); decorView.setOnSystemUiVisibilityChangeListener(new OnSystemUiVisibilityChangeListener() { @Override public void onSystemUiVisibilityChange(int visibility) { if (visibility == 0) { // The UI is visible due to user interaction - let's hide it again after three seconds mHandler.postDelayed(mHideSystemUiRunnable, 3000); } } }); } @Override protected int getLayoutResource() { return R.layout.viewpager_with_toolbar_overlay; } @SuppressLint("InlinedApi") @Subscribe public void tappedImage(Object event) { boolean visible = getSupportActionBar().isShowing(); if (visible) { hideSystemUi(); } else { showSystemUi(); } } @SuppressLint("InlinedApi") private void hideSystemUi() { getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE); mHandler.removeCallbacks(mHideSystemUiRunnable); getSupportActionBar().hide(); } private void showSystemUi() { getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE); ViewUtils.setupWindowFlagsForStatusbarOverlay(getWindow(), true); getSupportActionBar().show(); } @Override public void onResume() { super.onResume(); mBus.register(this); } @Override public void onPause() { super.onPause(); mBus.unregister(this); } private class ActorPhotosAdapter extends FragmentPagerAdapter { public ActorPhotosAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int index) { return ActorPhotoFragment.newInstance(mPhotos[index], mPortraitPhotos); } @Override public int getCount() { return mPhotos.length; } } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: onBackPressed(); return true; default: return super.onOptionsItemSelected(item); } } @Override public void onStart() { super.onStart(); getSupportActionBar().setDisplayHomeAsUpEnabled(true); } }