.
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(mHidePart2Runnable, UI_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(mShowPart2Runnable, UI_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