Make startup and mainmenu
This commit is contained in:
parent
3d45a25895
commit
c8085df15d
17 changed files with 469 additions and 50 deletions
|
@ -3,30 +3,42 @@
|
|||
xmlns:tools="http://schemas.android.com/tools"
|
||||
package="com.rubenvandeven.emotionhero">
|
||||
|
||||
|
||||
<uses-permission android:name="android.permission.CAMERA" />
|
||||
|
||||
<uses-permission android:name="android.permission.CAMERA" />
|
||||
|
||||
<application
|
||||
tools:replace="android:allowBackup,android:label"
|
||||
android:allowBackup="true"
|
||||
android:hardwareAccelerated="true"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/AppTheme"
|
||||
android:hardwareAccelerated="true">
|
||||
|
||||
tools:replace="android:allowBackup,android:label">
|
||||
<activity
|
||||
android:name=".GamingActivity"
|
||||
android:configChanges="orientation|keyboardHidden|screenSize"
|
||||
android:label="@string/app_name"
|
||||
android:theme="@style/FullscreenTheme">
|
||||
|
||||
<!-- <intent-filter> -->
|
||||
<!-- <action android:name="android.intent.action.MAIN" /> -->
|
||||
|
||||
|
||||
<!-- <category android:name="android.intent.category.LAUNCHER" /> -->
|
||||
<!-- </intent-filter> -->
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".IntroActivity"
|
||||
android:theme="@style/FullscreenTheme"
|
||||
android:label="@string/app_name">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity android:name=".MenuActivity"
|
||||
android:theme="@style/FullscreenTheme"
|
||||
android:label="@string/app_name"></activity>
|
||||
</application>
|
||||
|
||||
</manifest>
|
|
@ -42,7 +42,6 @@ public class GamingActivity extends AppCompatActivity implements Detector.ImageL
|
|||
public final static String INTENT_EXTRA_SCENARIO = "com.rubenvandeven.emotionhero.LEVEL";
|
||||
|
||||
final static String LOG_TAG = "EmotionHero";
|
||||
final static String PLAYERINFO_FILENAME = "playerinfo.json";
|
||||
|
||||
final int PERMISSIONS_REQUEST_CAMERA = 1;
|
||||
|
||||
|
@ -68,6 +67,7 @@ public class GamingActivity extends AppCompatActivity implements Detector.ImageL
|
|||
|
||||
final static int SOUND_SCORE = 1;
|
||||
|
||||
protected Player player;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
|
@ -77,6 +77,8 @@ public class GamingActivity extends AppCompatActivity implements Detector.ImageL
|
|||
|
||||
setContentView(R.layout.activity_gaming);
|
||||
|
||||
player = Player.getInstance(getApplicationContext());
|
||||
|
||||
Intent intent = getIntent();
|
||||
// first level is the default to load, if none is given to intent
|
||||
int scenarioLvlId = intent.getIntExtra(INTENT_EXTRA_SCENARIO, Scenario.SCENARIOS.get(0));
|
||||
|
@ -148,6 +150,7 @@ public class GamingActivity extends AppCompatActivity implements Detector.ImageL
|
|||
|
||||
// currentScenario = new ScenarioAnger(this);
|
||||
currentScenario = new Scenario(scenarioLvlId, this);
|
||||
|
||||
currentScenario.init(); // "start the clock"...
|
||||
|
||||
scenarioView = new ScenarioView(this, currentScenario);
|
||||
|
@ -178,10 +181,10 @@ public class GamingActivity extends AppCompatActivity implements Detector.ImageL
|
|||
String permission = "android.permission.CAMERA";
|
||||
int res = getApplicationContext().checkCallingOrSelfPermission(permission);
|
||||
if (res == PackageManager.PERMISSION_GRANTED) {
|
||||
Log.e(LOG_TAG, "HAS PERM");
|
||||
Log.i(LOG_TAG, "Has camera permission");
|
||||
has_camera_permission = true;
|
||||
} else {
|
||||
Log.e(LOG_TAG, "NO PERM");
|
||||
Log.i(LOG_TAG, "No camera permission");
|
||||
ActivityCompat.requestPermissions(this,
|
||||
new String[]{Manifest.permission.CAMERA},
|
||||
PERMISSIONS_REQUEST_CAMERA);
|
||||
|
@ -242,11 +245,6 @@ public class GamingActivity extends AppCompatActivity implements Detector.ImageL
|
|||
Face face = list.get(0);
|
||||
currentScenario.setCurrentFace(face);
|
||||
scenarioView.setCurrentAttributeScoresForFace(face);
|
||||
|
||||
// if(frame instanceof Frame.ByteArrayFrame)
|
||||
// {
|
||||
// Frame.ByteArrayFrame byteArrayFrame = (Frame.ByteArrayFrame) frame;
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -342,37 +340,6 @@ public class GamingActivity extends AppCompatActivity implements Detector.ImageL
|
|||
sound = new SoundPool(5, AudioManager.STREAM_MUSIC,0);
|
||||
}
|
||||
|
||||
public PlayerInfo getPlayerInfo() {
|
||||
try{
|
||||
FileInputStream fis = openFileInput(PLAYERINFO_FILENAME );
|
||||
StringBuilder builder = new StringBuilder();
|
||||
int ch;
|
||||
while((ch = fis.read()) != -1){
|
||||
builder.append((char)ch);
|
||||
}
|
||||
return PlayerInfo.fromJson(builder.toString());
|
||||
} catch (IOException e) {
|
||||
return new PlayerInfo();
|
||||
}
|
||||
}
|
||||
|
||||
public void savePlayerScore(Score score) {
|
||||
PlayerInfo playerInfo = getPlayerInfo();
|
||||
playerInfo.addScore(score);
|
||||
savePlayerInfo(playerInfo);
|
||||
}
|
||||
|
||||
public void savePlayerInfo(PlayerInfo playerInfo) {
|
||||
try {
|
||||
FileOutputStream fos = openFileOutput(PLAYERINFO_FILENAME, Context.MODE_PRIVATE);
|
||||
fos.write(playerInfo.toJson().getBytes());
|
||||
fos.close();
|
||||
} catch(IOException e) {
|
||||
// for now skip error
|
||||
Log.e(LOG_TAG, "Could not save player information!");
|
||||
}
|
||||
}
|
||||
|
||||
public void finishLevel() {
|
||||
setText("LEVEL ENDED");
|
||||
stopDetector();
|
||||
|
@ -381,7 +348,7 @@ public class GamingActivity extends AppCompatActivity implements Detector.ImageL
|
|||
nextLvlButton.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
PlayerInfo playerInfo = getPlayerInfo();
|
||||
PlayerInfo playerInfo = player.getPlayerInfo();
|
||||
ScoreList scores = playerInfo.getScoresForLevel(currentScenario.id);
|
||||
Score score = currentScenario.getScore();
|
||||
|
||||
|
@ -399,8 +366,15 @@ public class GamingActivity extends AppCompatActivity implements Detector.ImageL
|
|||
|
||||
// show the highscores (top 3?)...
|
||||
|
||||
// check whether this is the highest reached level by the player
|
||||
// ... used by 'continue' button in main menu
|
||||
Scenario nextScenario = new Scenario(currentScenario.getNextLevelId(), this);
|
||||
if(nextScenario.isHigherThen(playerInfo.reachedLevelId)) {
|
||||
playerInfo.reachedLevelId = currentScenario.id;
|
||||
}
|
||||
|
||||
scores.add(score);
|
||||
savePlayerInfo(playerInfo);
|
||||
player.savePlayerInfo(playerInfo);
|
||||
|
||||
String highscoreText = "TOPSCORES\n";
|
||||
|
||||
|
|
|
@ -0,0 +1,75 @@
|
|||
package com.rubenvandeven.emotionhero;
|
||||
|
||||
import android.animation.AnimatorSet;
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.content.Intent;
|
||||
import android.os.Handler;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.view.WindowManager;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.Toast;
|
||||
|
||||
public class IntroActivity extends AppCompatActivity {
|
||||
|
||||
protected Player player;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
||||
getSupportActionBar().hide();
|
||||
setContentView(R.layout.activity_intro);
|
||||
|
||||
player = Player.getInstance(getApplicationContext());
|
||||
|
||||
int extraLogoDelay;
|
||||
if(player.isNew()) {
|
||||
extraLogoDelay = 1500;
|
||||
} else {
|
||||
extraLogoDelay = 0;
|
||||
}
|
||||
|
||||
final ImageView logoV2 = (ImageView) findViewById(R.id.logoV2);
|
||||
final ImageView logoArquivo = (ImageView) findViewById(R.id.logoArquivo);
|
||||
final ImageView logoAffectiva = (ImageView) findViewById(R.id.logoAffectiva);
|
||||
|
||||
ObjectAnimator fadeOutV2 = ObjectAnimator.ofFloat(logoV2, "alpha", 0f);
|
||||
fadeOutV2.setDuration(1000);
|
||||
fadeOutV2.setStartDelay(0 + extraLogoDelay);
|
||||
ObjectAnimator fadeInV2 = ObjectAnimator.ofFloat(logoV2, "alpha", 0f, 1f);
|
||||
fadeInV2.setDuration(1000);
|
||||
|
||||
ObjectAnimator fadeOutArquivo = ObjectAnimator.ofFloat(logoArquivo, "alpha", 0f);
|
||||
fadeOutArquivo.setDuration(1000);
|
||||
fadeOutArquivo.setStartDelay(0 + extraLogoDelay);
|
||||
ObjectAnimator fadeInArquivo = ObjectAnimator.ofFloat(logoArquivo, "alpha", 0f, 1f);
|
||||
fadeInArquivo.setDuration(1000);
|
||||
|
||||
ObjectAnimator fadeOutAffectiva = ObjectAnimator.ofFloat(logoAffectiva, "alpha", 0f);
|
||||
fadeOutAffectiva.setDuration(1000);
|
||||
fadeOutAffectiva.setStartDelay(1000 + extraLogoDelay);
|
||||
ObjectAnimator fadeInAffectiva = ObjectAnimator.ofFloat(logoAffectiva, "alpha", 0f, 1f);
|
||||
fadeInAffectiva.setDuration(1000);
|
||||
|
||||
|
||||
AnimatorSet animatorSet = new AnimatorSet();
|
||||
animatorSet.playSequentially(fadeInV2, fadeOutV2,
|
||||
fadeInArquivo, fadeOutArquivo,
|
||||
fadeInAffectiva, fadeOutAffectiva);
|
||||
animatorSet.start();
|
||||
|
||||
|
||||
final Handler handler = new Handler();
|
||||
handler.postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Intent intent = new Intent(IntroActivity.this, MenuActivity.class);
|
||||
finish();
|
||||
startActivity(intent);
|
||||
|
||||
}
|
||||
}, 7000 + (3*extraLogoDelay));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,117 @@
|
|||
package com.rubenvandeven.emotionhero;
|
||||
|
||||
import android.animation.AnimatorSet;
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.content.Intent;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.view.WindowManager;
|
||||
import android.view.animation.AlphaAnimation;
|
||||
import android.view.animation.Animation;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.Toast;
|
||||
|
||||
public class MenuActivity extends AppCompatActivity {
|
||||
|
||||
Player player;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
||||
getSupportActionBar().hide();
|
||||
setContentView(R.layout.activity_menu);
|
||||
|
||||
player = Player.getInstance(getApplicationContext());
|
||||
|
||||
Button startButton = (Button) findViewById(R.id.startButton);
|
||||
Button continueButton = (Button) findViewById(R.id.continueButton);
|
||||
Button highscoreButton = (Button) findViewById(R.id.highscoresButton);
|
||||
Button quitButton = (Button) findViewById(R.id.quitButton);
|
||||
|
||||
|
||||
final ImageView logoEmotionHero = (ImageView) findViewById(R.id.logoEmotionHero);
|
||||
|
||||
if(!player.getPlayerInfo().canContinueLevel()) {
|
||||
continueButton.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
// prepare for animation
|
||||
startButton.setAlpha(0f);
|
||||
continueButton.setAlpha(0f);
|
||||
highscoreButton.setAlpha(0f);
|
||||
quitButton.setAlpha(0f);
|
||||
|
||||
ObjectAnimator fadeInEmotionHero = ObjectAnimator.ofFloat(logoEmotionHero, "alpha", 0f, 1f);
|
||||
fadeInEmotionHero.setDuration(1000);
|
||||
|
||||
ObjectAnimator fadeInstartButton = ObjectAnimator.ofFloat(startButton, "alpha", 0f, 1f);
|
||||
fadeInstartButton.setDuration(1000);
|
||||
ObjectAnimator fadeInContinueButton = ObjectAnimator.ofFloat(continueButton, "alpha", 0f, 1f);
|
||||
fadeInContinueButton.setDuration(1000);
|
||||
fadeInContinueButton.setStartDelay(300);
|
||||
ObjectAnimator fadeInHighscoreButton = ObjectAnimator.ofFloat(highscoreButton, "alpha", 0f, 1f);
|
||||
fadeInHighscoreButton.setDuration(1000);
|
||||
fadeInHighscoreButton.setStartDelay(600);
|
||||
ObjectAnimator fadeInQuitButton = ObjectAnimator.ofFloat(quitButton, "alpha", 0f, 1f);
|
||||
fadeInQuitButton.setDuration(1000);
|
||||
fadeInQuitButton.setStartDelay(900);
|
||||
|
||||
|
||||
Animation anim = new AlphaAnimation(0.0f, 1.0f);
|
||||
anim.setDuration(1000); //You can manage the blinking time with this parameter
|
||||
anim.setStartOffset(20);
|
||||
anim.setRepeatMode(Animation.REVERSE);
|
||||
anim.setRepeatCount(Animation.INFINITE);
|
||||
logoEmotionHero.startAnimation(anim);
|
||||
|
||||
AnimatorSet buttonAnimatorSet = new AnimatorSet();
|
||||
buttonAnimatorSet.playTogether(fadeInstartButton,
|
||||
fadeInContinueButton,
|
||||
fadeInHighscoreButton,
|
||||
fadeInQuitButton);
|
||||
buttonAnimatorSet.start();
|
||||
|
||||
// AnimatorSet animatorSet = new AnimatorSet();
|
||||
// animatorSet.playSequentially(fadeInEmotionHero, buttonAnimatorSet);
|
||||
// animatorSet.start();
|
||||
|
||||
|
||||
startButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Intent intent = new Intent(MenuActivity.this, GamingActivity.class);
|
||||
startActivity(intent);
|
||||
}
|
||||
});
|
||||
|
||||
continueButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Intent intent = new Intent(MenuActivity.this, GamingActivity.class);
|
||||
intent.putExtra(GamingActivity.INTENT_EXTRA_SCENARIO, player.getPlayerInfo().reachedLevelId);
|
||||
startActivity(intent);
|
||||
}
|
||||
});
|
||||
|
||||
highscoreButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Toast toast = Toast.makeText(getApplicationContext(), "Not implemented yet", Toast.LENGTH_LONG);
|
||||
toast.show();
|
||||
}
|
||||
});
|
||||
|
||||
quitButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
finish();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
77
app/src/main/java/com/rubenvandeven/emotionhero/Player.java
Normal file
77
app/src/main/java/com/rubenvandeven/emotionhero/Player.java
Normal file
|
@ -0,0 +1,77 @@
|
|||
package com.rubenvandeven.emotionhero;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.Log;
|
||||
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* The current player of the game (for this device)
|
||||
* Created by ruben on 22/08/16.
|
||||
*/
|
||||
public class Player {
|
||||
|
||||
final static String PLAYERINFO_FILENAME = "playerinfo.json";
|
||||
|
||||
private static Player ourInstance;
|
||||
|
||||
private Context c;
|
||||
|
||||
PlayerInfo info;
|
||||
|
||||
public static Player getInstance(Context c) {
|
||||
if(ourInstance == null) {
|
||||
ourInstance = new Player(c);
|
||||
}
|
||||
return ourInstance;
|
||||
}
|
||||
|
||||
private Player(Context c) {
|
||||
this.c = c;
|
||||
this.info = loadPlayerInfo();
|
||||
}
|
||||
|
||||
public PlayerInfo getPlayerInfo() {
|
||||
return this.info;
|
||||
}
|
||||
|
||||
public PlayerInfo loadPlayerInfo() {
|
||||
try{
|
||||
FileInputStream fis = c.openFileInput(PLAYERINFO_FILENAME );
|
||||
StringBuilder builder = new StringBuilder();
|
||||
int ch;
|
||||
while((ch = fis.read()) != -1){
|
||||
builder.append((char)ch);
|
||||
}
|
||||
return PlayerInfo.fromJson(builder.toString());
|
||||
} catch (IOException e) {
|
||||
return new PlayerInfo();
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isNew() {
|
||||
if(this.info.reachedLevelId < 0) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
public void savePlayerScore(Score score) {
|
||||
info.addScore(score);
|
||||
savePlayerInfo(info);
|
||||
}
|
||||
|
||||
public void savePlayerInfo(PlayerInfo playerInfo) {
|
||||
try {
|
||||
FileOutputStream fos = c.openFileOutput(PLAYERINFO_FILENAME, Context.MODE_PRIVATE);
|
||||
fos.write(playerInfo.toJson().getBytes());
|
||||
fos.close();
|
||||
} catch(IOException e) {
|
||||
// for now skip error
|
||||
Log.e("PlayerInfo", "Could not save player information!");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
package com.rubenvandeven.emotionhero;
|
||||
|
||||
import android.support.annotation.NonNull;
|
||||
import android.util.Log;
|
||||
import android.util.SparseArray;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
|
@ -16,6 +17,7 @@ import java.util.Set;
|
|||
|
||||
public class PlayerInfo {
|
||||
public Map<Integer, ScoreList> levelScores = new HashMap<>();
|
||||
public int reachedLevelId = -1;
|
||||
|
||||
public ScoreList getScoresForLevel(int lvl_id) {
|
||||
ScoreList scoreList;
|
||||
|
@ -45,6 +47,24 @@ public class PlayerInfo {
|
|||
|
||||
public String toJson() {
|
||||
Gson gson = new Gson();
|
||||
return gson.toJson(this);
|
||||
String json = gson.toJson(this);
|
||||
Log.i("PlayerInfo", "Generated: "+json);
|
||||
return json;
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether the reachedLevelId is higher than the first level
|
||||
* used to show 'continue' button in menu
|
||||
* @return
|
||||
*/
|
||||
public boolean canContinueLevel() {
|
||||
if(reachedLevelId < 0)
|
||||
return false;
|
||||
|
||||
if(Scenario.SCENARIOS.indexOf(reachedLevelId) > 0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,6 +6,8 @@ import android.util.Log;
|
|||
import com.affectiva.android.affdex.sdk.detector.Face;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
|
||||
|
@ -285,7 +287,9 @@ public class Scenario {
|
|||
return null;
|
||||
}
|
||||
|
||||
return new Score(id, getHitTotalValue());
|
||||
Score score = new Score(id, getHitTotalValue());
|
||||
score.setTargets(targets);
|
||||
return score;
|
||||
}
|
||||
|
||||
public int getMaxScore() {
|
||||
|
@ -332,4 +336,16 @@ public class Scenario {
|
|||
return false;
|
||||
}
|
||||
|
||||
public boolean isHigherThen(int lvl_id) {
|
||||
return isHigherLevel(id, lvl_id);
|
||||
}
|
||||
|
||||
public static boolean isHigherLevel(int lvl_id, int then_lvl_id) {
|
||||
if(lvl_id == then_lvl_id) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return SCENARIOS.indexOf(lvl_id) > SCENARIOS.indexOf(then_lvl_id);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.rubenvandeven.emotionhero;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
|
@ -11,9 +12,15 @@ public class Score {
|
|||
float score;
|
||||
Date time;
|
||||
|
||||
ArrayList<Scenario.Target> targets = new ArrayList<>();
|
||||
|
||||
public Score(int lvl_id, float score) {
|
||||
this.lvl_id = lvl_id;
|
||||
this.score = score;
|
||||
this.time = new Date();
|
||||
}
|
||||
|
||||
public void setTargets(ArrayList<Scenario.Target> targets) {
|
||||
this.targets = targets;
|
||||
}
|
||||
}
|
||||
|
|
BIN
app/src/main/res/drawable/affectiva_logo.png
Normal file
BIN
app/src/main/res/drawable/affectiva_logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 96 KiB |
BIN
app/src/main/res/drawable/arquivo237_logo.png
Normal file
BIN
app/src/main/res/drawable/arquivo237_logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.9 KiB |
BIN
app/src/main/res/drawable/emotionhero_logo.png
Normal file
BIN
app/src/main/res/drawable/emotionhero_logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 29 KiB |
BIN
app/src/main/res/drawable/v2_logo.png
Normal file
BIN
app/src/main/res/drawable/v2_logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 20 KiB |
47
app/src/main/res/layout/activity_intro.xml
Normal file
47
app/src/main/res/layout/activity_intro.xml
Normal file
|
@ -0,0 +1,47 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/activity_intro"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingBottom="@dimen/activity_vertical_margin"
|
||||
android:paddingLeft="@dimen/activity_horizontal_margin"
|
||||
android:paddingRight="@dimen/activity_horizontal_margin"
|
||||
android:paddingTop="@dimen/activity_vertical_margin"
|
||||
tools:context="com.rubenvandeven.emotionhero.IntroActivity">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:srcCompat="@drawable/v2_logo"
|
||||
android:id="@+id/logoV2"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:alpha="0"
|
||||
/>
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:srcCompat="@drawable/arquivo237_logo"
|
||||
android:id="@+id/logoArquivo"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:alpha="0" />
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:srcCompat="@drawable/affectiva_logo"
|
||||
android:id="@+id/logoAffectiva"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:alpha="0" />
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:srcCompat="@drawable/emotionhero_logo"
|
||||
android:id="@+id/logoEmotionHero"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:alpha="0" />
|
||||
</RelativeLayout>
|
63
app/src/main/res/layout/activity_menu.xml
Normal file
63
app/src/main/res/layout/activity_menu.xml
Normal file
|
@ -0,0 +1,63 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/activity_menu"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingBottom="@dimen/activity_vertical_margin"
|
||||
android:paddingLeft="@dimen/activity_horizontal_margin"
|
||||
android:paddingRight="@dimen/activity_horizontal_margin"
|
||||
android:paddingTop="@dimen/activity_vertical_margin"
|
||||
tools:context="com.rubenvandeven.emotionhero.MenuActivity">
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_below="@+id/logoEmotionHero"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginTop="19dp">
|
||||
|
||||
<Button
|
||||
android:text="Start"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/startButton"
|
||||
android:fontFamily="sans-serif" />
|
||||
<Button
|
||||
android:text="Continue"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/continueButton"
|
||||
android:fontFamily="sans-serif" />
|
||||
<Button
|
||||
android:text="Highscores"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/highscoresButton"
|
||||
android:fontFamily="sans-serif" />
|
||||
|
||||
<Button
|
||||
android:text="Exit"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/quitButton"
|
||||
android:fontFamily="sans-serif"
|
||||
android:layout_marginTop="20dp" />
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:srcCompat="@drawable/emotionhero_logo"
|
||||
android:id="@+id/logoEmotionHero"
|
||||
android:cropToPadding="false"
|
||||
android:adjustViewBounds="true"
|
||||
android:layout_marginTop="58dp"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_alignParentStart="true" />
|
||||
|
||||
</RelativeLayout>
|
6
app/src/main/res/values-w820dp/dimens.xml
Normal file
6
app/src/main/res/values-w820dp/dimens.xml
Normal file
|
@ -0,0 +1,6 @@
|
|||
<resources>
|
||||
<!-- Example customization of dimensions originally defined in res/values/dimens.xml
|
||||
(such as screen margins) for screens with more than 820dp of available width. This
|
||||
would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively). -->
|
||||
<dimen name="activity_horizontal_margin">64dp</dimen>
|
||||
</resources>
|
5
app/src/main/res/values/dimens.xml
Normal file
5
app/src/main/res/values/dimens.xml
Normal file
|
@ -0,0 +1,5 @@
|
|||
<resources>
|
||||
<!-- Default screen margins, per the Android Design guidelines. -->
|
||||
<dimen name="activity_horizontal_margin">16dp</dimen>
|
||||
<dimen name="activity_vertical_margin">16dp</dimen>
|
||||
</resources>
|
|
@ -11,7 +11,7 @@
|
|||
<style name="FullscreenTheme" parent="AppTheme">
|
||||
<item name="android:actionBarStyle">@style/FullscreenActionBarStyle</item>
|
||||
<item name="android:windowActionBarOverlay">true</item>
|
||||
<item name="android:windowBackground">@null</item>
|
||||
<item name="android:windowBackground">@color/colorPrimary</item>
|
||||
<item name="metaButtonBarStyle">?android:attr/buttonBarStyle</item>
|
||||
<item name="metaButtonBarButtonStyle">?android:attr/buttonBarButtonStyle</item>
|
||||
</style>
|
||||
|
|
Loading…
Reference in a new issue