Wednesday, July 8, 2015

108-Android Studio 1.5 Fullscreen Activity Template


.
108-Android Studio 1.5 Fullscreen Activity Template
Continue from Tutorial 107

1) Create New Project

1.1) Configure New Project

Application Name: MyFullscreen1
Company Domain: notarazi.com
Package Name: com.notarazi.myfullscreen1 (auto-generated)
Project Location: C:\Project1\MyFullscreen1\ (auto-generated)

1.2) Select Target Device

1.3) Add Activity

Select Fullscreen Activity.

1.4) Customize The Activity

Accept defaults.

2) Observe the project codes

2.1) MainActivity.java

package com.notarazi.myfullscreen1;
import android.annotation.SuppressLint;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Handler;
import android.view.MotionEvent;
import android.view.View;
/**
* An example full-screen activity that shows and hides the system UI (i.e.
* status bar and navigation/system bar) with user interaction.
*/
public class FullscreenActivity extends AppCompatActivity {
   /**
    * Whether or not the system UI should be auto-hidden after
    * {@link #AUTO_HIDE_DELAY_MILLIS} milliseconds.
    */
   private static final boolean AUTO_HIDE true;
   /**
    * If {@link #AUTO_HIDE} is set, the number of milliseconds to wait after
    * user interaction before hiding the system UI.
    */
   private static final int AUTO_HIDE_DELAY_MILLIS 3000;
   /**
    * Some older devices needs a small delay between UI widget updates
    * and a change of the status and navigation bar.
    */
   private static final int UI_ANIMATION_DELAY 300;
   private final Handler mHideHandler new Handler();
   private View mContentView;
   private final Runnable mHidePart2Runnable new Runnable() {
       @SuppressLint("InlinedApi")
       @Override
       public void run() {
           // Delayed removal of status and navigation bar
           // Note that some of these constants are new as of API 16 (Jelly Bean)
           // and API 19 (KitKat). It is safe to use them, as they are inlined
           // at compile-time and do nothing on earlier devices.
           mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE
                   | View.SYSTEM_UI_FLAG_FULLSCREEN
                   | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                   | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                   | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                   | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
       }
   };
   private View mControlsView;
   private final Runnable mShowPart2Runnable new Runnable() {
       @Override
       public void run() {
           // Delayed display of UI elements
           ActionBar actionBar = getSupportActionBar();
           if (actionBar != null) {
               actionBar.show();
           }
           mControlsView.setVisibility(View.VISIBLE);
       }
   };
   private boolean mVisible;
   private final Runnable mHideRunnable new Runnable() {
       @Override
       public void run() {
           hide();
       }
   };
   /**
    * Touch listener to use for in-layout UI controls to delay hiding the
    * system UI. This is to prevent the jarring behavior of controls going away
    * while interacting with activity UI.
    */
   private final View.OnTouchListener mDelayHideTouchListener newView.OnTouchListener() {
       @Override
       public boolean onTouch(View view, MotionEvent motionEvent) {
           if (AUTO_HIDE) {
               delayedHide(AUTO_HIDE_DELAY_MILLIS);
           }
           return false;
       }
   };
   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_fullscreen);
       mVisible true;
       mControlsView = findViewById(R.id.fullscreen_content_controls);
       mContentView = findViewById(R.id.fullscreen_content);
       // Set up the user interaction to manually show or hide the system UI.
       mContentView.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View view) {
               toggle();
           }
       });
       // Upon interacting with UI controls, delay any scheduled hide()
       // operations to prevent the jarring behavior of controls going away
       // while interacting with the UI.
       findViewById(R.id.dummy_button).setOnTouchListener(mDelayHideTouchListener);
   }
   @Override
   protected void onPostCreate(Bundle savedInstanceState) {
       super.onPostCreate(savedInstanceState);
       // Trigger the initial hide() shortly after the activity has been
       // created, to briefly hint to the user that UI controls
       // are available.
       delayedHide(100);
   }
   private void toggle() {
       if (mVisible) {
           hide();
       } else {
           show();
       }
   }
   private void hide() {
       // Hide UI first
       ActionBar actionBar = getSupportActionBar();
       if (actionBar != null) {
           actionBar.hide();
       }
       mControlsView.setVisibility(View.GONE);
       mVisible false;
       // Schedule a runnable to remove the status and navigation bar after a delay
       mHideHandler.removeCallbacks(mShowPart2Runnable);
       mHideHandler.postDelayed(mHidePart2RunnableUI_ANIMATION_DELAY);
   }
   @SuppressLint("InlinedApi")
   private void show() {
       // Show the system bar
       mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
               | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
       mVisible true;
       // Schedule a runnable to display UI elements after a delay
       mHideHandler.removeCallbacks(mHidePart2Runnable);
       mHideHandler.postDelayed(mShowPart2RunnableUI_ANIMATION_DELAY);
   }
   /**
    * Schedules a call to hide() in [delay] milliseconds, canceling any
    * previously scheduled calls.
    */
   private void delayedHide(int delayMillis) {
       mHideHandler.removeCallbacks(mHideRunnable);
       mHideHandler.postDelayed(mHideRunnable, delayMillis);
   }
}

2.2) res/layout/activity_fullscreen.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:background="#0099cc"
   tools:context="com.notarazi.myfullscreen1.FullscreenActivity">
   <!-- The primary full-screen view. This can be replaced with whatever view
        is needed to present your content, e.g. VideoView, SurfaceView,
        TextureView, etc. -->
   <TextView
       android:id="@+id/fullscreen_content"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:gravity="center"
       android:keepScreenOn="true"
       android:text="@string/dummy_content"
       android:textColor="#33b5e5"
       android:textSize="50sp"
       android:textStyle="bold" />
   <!-- This FrameLayout insets its children based on system windows using
        android:fitsSystemWindows. -->
   <FrameLayout
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:fitsSystemWindows="true">
       <LinearLayout
           android:id="@+id/fullscreen_content_controls"
           style="?metaButtonBarStyle"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:layout_gravity="bottom|center_horizontal"
           android:background="@color/black_overlay"
           android:orientation="horizontal"
           tools:ignore="UselessParent">
           <Button
               android:id="@+id/dummy_button"
               style="?metaButtonBarButtonStyle"
               android:layout_width="0dp"
               android:layout_height="wrap_content"
               android:layout_weight="1"
               android:text="@string/dummy_button" />
       </LinearLayout>
   </FrameLayout>
</FrameLayout>

DOWNLOAD


.

No comments:

Post a Comment