Create a Tetris Game in Android Studio:
Download Android Studio from the
link given blow according to your operating system Windows, Mac, Linux, Chrome
OS etc.
Link: https://developer.android.com/studio
More downloads are available here.
Link: https://developer.android.com/studio/archive
CODE:
AndroidManifest.xml
<manifest
xmlns:android=”http://schemas.android.com/apk/res/android”
package=”com.sava.tetrisgame”
android:versionCode=”1″
android:versionName=”1.0″ >
<uses-sdk
android:minSdkVersion=”8″
android:targetSdkVersion=”17″ />
<application
android:allowBackup=”true”
android:icon=”@drawable/ic_launcher”
android:label=”@string/app_name”
android:theme=”@style/AppTheme” >
<activity
android:name=”com.game.tetrisgame.IntialActivity”
android:configChanges=”orientation|keyboardHidden|screenSize”
android:label=”@string/app_name”
android:theme=”@style/FullscreenTheme” >
<category
android:name=”android.intent.category.LAUNCHER” />
colors.xml
<color
name=”dark_red”>#66000033
strings.xml
<string
name=”app_name”>TetrisGame
Empty Content
Empty Button
styles.xml
customtheme.xml
/>
activity_intial.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=”.IntialActivity” >
<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/empty_content”
android:textColor=”#33b5e5″
android:textSize=”50sp”
android:textStyle=”bold” />
<FrameLayout
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:fitsSystemWindows=”true” >
<LinearLayout
android:id=”@+id/fullscreen_content_controls”
style=”?buttonBarStyle”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:layout_gravity=”bottom|center_horizontal”
android:background=”@color/dark_red”
android:orientation=”horizontal”
tools:ignore=”UselessParent” >
<Button
android:id=”@+id/empty_button”
style=”?buttonBarButtonStyle”
android:layout_width=”0dp”
android:layout_height=”wrap_content”
android:layout_weight=”1″
android:text=”@string/empty_button” />
SystemHiderUserInterface.java
package
com.game.tetrisgame.usageclasses;
import android.app.Activity;
import android.os.Build;
import android.view.View;
public abstract class
SystemHiderUserInterface {
public static final int FLAG_LAYOUT_IN_SCREEN_OLDER_DEVICES = 0x1;
public static final int FLAG_FULLSCREEN = 0x2;
public static final int FLAG_HIDE_NAVIGATION = FLAG_FULLSCREEN |
0x4;
protected Activity mActivity;
protected View mAnchorView;
protected int mFlags;
protected OnVisibilityChangeListener mOnVisibilityChangeListener =
sDummyListener;
public static SystemHiderUserInterface getInstance(Activity
activity, View anchorView,
int flags) {
if (Build.VERSION.SDK_INT >=
Build.VERSION_CODES.HONEYCOMB) {
return new
SystemHoneycombUserInteface(activity, anchorView, flags);
} else {
return new
SystemBaseUserInterface(activity, anchorView, flags);
}
}
protected
SystemHiderUserInterface(Activity activity, View anchorView, int flags) {
mActivity = activity;
mAnchorView = anchorView;
mFlags = flags;
}
public abstract void setup();
public abstract boolean isVisible();
public abstract void hide();
public abstract void show();
public void toggle() {
if (isVisible()) {
hide();
} else {
show();
}
}
public void setOnVisibilityChangeListener(
OnVisibilityChangeListener
listener) {
if (listener == null) {
listener = sDummyListener;
}
mOnVisibilityChangeListener = listener;
}
private static OnVisibilityChangeListener sDummyListener = new
OnVisibilityChangeListener() {
@Override
public void onVisibilityChange(boolean visible)
{
}
};
public interface OnVisibilityChangeListener {
public void onVisibilityChange(boolean
visible);
}
}
SystemBaseUserInterface.java
package com.game.tetrisgame.usageclasses;
import android.app.Activity;
import android.view.View;
import android.view.WindowManager;
public class SystemBaseUserInterface extends SystemHiderUserInterface {
private boolean
mVisible = true;
protected SystemBaseUserInterface(Activity activity, View
anchorView, int flags) {
super(activity, anchorView, flags);
}
@Override
public void setup() {
if ((mFlags &
FLAG_LAYOUT_IN_SCREEN_OLDER_DEVICES) == 0) {
mActivity.getWindow().setFlags(
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
|
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
|
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
}
@Override
public boolean isVisible() {
return mVisible;
}
@Override
public void hide() {
if ((mFlags & FLAG_FULLSCREEN) != 0) {
mActivity.getWindow().setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
mOnVisibilityChangeListener.onVisibilityChange(false);
mVisible = false;
}
@Override
public void show() {
if ((mFlags & FLAG_FULLSCREEN) != 0) {
mActivity.getWindow().setFlags(0,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
mOnVisibilityChangeListener.onVisibilityChange(true);
mVisible = true;
}
}
SystemHoneycombUserInterface.java
package
com.game.tetrisgame.usageclasses;
import
android.annotation.TargetApi;
import android.app.Activity;
import android.os.Build;
import android.view.View;
import android.view.WindowManager;
public class SystemHoneycombUserInterface extends SystemBaseUserInterface {
private int
mShowFlags;
private int mHideFlags;
private int mTestFlags;
private boolean mVisible = true;
protected SystemHoneycombUserInterface(Activity activity, View
anchorView,
int flags) {
super(activity, anchorView, flags);
mShowFlags = View.SYSTEM_UI_FLAG_VISIBLE;
mHideFlags = View.SYSTEM_UI_FLAG_LOW_PROFILE;
mTestFlags = View.SYSTEM_UI_FLAG_LOW_PROFILE;
if ((mFlags
& FLAG_FULLSCREEN) != 0) {
mShowFlags |=
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
mHideFlags |=
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_FULLSCREEN;
}
if
((mFlags & FLAG_HIDE_NAVIGATION) != 0) {
mShowFlags |=
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION;
mHideFlags |=
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
mTestFlags = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
}
}
@Override
public void setup() {
mAnchorView
.setOnSystemUiVisibilityChangeListener(mSystemUiVisibilityChangeListener);
}
@Override
public void hide() {
mAnchorView.setSystemUiVisibility(mHideFlags);
}
@Override
public void show() {
mAnchorView.setSystemUiVisibility(mShowFlags);
}
@Override
public boolean isVisible() {
return mVisible;
}
private
View.OnSystemUiVisibilityChangeListener mSystemUiVisibilityChangeListener = new
View.OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int vis)
{
if ((vis & mTestFlags)
!= 0) {
if
(Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
mActivity.getActionBar().hide();
mActivity.getWindow().setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
mOnVisibilityChangeListener.onVisibilityChange(false);
mVisible
= false;
} else {
mAnchorView.setSystemUiVisibility(mShowFlags);
if
(Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
mActivity.getActionBar().show();
mActivity.getWindow().setFlags(0,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
mOnVisibilityChangeListener.onVisibilityChange(true);
mVisible
= true;
}
}
};
}
IntialActivity.java
package com.game.tetrisgame;
import
com.game.tetrisgame.usageclasses.SystemHiderUserInterface;
import
android.annotation.TargetApi;
import android.app.Activity;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.view.MotionEvent;
import android.view.View;
public class IntialActivity extends Activity {
private static final
boolean AUTO_HIDE = true;
private static final int AUTO_HIDE_DELAY_MILLIS = 3000;
private static final boolean TOGGLE_ON_CLICK = true;
private static final int HIDER_FLAGS =
SystemUiHider.FLAG_HIDE_NAVIGATION;
private SystemHiderUserInterface mSystemUiHider;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
final View controlsView = findViewById(R.id.fullscreen_content_controls);
final View contentView =
findViewById(R.id.fullscreen_content);
mSystemUiHider = SystemHiderUserInterface.getInstance(this,
contentView,
HIDER_FLAGS);
mSystemUiHider.setup();
mSystemUiHider
.setOnVisibilityChangeListener(new SystemUiHider.OnVisibilityChangeListener() {
int mControlsHeight;
int mShortAnimTime;
(Build.VERSION_CODES.HONEYCOMB_MR2)
public void onVisibilityChange(boolean visible) {
if (Build.VERSION.SDK_INT >=
Build.VERSION_CODES.HONEYCOMB_MR2) {
if (mControlsHeight ==
0) {
mControlsHeight = controlsView.getHeight();
}
if (mShortAnimTime ==
0) {
mShortAnimTime = getResources().getInteger(
android.R.integer.config_shortAnimTime);
}
controlsView
.animate()
.translationY(visible ? 0 : mControlsHeight)
.setDuration(mShortAnimTime);
} else {
controlsView.setVisibility(visible ? View.VISIBLE
: View.GONE);
}
if
(visible && AUTO_HIDE) {
// Schedule a hide().
delayedHide(AUTO_HIDE_DELAY_MILLIS);
}
}
});
contentView.setOnClickListener(new
View.OnClickListener() {
@Override
public void onClick(View
view) {
if (TOGGLE_ON_CLICK)
{
mSystemUiHider.toggle();
} else {
mSystemUiHider.show();
}
}
});
scheduled hide()
findViewById(R.id.empty_button).setOnTouchListener(
mDelayHideTouchListener);
}
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
delayedHide(100);
}
View.OnTouchListener mDelayHideTouchListener = new View.OnTouchListener()
{
@Override
public boolean onTouch(View view, MotionEvent
motionEvent) {
if (AUTO_HIDE) {
delayedHide(AUTO_HIDE_DELAY_MILLIS);
}
return false;
}
};
Handler mHideHandler =
new Handler();
Runnable mHideRunnable = new Runnable() {
@Override
public void run() {
mSystemUiHider.hide();
}
};
private void delayedHide(int delayMillis) {
mHideHandler.removeCallbacks(mHideRunnable);
mHideHandler.postDelayed(mHideRunnable,
delayMillis);
}
}
You Must Keep The Files As Shown Order Below:
AndroidManifest.xml
libs/android-support-v4.jar
proguard-project.txt
project.properties
res/drawable-hdpi/ic_launcher.png
res/drawable-mdpi/ic_launcher.png
res/drawable-xhdpi/ic_launcher.png
res/layout/activity_intial.xml
res/values-v11/styles.xml
res/values-v14/styles.xml
res/values/customtheme.xml
res/values/colors.xml
res/values/strings.xml
res/values/styles.xml
src/com/game/tetrisgame/IntialActivity.java
src/com/game/tetrisgame/usageclasses/SystemHiderUserInterface.java
src/com/game/tetrisgame/usageclasses/SystemBaseUserInterface.java
src/com/game/tetrisgame/usageclasses/SystemHoneycombUserInterface.java
This is how you can create a Tetris game in Android Studio. Please use the above code with complete explained process and develop the game. If you still need more help and assistance, please comment down below so that we can help you. Good Luck!!