update,
This commit is contained in:
13
it114105/itp4501/Assignment/18-19/.gitignore
vendored
Normal file
13
it114105/itp4501/Assignment/18-19/.gitignore
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
*.iml
|
||||
.gradle
|
||||
/local.properties
|
||||
/.idea/caches
|
||||
/.idea/libraries
|
||||
/.idea/modules.xml
|
||||
/.idea/workspace.xml
|
||||
/.idea/navEditor.xml
|
||||
/.idea/assetWizardSettings.xml
|
||||
.DS_Store
|
||||
/build
|
||||
/captures
|
||||
.externalNativeBuild
|
58
it114105/itp4501/Assignment/18-19/README.md.original
Normal file
58
it114105/itp4501/Assignment/18-19/README.md.original
Normal file
@@ -0,0 +1,58 @@
|
||||
# ITP4501-Assignment
|
||||
Programming Techniques for Mobile Systems
|
||||
|
||||
In this assignment, you are required to develop an Android Application to play a "15,20" game by selecting a player on a server. You can use the following website to get the detail of this game:
|
||||
[https://zh.wikipedia.org/wiki/%E6%95%B8%E5%AD%97%E6%8B%B3](https://zh.wikipedia.org/wiki/%E6%95%B8%E5%AD%97%E6%8B%B3)
|
||||
[https://www.youtube.com/watch?v=IrYzM-NCIEs](https://www.youtube.com/watch?v=IrYzM-NCIEs)
|
||||
|
||||
## Functional Requirements
|
||||
1. An activity performs a player’s personal information registration screen which can store player’s name, date of birth, phone number and email by using shared preferences in your phone. You should let player to update his personal information in your app.
|
||||
|
||||
2. An activity which contains a button “Start”. When a player touches this button, your app will find a player from a server and then show the information of this player on the screen.
|
||||
1. And then your game will show (0,0),(0,5),(5,0),(5,5) to represent your two hands to let you to choose. Next screen will show 0,5,10,15,20 on the screen for you to guess the number. You should try to make your choice by touching the image on the screen.
|
||||
2. Once you make your guess and hands, your app will get the hands and guess (useless at this round) of your opponent from the server. On the screen, your app should show your name and the name of your opponent, the hands of yours and corresponding opponent. The game will show who win the game if the number on the screen is same as your guess. Otherwise, the game will go on next round but this time you only select your hands, i.e. (0,0),(0,5),(5,0),(5,5) and then your app will get the hands and guess of your opponent from the server again and go on. The game will go on until the number on the screen will be same as your guess or opponent's guess.
|
||||
3. If the game gets the winner, you can touch a Continue button to play again or Quit button to leave it.
|
||||
4. To simplify your work, you are always the first one to start the guess.
|
||||
5. You are required to use image to represent your and opponents' hands in this app.
|
||||
3. An activity which uses a bar chart to show how many games you win and how many games you lose.
|
||||
4. A database GamesLog which contains a table to store the game history for yours which store the date and time, the name of your opponents and the result of the game (Win or Lost).
|
||||
5. An activity for GamesLog properly show the data stored in the local database. Your list
|
||||
should show the result of a game.
|
||||
|
||||
### Local Database
|
||||
The database scheme described here is an extremely simple one. Many fields are intended not to be included in order to reduce the complexity of this assignment. You are free to add columns and tables to the database to fit for your own needs.
|
||||
```
|
||||
GamesLog (gameDate, gameTime, opponentName, winOrLost)
|
||||
```
|
||||
|
||||
### Opponents JSON Server
|
||||
You can find your opponent from the server by using following url:
|
||||
[https://4qm49vppc3.execute-api.us-east-1.amazonaws.com/Prod/itp4501_api/opponent/0](https://4qm49vppc3.execute-api.us-east-1.amazonaws.com/Prod/itp4501_api/opponent/0)
|
||||
and the data returned is in JSON format.
|
||||
The sample JSON string returned is shown below:
|
||||
```
|
||||
{"id": 2, "name": "May", "country": "UK"}
|
||||
```
|
||||
Be careful the last digit 0 on the url is going to find an online opponent from the server.
|
||||
|
||||
The attribute "id" is the userid of corresponding opponent.
|
||||
|
||||
You can get the choice and hands from that user (here is May with id 2) by using following url:
|
||||
[https://4qm49vppc3.execute-api.us-east-1.amazonaws.com/Prod/itp4501_api/opponent/2](https://4qm49vppc3.execute-api.us-east-1.amazonaws.com/Prod/itp4501_api/opponent/2)
|
||||
The last digit 2 is the id of May.
|
||||
|
||||
The sample JSON string returned is shown below:
|
||||
```
|
||||
{"name": "May", "left": 5, "right": 5, "guess": 15}
|
||||
```
|
||||
|
||||
For the turn which the number is not guessed by opponent, you can ignore the value in the attribute "guess".
|
||||
|
||||
### Marking Guidelines
|
||||
You project will be assessed according to the items below.
|
||||
➢ Database initialisation
|
||||
➢ Level of completion
|
||||
➢ Correctness
|
||||
➢ UI design
|
||||
➢ Program design and implementation
|
||||
➢ Program style and comments
|
1
it114105/itp4501/Assignment/18-19/app/.gitignore
vendored
Normal file
1
it114105/itp4501/Assignment/18-19/app/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
/build
|
28
it114105/itp4501/Assignment/18-19/app/build.gradle
Normal file
28
it114105/itp4501/Assignment/18-19/app/build.gradle
Normal file
@@ -0,0 +1,28 @@
|
||||
apply plugin: 'com.android.application'
|
||||
|
||||
android {
|
||||
compileSdkVersion 28
|
||||
defaultConfig {
|
||||
applicationId "com.example.itp4501assignment"
|
||||
minSdkVersion 24
|
||||
targetSdkVersion 28
|
||||
versionCode 1
|
||||
versionName "1.0"
|
||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
minifyEnabled false
|
||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
||||
implementation 'com.android.support:appcompat-v7:28.0.0'
|
||||
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
|
||||
testImplementation 'junit:junit:4.12'
|
||||
androidTestImplementation 'com.android.support.test:runner:1.0.2'
|
||||
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
|
||||
}
|
21
it114105/itp4501/Assignment/18-19/app/proguard-rules.pro
vendored
Normal file
21
it114105/itp4501/Assignment/18-19/app/proguard-rules.pro
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
# Add project specific ProGuard rules here.
|
||||
# You can control the set of applied configuration files using the
|
||||
# proguardFiles setting in build.gradle.
|
||||
#
|
||||
# For more details, see
|
||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||
|
||||
# If your project uses WebView with JS, uncomment the following
|
||||
# and specify the fully qualified class name to the JavaScript interface
|
||||
# class:
|
||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||
# public *;
|
||||
#}
|
||||
|
||||
# Uncomment this to preserve the line number information for
|
||||
# debugging stack traces.
|
||||
#-keepattributes SourceFile,LineNumberTable
|
||||
|
||||
# If you keep the line number information, uncomment this to
|
||||
# hide the original source file name.
|
||||
#-renamesourcefileattribute SourceFile
|
@@ -0,0 +1,26 @@
|
||||
package com.example.itp4501assignment;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.test.InstrumentationRegistry;
|
||||
import android.support.test.runner.AndroidJUnit4;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* Instrumented test, which will execute on an Android device.
|
||||
*
|
||||
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
|
||||
*/
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class ExampleInstrumentedTest {
|
||||
@Test
|
||||
public void useAppContext() {
|
||||
// Context of the app under test.
|
||||
Context appContext = InstrumentationRegistry.getTargetContext();
|
||||
|
||||
assertEquals("com.example.itp4501assignment", appContext.getPackageName());
|
||||
}
|
||||
}
|
@@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.example.itp4501assignment">
|
||||
|
||||
<application
|
||||
android:allowBackup="true"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:roundIcon="@mipmap/ic_launcher_round"
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/AppTheme"
|
||||
android:usesCleartextTraffic="true">
|
||||
<activity android:name=".MainActivity">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity android:name=".GameMenuActivity"></activity>
|
||||
<activity android:name=".GameStartAcivity"></activity>
|
||||
<activity android:name=".UpdateInformation"></activity>
|
||||
<activity android:name=".PieChartActivity"></activity>
|
||||
<activity android:name=".GameLoadingActivity"></activity>
|
||||
<activity android:name=".GameGuessActivity"></activity>
|
||||
<activity android:name=".GameResultActivity"></activity>
|
||||
<activity android:name=".LoadForResult"></activity>
|
||||
</application>
|
||||
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
|
||||
</manifest>
|
@@ -0,0 +1,148 @@
|
||||
package com.example.itp4501assignment;
|
||||
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.database.sqlite.SQLiteException;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.view.animation.Animation;
|
||||
import android.view.animation.AnimationUtils;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
public class GameGuessActivity extends AppCompatActivity {
|
||||
|
||||
|
||||
int guess;
|
||||
String name;
|
||||
TextView tvRound;
|
||||
Intent i;
|
||||
LinearLayout lyQuestion, lyZero, lyFive, lyTen, lyfift, lyTwe;
|
||||
LinearLayout[] layouts;
|
||||
Animation animation;
|
||||
Handler handler = new Handler();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
protected void onCreate(Bundle savedInstanceState){
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.gamegues_main);// get Design layout in layout/gamegues_main
|
||||
animation= AnimationUtils.loadAnimation(this,R.anim.bounce); // instance the animation
|
||||
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
|
||||
lyQuestion=findViewById(R.id.lyQuestion);// set variable to adapter lyQuestion
|
||||
lyZero=findViewById(R.id.lyZero);// set variable to adapter lyZero
|
||||
lyFive=findViewById(R.id.lyFive);// set variable to adapter lyFive
|
||||
lyTen=findViewById(R.id.lyTen);// set variable to adapter lyTen
|
||||
lyfift=findViewById(R.id.lyfift);// set variable to adapter lyfift
|
||||
lyTwe=findViewById(R.id.lyTwe);// set variable to adapter lyTwe
|
||||
i = new Intent(this, LoadForResult.class); //instance the Intent
|
||||
i.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
// get the Intent is not original
|
||||
tvRound = findViewById(R.id.textRound);// set variable to adapter textRound
|
||||
tvRound.setText("Round: "+getIntent().getIntExtra("Round",0));
|
||||
//set the round text
|
||||
name=getIntent().getStringExtra("name"); //get the Intent value and store in name variable
|
||||
}
|
||||
public void onWindowFocusChanged(boolean hasFocus) { //when start the activity
|
||||
super.onWindowFocusChanged(hasFocus);
|
||||
if(hasFocus){
|
||||
lyZero.startAnimation(animation); //layout lyZero start the animation
|
||||
lyFive.startAnimation(animation);//layout lyFive start the animation
|
||||
lyTen.startAnimation(animation);//layout lyTen start the animation
|
||||
lyfift.startAnimation(animation);//layout lyfift start the animation
|
||||
lyTwe.startAnimation(animation);//layout lyTwe start the animation
|
||||
lyQuestion.startAnimation(animation);//layout lyQuestion start the animation
|
||||
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_STICKY);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
protected void onNewIntent(Intent intent) {
|
||||
super.onNewIntent(intent);
|
||||
setIntent(intent);// Confirm get the Intent and set the Intent is not original
|
||||
}
|
||||
|
||||
public void onClick(View view){
|
||||
if(view.getId()==R.id.lyZero || view.getId()==R.id.txtZero){ //check onClick value
|
||||
guess = 0; //store the onclick value to variable
|
||||
}else if (view.getId()==R.id.lyFive || view.getId()==R.id.txtFive){//check onClick value
|
||||
guess = 5; //store the onclick value to variable
|
||||
}else if (view.getId()==R.id.lyTen || view.getId()==R.id.txtTen){//check onClick value
|
||||
guess = 10; //store the onclick value to variable
|
||||
}else if (view.getId()==R.id.lyfift || view.getId()==R.id.txtfift){//check onClick value
|
||||
guess =15; //store the onclick value to variable
|
||||
}else if(view.getId()==R.id.lyTwe || view.getId()==R.id.txtTwe){//check onClick value
|
||||
guess =20; //store the onclick value to variable
|
||||
}
|
||||
|
||||
i.putExtra("id", getIntent().getStringExtra("id"));//put the Extra value to intent with the id key
|
||||
i.putExtra("Left", getIntent().getIntExtra("Left",0));//put the Extra value to intent with the Left key
|
||||
i.putExtra("Right", getIntent().getIntExtra("Right",0));//put the Extra value to intent with the Right key
|
||||
i.putExtra("startTime",getIntent().getLongExtra("startTime",0));//put the Extra value to intent with the startTime key
|
||||
i.putExtra("name",name);//put the Extra value to intent with the name key
|
||||
i.putExtra("Round",getIntent().getIntExtra("Round",0));//put the Extra value to intent with the Round key
|
||||
i.putExtra("guess",guess);//put the Extra value to intent with the guess key
|
||||
startActivity(i); //start intent
|
||||
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
|
||||
// display with animation
|
||||
finish(); //quit the game
|
||||
}
|
||||
public void finish() {
|
||||
super.finish();
|
||||
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
|
||||
//display with aniamtion
|
||||
}
|
||||
@Override
|
||||
public void onBackPressed() {//when not finish the game will display the alert message
|
||||
new AlertDialog.Builder(this) // set the alert message
|
||||
.setIcon(android.R.drawable.ic_dialog_alert) // display the wronging icon
|
||||
.setTitle("Closing Game") // set the alert message title
|
||||
.setMessage("Are you sure you want to quit this game?\nYou may Lost this game")
|
||||
// set the message description
|
||||
.setPositiveButton("Yes", new DialogInterface.OnClickListener()
|
||||
{
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {//Yes button
|
||||
insertDate(); // onClick the yes button will call the insertDate method
|
||||
finish(); // quit the activity
|
||||
}
|
||||
|
||||
})
|
||||
.setNegativeButton("No", null) // NO button
|
||||
.show(); // show the alert message
|
||||
}
|
||||
|
||||
public void insertDate(){
|
||||
SQLiteDatabase db;
|
||||
try {
|
||||
db = SQLiteDatabase.openDatabase("/data/data/com.example.itp4501assignment/GamesLog",
|
||||
null, SQLiteDatabase.OPEN_READWRITE);//open database
|
||||
String sql = "INSERT INTO GamesLog(gameTime, opponentName, winOrLost) values"
|
||||
+ "(?, ?, ?)"; // insert sql with the parameter
|
||||
|
||||
db.execSQL(sql, new String[]{0 + "", name, 0 + ""}); // execute the SQL with the ags
|
||||
db.close(); // database close
|
||||
}catch (SQLiteException e){
|
||||
Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); //show Error message
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,136 @@
|
||||
package com.example.itp4501assignment;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
|
||||
public class GameLoadingActivity extends AppCompatActivity {
|
||||
Intent intent;
|
||||
RelativeLayout relLayoutTop, relLayoutBottom;
|
||||
String name, id, country;
|
||||
FetchPagetask task=null;
|
||||
TextView tvLoading, tvName, tvCountry;
|
||||
Handler handler = new Handler();
|
||||
|
||||
Runnable runnable = new Runnable() {
|
||||
@Override
|
||||
public void run() { // set the runnable (thread)
|
||||
|
||||
relLayoutTop.setVisibility(View.VISIBLE); // display top relative Layout
|
||||
relLayoutBottom.setVisibility(View.VISIBLE); // display bottom relative Layout
|
||||
}
|
||||
};
|
||||
Runnable start = new Runnable() {
|
||||
@Override
|
||||
public void run() {// set the runnable (thread)
|
||||
intent.putExtra("id",id); // put the id to intent with id key
|
||||
intent.putExtra("name",name); // put the name to intent with name key
|
||||
startActivity(intent); // start activity
|
||||
|
||||
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
|
||||
//display with the animation
|
||||
finish();
|
||||
//quit the activity
|
||||
}
|
||||
};
|
||||
@Override
|
||||
public void onWindowFocusChanged(boolean hasFocus) {
|
||||
super.onWindowFocusChanged(hasFocus);
|
||||
if (hasFocus) {
|
||||
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_STICKY);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.gameload_main);// get Design layout in layout/gameload_main
|
||||
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
|
||||
tvLoading = findViewById(R.id.tvMatching);// set variable to adapter tvMatching
|
||||
tvName = findViewById(R.id.tvName);// set variable to adapter tvName
|
||||
tvCountry = findViewById(R.id.tvCountry);// set variable to adapter tvCountry
|
||||
relLayoutTop = findViewById(R.id.relLayoutTop);// set variable to adapter relLayoutTop
|
||||
relLayoutBottom = findViewById(R.id.relLayoutBottom);// set variable to adapter relLayoutBottom
|
||||
intent= new Intent(this, GameStartAcivity.class);//instance the intent object
|
||||
|
||||
if(task ==null ||
|
||||
task.getStatus().equals(AsyncTask.Status.FINISHED)){ // check the task is nul
|
||||
task = new FetchPagetask();
|
||||
task.execute("https://4qm49vppc3.execute-api.us-east-1.amazonaws.com/Prod/itp4501_api/opponent/0");
|
||||
//send the api url to FetchPagetask class
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
private class FetchPagetask extends AsyncTask<String, Integer, String> {
|
||||
|
||||
@Override
|
||||
protected String doInBackground(String... values) {
|
||||
InputStream inputStream = null;
|
||||
String result = "";
|
||||
URL url = null;
|
||||
|
||||
try {
|
||||
url = new URL(values[0]);// get the url in LoadForResult class
|
||||
HttpURLConnection con = (HttpURLConnection) url.openConnection(); //open the connection with the url
|
||||
con.setRequestMethod("GET"); // use the GET method
|
||||
con.connect(); //start to connect
|
||||
|
||||
inputStream = con.getInputStream(); // get the InputStream
|
||||
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); //set the bufferedReader with the bytes
|
||||
String line = ""; // instance the get value
|
||||
|
||||
while ((line = bufferedReader.readLine()) != null)
|
||||
result += line; // get the value in the API and store the string to variable result
|
||||
|
||||
inputStream.close(); // close the input Stream
|
||||
|
||||
} catch (Exception e) {
|
||||
result = e.getMessage(); // show the Error message
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
protected void onPostExecute(String result) { //after the execute DoInBackground get the result variable
|
||||
try {
|
||||
|
||||
JSONObject jObj = new JSONObject(result); // get the JSON
|
||||
id = jObj.getString("id");// get value in JSON with the id key
|
||||
name = jObj.getString("name");// get value in JSON with the name key
|
||||
country = jObj.getString("country");// get value in JSON with the country key
|
||||
|
||||
tvName.setText("Name: "+ name); //set text of the Name
|
||||
tvCountry.setText("Country: "+ country);//set text of the Country
|
||||
tvLoading.setText("Matched");//set text of the Loading
|
||||
handler.postDelayed(runnable, 1000); //1000 is the timeout for the animation
|
||||
handler.postDelayed(start,3000);//3000 is the timeout for the start the activity
|
||||
} catch (Exception e) {
|
||||
result = e.getMessage(); // show the error message
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,49 @@
|
||||
package com.example.itp4501assignment;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.view.View;
|
||||
|
||||
public class GameMenuActivity extends AppCompatActivity {
|
||||
|
||||
Intent intent;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.gamemenu_main);// get Design layout in layout/gamemenu_main
|
||||
}
|
||||
|
||||
public void onClick(View view){
|
||||
if(view.getId()==R.id.btnCancel){//if click cancel button
|
||||
finish(); // quit the game
|
||||
}else if(view.getId()==R.id.btnUpdateInf){//if click btnUpdateInf button
|
||||
intent = new Intent(this, UpdateInformation.class);
|
||||
// intent of UpdateInformation class
|
||||
startActivity(intent); //start Activity
|
||||
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
|
||||
//display with the animation
|
||||
|
||||
}else if(view.getId()==R.id.btnStart){//if click btnStart button
|
||||
intent = new Intent(this, GameLoadingActivity.class);
|
||||
// intent of GameLoadingActivity class
|
||||
startActivity(intent);//start Activity
|
||||
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
|
||||
//display with the animation
|
||||
|
||||
}else if(view.getId() == R.id.btnGraphic){//if click btnGraphic button
|
||||
intent = new Intent(this, PieChartActivity.class);
|
||||
// intent of GameLoadingActivity class
|
||||
startActivity(intent);//start Activity
|
||||
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
|
||||
//display with the animation
|
||||
}
|
||||
}
|
||||
|
||||
public void finish() {
|
||||
super.finish();
|
||||
overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right);
|
||||
//display with the animation when quit this activity
|
||||
}
|
||||
}
|
@@ -0,0 +1,215 @@
|
||||
package com.example.itp4501assignment;
|
||||
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.database.sqlite.SQLiteException;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
public class GameResultActivity extends AppCompatActivity {
|
||||
|
||||
|
||||
Intent i;
|
||||
TextView txtOpName, txtName, txtWinOrLost, txtGuess;
|
||||
ImageView imgOpLeft, imgOpRight, imgLeft, imgRight;
|
||||
Button btnResultContine, btnResultQuit;
|
||||
public static final String SHARED_PREFS = "RegPrefe";
|
||||
SharedPreferences sharedPreferences;
|
||||
|
||||
int opLeft,opRight,opGuess,left,right,guess,round;
|
||||
long startTime;
|
||||
long endTime =System.currentTimeMillis();
|
||||
String name, second, id;
|
||||
SQLiteDatabase db;
|
||||
|
||||
protected void onCreate(Bundle savedInstanceState){
|
||||
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.gameresult_main);// get Design layout in layout/gameresult_main
|
||||
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
|
||||
sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
|
||||
opLeft=getIntent().getExtras().getInt("opLeft");// set variable to get intent string opLeft
|
||||
opRight=getIntent().getExtras().getInt("opRight");// set variable to get intent string opRight
|
||||
opGuess=getIntent().getExtras().getInt("opGuess");// set variable to get intent string opGuess
|
||||
name =getIntent().getExtras().getString("name");// set variable to get intent string name
|
||||
left= getIntent().getExtras().getInt("Left");// set variable to get intent string Left
|
||||
right=getIntent().getExtras().getInt("Right");// set variable to get intent string Right
|
||||
guess=getIntent().getExtras().getInt("guess");// set variable to get intent string guess
|
||||
round = getIntent().getExtras().getInt("Round");// set variable to get intent string Round
|
||||
id=getIntent().getExtras().getString("id");// set variable to get intent string id
|
||||
startTime = getIntent().getExtras().getLong("startTime");// set variable to get intent string startTime
|
||||
txtOpName = findViewById(R.id.txtOpName);// set variable to adapter txtOpName
|
||||
txtName = findViewById(R.id.txtName);// set variable to adapter txtName
|
||||
txtWinOrLost = findViewById(R.id.txtWinOrLose);// set variable to adapter txtWinOrLose
|
||||
imgOpLeft = findViewById(R.id.imgOpLeft);// set variable to adapter imgOpLeft
|
||||
imgOpRight = findViewById(R.id.imgOpRight);// set variable to adapter imgOpRight
|
||||
imgLeft = findViewById(R.id.imgLeft);// set variable to adapter imgLeft
|
||||
imgRight = findViewById(R.id.imgRight);// set variable to adapter imgRight
|
||||
txtGuess = findViewById(R.id.txtGuess);// set variable to adapter txtGuess
|
||||
txtOpName.setText(name); //set Text of the opName
|
||||
txtName.setText(sharedPreferences.getString("regName",""));// set Text of owner name
|
||||
btnResultContine = findViewById(R.id.btnResultContine);// set variable to adapter btnResultContine
|
||||
btnResultQuit = findViewById(R.id.btnResultQuit);// set variable to adapter btnResultQuit
|
||||
|
||||
|
||||
if(left==0) //display left 0 image
|
||||
imgLeft.setImageResource(R.drawable.left);
|
||||
else if(left==5)//display left 5 image
|
||||
imgLeft.setImageResource(R.drawable.left_5);
|
||||
|
||||
if(right==0)//display right 0 image
|
||||
imgRight.setImageResource(R.drawable.right);
|
||||
else if(right==5)//display right 5 image
|
||||
imgRight.setImageResource(R.drawable.right_5);
|
||||
|
||||
if(opLeft==0)//display opponents left 0 image
|
||||
imgOpLeft.setImageResource(R.drawable.opright);
|
||||
else if(opLeft==5)//display opponents left 5 image
|
||||
imgOpLeft.setImageResource(R.drawable.opright_5);
|
||||
|
||||
if(opRight==0)//display opponents right 0 image
|
||||
imgOpRight.setImageResource(R.drawable.opleft);
|
||||
else if(opRight==5)//display opponents right 5 image
|
||||
imgOpRight.setImageResource(R.drawable.opleft_5);
|
||||
|
||||
|
||||
if(round==1 || round%2!=0) { // check use who guess
|
||||
txtGuess.setText("Your Guess: "+guess); // set txtGuess value
|
||||
if (opLeft + opRight + left + right == guess){ // if win
|
||||
txtWinOrLost.setText("You Win"); //set the Win Text
|
||||
btnResultContine.setText("Next Game"); //and display the button text
|
||||
insertData(true); // call the insert method
|
||||
}else{
|
||||
txtWinOrLost.setText("Deuce Round"); //print the Text of Deuce when Deuce Round
|
||||
}
|
||||
}else{
|
||||
txtGuess.setText("Opponent Guess: "+opGuess);// set txtGuess value of Opponent guess
|
||||
if(opLeft+opRight+left+right==opGuess) { // if Opponent win
|
||||
txtWinOrLost.setText("You Lose"); //set the Lose Text
|
||||
btnResultContine.setText("Next Game"); //and display the button text
|
||||
insertData(false);// call the insert method
|
||||
}else{
|
||||
txtWinOrLost.setText("Deuce Round");//print the Text of Deuce when Deuce Round
|
||||
}
|
||||
}
|
||||
}
|
||||
public void insertData(boolean winOrLost){ // insert data win or lost
|
||||
int changeWinLostVal;
|
||||
if(winOrLost) //check the value is lost or win and check to the integer
|
||||
changeWinLostVal = 1; // if win
|
||||
else
|
||||
changeWinLostVal = 0; // if lost
|
||||
try {
|
||||
second = ((endTime - startTime) / 1000) + ""; // finsih the game time
|
||||
db = SQLiteDatabase.openDatabase("/data/data/com.example.itp4501assignment/GamesLog",
|
||||
null, SQLiteDatabase.OPEN_READWRITE); //open database
|
||||
String sql = "INSERT INTO GamesLog(gameTime, opponentName, winOrLost) values"
|
||||
+ "(?, ?, ?)"; // insert game result SQL with the parameter
|
||||
|
||||
db.execSQL(sql, new String[]{second, name, changeWinLostVal + ""}); // Run the SQL
|
||||
db.close(); // database close
|
||||
}catch (Exception e){
|
||||
Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
|
||||
//Show the Error Message
|
||||
}
|
||||
}
|
||||
|
||||
protected void onNewIntent(Intent intent) {
|
||||
super.onNewIntent(intent);// Confirm get the Intent and set the Intent is not original
|
||||
setIntent(intent);
|
||||
}
|
||||
@Override
|
||||
public void onWindowFocusChanged(boolean hasFocus) {
|
||||
super.onWindowFocusChanged(hasFocus);
|
||||
if (hasFocus) {
|
||||
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_STICKY);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void onClick(View view){
|
||||
if(view.getId()==R.id.btnResultContine) {
|
||||
if (txtWinOrLost.getText().toString() == "You Win" || txtWinOrLost.getText().toString() == "You Lose") {
|
||||
//check if Lose or WIn
|
||||
i = new Intent(this, GameLoadingActivity.class);
|
||||
//will have the button to play next game
|
||||
i.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
} else if (txtWinOrLost.getText().toString() == "Deuce Round") {
|
||||
//check the game is not win or lost
|
||||
i = new Intent(this, GameStartAcivity.class);
|
||||
//will have the button to continue the game
|
||||
i.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
// get the Intent is not original
|
||||
i.putExtra("Round", round + 1);
|
||||
//put the Extra value to intent with the Round key
|
||||
i.putExtra("name", name);
|
||||
//put the Extra value to intent with the name key
|
||||
i.putExtra("id", id);
|
||||
//put the Extra value to intent with the id key
|
||||
}
|
||||
startActivity(i);
|
||||
//start Activity with animation
|
||||
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
|
||||
finish();// quit the game
|
||||
}else if(view.getId()==R.id.btnResultQuit &&txtWinOrLost.getText().toString() == "Deuce Round"){
|
||||
onBackPressed();
|
||||
}else if(view.getId()==R.id.btnResultQuit){
|
||||
// check round is not finish
|
||||
finish();
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
if(txtWinOrLost.getText().toString()=="Deuce Round") { // if Game is not finish and the user want to quit the game
|
||||
new AlertDialog.Builder(this) // set alert message
|
||||
.setIcon(android.R.drawable.ic_dialog_alert) // set the alert icon
|
||||
.setTitle("Closing Game") // set the Title in alert message
|
||||
.setMessage("Are you sure you want to quit this game?\nYou may Lost this game") //set the message
|
||||
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) { // when click yes button
|
||||
insertDate(); // call the insert method
|
||||
finish(); // quit the activity
|
||||
}
|
||||
|
||||
})
|
||||
.setNegativeButton("No", null) // No button
|
||||
.show(); // show message
|
||||
}else {
|
||||
finish(); //quit the activity
|
||||
}
|
||||
}
|
||||
|
||||
public void insertDate(){
|
||||
SQLiteDatabase db;
|
||||
try {
|
||||
db = SQLiteDatabase.openDatabase("/data/data/com.example.itp4501assignment/GamesLog",
|
||||
null, SQLiteDatabase.OPEN_READWRITE);//open database
|
||||
String sql = "INSERT INTO GamesLog(gameTime, opponentName, winOrLost) values"
|
||||
+ "(?, ?, ?)";// set the insert sql with parameter
|
||||
|
||||
db.execSQL(sql, new String[]{0 + "", name, 0 + ""});//execute SQL with args
|
||||
db.close(); //database close
|
||||
}catch (SQLiteException e){
|
||||
Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
|
||||
//Show error message
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,205 @@
|
||||
package com.example.itp4501assignment;
|
||||
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.database.sqlite.SQLiteException;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class GameStartAcivity extends AppCompatActivity {
|
||||
|
||||
long startTime =System.currentTimeMillis();
|
||||
ImageView btn00, btn05, btn50, btn55, selectedView;
|
||||
TextView tvError, tvRound;
|
||||
String name;
|
||||
boolean selected = false;
|
||||
int left, right, count;
|
||||
Intent i;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.gamestart_main);// get Design layout in layout/gamestart_main
|
||||
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
|
||||
btn00 = findViewById(R.id.btn00);// set variable to adapter btn00
|
||||
btn05 = findViewById(R.id.btn05);// set variable to adapter btn05
|
||||
btn50 = findViewById(R.id.btn50);// set variable to adapter btn50
|
||||
btn55 = findViewById(R.id.btn55);
|
||||
tvError = findViewById(R.id.textError);// set variable to adapter textError
|
||||
tvRound = findViewById(R.id.textRound);// set variable to adapter textRound
|
||||
selectedView = findViewById(R.id.imgVewSelected);// set variable to adapter imgVewSelected
|
||||
tvRound = findViewById(R.id.textRound);// set variable to adapter textRound
|
||||
name=getIntent().getStringExtra("name");// set variable to get intent string name
|
||||
|
||||
if(getIntent().hasExtra("Round"))// check whether new round
|
||||
count = getIntent().getIntExtra("Round",0); // not new round get round number
|
||||
|
||||
else
|
||||
count=1; // new round set 1
|
||||
|
||||
tvRound.setText("Round: "+count); // setText with Round
|
||||
|
||||
|
||||
}
|
||||
public void onClick(View view) {
|
||||
if (view.getId() == R.id.btn00) { // if select the image will display bigger size img
|
||||
btn00.setImageResource(R.drawable.gamestart_00sel); // selected img button img change
|
||||
btn05.setImageResource(R.drawable.gamestart_05); // default img
|
||||
btn50.setImageResource(R.drawable.gamestart_50); // default img
|
||||
btn55.setImageResource(R.drawable.gamestart_55); // default img
|
||||
left = 0; //set the left value
|
||||
right = 0; // set the right value
|
||||
selected = true; //set selected
|
||||
selectedView.setImageResource(R.drawable.gamestart_cardpin_00);
|
||||
// display the selected image
|
||||
|
||||
} else if (view.getId() == R.id.btn05) {
|
||||
btn05.setImageResource(R.drawable.gamestart_05sel); // selected img button img change
|
||||
btn50.setImageResource(R.drawable.gamestart_50);// default img
|
||||
btn55.setImageResource(R.drawable.gamestart_55);// default img
|
||||
btn00.setImageResource(R.drawable.gamestart_00);// default img
|
||||
left = 0;//set the left value
|
||||
right = 5;// set the right value
|
||||
selected = true;//set selected
|
||||
selectedView.setImageResource(R.drawable.gamestart_cardpin_05);
|
||||
} else if (view.getId() == R.id.btn50) {
|
||||
btn50.setImageResource(R.drawable.gamestart_50sel); // selected img button img change
|
||||
btn55.setImageResource(R.drawable.gamestart_55);// default img
|
||||
btn00.setImageResource(R.drawable.gamestart_00);// default img
|
||||
btn05.setImageResource(R.drawable.gamestart_05);// default img
|
||||
selected = true;//set selected
|
||||
left = 5;//set the left value
|
||||
right = 0;// set the right value
|
||||
selectedView.setImageResource(R.drawable.gamestart_cardpin_50);
|
||||
} else if (view.getId() == R.id.btn55) {
|
||||
btn55.setImageResource(R.drawable.gamestart_55sel); // selected img button img change
|
||||
btn00.setImageResource(R.drawable.gamestart_00);// default img
|
||||
btn05.setImageResource(R.drawable.gamestart_05);// default img
|
||||
btn50.setImageResource(R.drawable.gamestart_50);// default img
|
||||
selected = true;//set selected
|
||||
selectedView.setImageResource(R.drawable.gamestart_cardpin_55);
|
||||
left = 5;//set the left value
|
||||
right = 5;// set the right value
|
||||
}
|
||||
}
|
||||
public void finish() {
|
||||
super.finish();
|
||||
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
|
||||
// if quit the activity will use this animation
|
||||
}
|
||||
|
||||
public void next(View view){
|
||||
if (!selected) //check whether select one
|
||||
tvError.setText("You should choice one"); //display error message
|
||||
else {
|
||||
|
||||
if (count == 1 || count % 2 != 0) { // check round no
|
||||
i = new Intent(this, GameGuessActivity.class);
|
||||
// should choice the guess
|
||||
} else {
|
||||
i = new Intent(this, LoadForResult.class);
|
||||
// not choice the guess
|
||||
}
|
||||
i.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
// get the Intent is not original
|
||||
i.putExtra("id", getIntent().getStringExtra("id"));
|
||||
//put the Extra value to intent with the id key
|
||||
i.putExtra("Left", left);
|
||||
//put the Extra value to intent with the Left key
|
||||
i.putExtra("Right", right);
|
||||
//put the Extra value to intent with the Right key
|
||||
i.putExtra("startTime", startTime);
|
||||
//put the Extra value to intent with the startTime key
|
||||
i.putExtra("Round", count);
|
||||
//put the Extra value to intent with the Round key
|
||||
i.putExtra("name",name);
|
||||
//put the Extra value to intent with the name key
|
||||
startActivity(i);
|
||||
// start the activity
|
||||
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
|
||||
// start the activity with the animation
|
||||
finish();
|
||||
// quit the activity
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void onWindowFocusChanged(boolean hasFocus) {
|
||||
super.onWindowFocusChanged(hasFocus);
|
||||
if (hasFocus) {
|
||||
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_STICKY);
|
||||
}
|
||||
}
|
||||
|
||||
protected void onNewIntent(Intent intent) {
|
||||
super.onNewIntent(intent);
|
||||
setIntent(intent);// Confirm get the Intent and set the Intent is not original
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {//when not finish the game will display the alert message
|
||||
new AlertDialog.Builder(this) // set the alert message
|
||||
.setIcon(android.R.drawable.ic_dialog_alert) // display the wronging icon
|
||||
.setTitle("Closing Game") // set the alert message title
|
||||
.setMessage("Are you sure you want to quit this game?\nYou may Lost this game")
|
||||
// set the message description
|
||||
.setPositiveButton("Yes", new DialogInterface.OnClickListener()
|
||||
{
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {//Yes button
|
||||
insertDate(); // onClick the yes button will call the insertDate method
|
||||
finish(); // quit the activity
|
||||
}
|
||||
|
||||
})
|
||||
.setNegativeButton("No", null) // NO button
|
||||
.show(); // show the alert message
|
||||
}
|
||||
|
||||
public void insertDate(){
|
||||
SQLiteDatabase db;
|
||||
try {
|
||||
db = SQLiteDatabase.openDatabase("/data/data/com.example.itp4501assignment/GamesLog",
|
||||
null, SQLiteDatabase.OPEN_READWRITE);//open database
|
||||
String sql = "INSERT INTO GamesLog(gameTime, opponentName, winOrLost) values"
|
||||
+ "(?, ?, ?)"; // insert sql with the parameter
|
||||
|
||||
db.execSQL(sql, new String[]{0 + "", name, 0 + ""}); // execute the SQL with the ags
|
||||
db.close(); // database close
|
||||
}catch (SQLiteException e){
|
||||
Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); //show Error message
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@@ -0,0 +1,160 @@
|
||||
package com.example.itp4501assignment;
|
||||
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.database.sqlite.SQLiteException;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.Toast;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
|
||||
public class LoadForResult extends AppCompatActivity {
|
||||
|
||||
FetchPagetask task=null;
|
||||
String id, name;
|
||||
int opLeft, opRight, opGuess;
|
||||
Intent i;
|
||||
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.loadforresult_main);// get Design layout in layout/loadforresult_main
|
||||
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
|
||||
id = getIntent().getStringExtra("id"); // set the variable to store the Intent value
|
||||
name=getIntent().getStringExtra("name");// set the variable to store the Intent value
|
||||
i =new Intent(LoadForResult.this, GameResultActivity.class);// instance the Intent
|
||||
i.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP); // NOT GET THE orgial Intent
|
||||
if(task ==null ||
|
||||
task.getStatus().equals(AsyncTask.Status.FINISHED)){ // check task whether null
|
||||
task = new FetchPagetask(); // instance the FetchPagetask Class
|
||||
task.execute("https://4qm49vppc3.execute-api.us-east-1.amazonaws.com/Prod/itp4501_api/opponent/"+id);
|
||||
//send the API url to FetchPagetask class
|
||||
|
||||
}
|
||||
}
|
||||
protected void onNewIntent(Intent intent) {
|
||||
super.onNewIntent(intent);
|
||||
setIntent(intent); // Confirm get the Intent and set the Intent is not original
|
||||
}
|
||||
@Override
|
||||
public void onBackPressed() { //when not finish the game will display the alert message
|
||||
new AlertDialog.Builder(this)
|
||||
.setIcon(android.R.drawable.ic_dialog_alert)
|
||||
.setTitle("Closing Game") // alert message Title
|
||||
.setMessage("Are you sure you want to quit this game?\nYou may Lost this game") // alert message Description
|
||||
.setPositiveButton("Yes", new DialogInterface.OnClickListener()
|
||||
{
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) { // Yes button
|
||||
insertDate(); //onClick the Yes button will call the insertDate method
|
||||
finish(); // end the activity
|
||||
}
|
||||
|
||||
})
|
||||
.setNegativeButton("No", null) // NO button
|
||||
.show(); // show alert message
|
||||
}
|
||||
@Override
|
||||
public void onWindowFocusChanged(boolean hasFocus) {
|
||||
super.onWindowFocusChanged(hasFocus);
|
||||
if (hasFocus) {
|
||||
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_STICKY);
|
||||
}
|
||||
}
|
||||
|
||||
public void insertDate(){
|
||||
SQLiteDatabase db;
|
||||
try {
|
||||
db = SQLiteDatabase.openDatabase("/data/data/com.example.itp4501assignment/GamesLog",
|
||||
null, SQLiteDatabase.OPEN_READWRITE); //open Database
|
||||
String sql = "INSERT INTO GamesLog(gameTime, opponentName, winOrLost) values"
|
||||
+ "(?, ?, ?)"; //insert the lose sql with parameter
|
||||
|
||||
db.execSQL(sql, new String[]{0 + "", name, 0 + ""});
|
||||
// execute the SQL and include the opp name
|
||||
db.close();//database close
|
||||
}catch (SQLiteException e){
|
||||
Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); //show error message
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
private class FetchPagetask extends AsyncTask<String, Integer, String> {
|
||||
|
||||
@Override
|
||||
protected String doInBackground(String... values) {
|
||||
InputStream inputStream = null;
|
||||
String result = "";
|
||||
URL url = null;
|
||||
|
||||
try {
|
||||
url = new URL(values[0]);// get the url in LoadForResult class
|
||||
HttpURLConnection con = (HttpURLConnection) url.openConnection(); //open the connection with the url
|
||||
con.setRequestMethod("GET"); // use the GET method
|
||||
con.connect(); //start to connect
|
||||
|
||||
inputStream = con.getInputStream(); // get the InputStream
|
||||
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); //set the bufferedReader with the bytes
|
||||
String line = ""; // instance the get value
|
||||
|
||||
while ((line = bufferedReader.readLine()) != null)
|
||||
result += line; // get the value in the API and store the string to variable result
|
||||
|
||||
inputStream.close(); // close the input Stream
|
||||
|
||||
} catch (Exception e) {
|
||||
result = e.getMessage(); // show the Error message
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
protected void onPostExecute(String result) { //after the execute DoInBackground get the result variable
|
||||
try {
|
||||
|
||||
JSONObject jObj = new JSONObject(result); // get the JSON
|
||||
opLeft = jObj.getInt("left"); // get value in JSON with the left key
|
||||
opRight = jObj.getInt("right"); // get value in JSON with the right key
|
||||
opGuess = jObj.getInt("guess"); // get value in JSON with the guess key
|
||||
|
||||
i.putExtra("id", getIntent().getExtras().getString("id")); //put the Extra value to intent with the id key
|
||||
i.putExtra("Left", getIntent().getExtras().getInt("Left"));//put the Extra value to intent with the Left key
|
||||
i.putExtra("Right", getIntent().getExtras().getInt("Right"));//put the Extra value to intent with the Right key
|
||||
i.putExtra("startTime",getIntent().getExtras().getLong("startTime"));//put the Extra value to intent with the startTime key
|
||||
i.putExtra("Round",getIntent().getExtras().getInt("Round"));//put the Extra value to intent with the Round key
|
||||
i.putExtra("name",name);//put the Extra value to intent with the name key
|
||||
|
||||
if(getIntent().hasExtra("guess")) // get the guess
|
||||
i.putExtra("guess",getIntent().getExtras().getInt("guess"));//put the Extra value to intent with the guess key
|
||||
i.putExtra("opLeft",opLeft);//put the Extra value to intent with the opLeft key
|
||||
i.putExtra("opRight",opRight);//put the Extra value to intent with the opRight key
|
||||
i.putExtra("opGuess",opGuess);//put the Extra value to intent with the opGuess key
|
||||
startActivity(i); // start int intent
|
||||
finish(); // quit the finish
|
||||
|
||||
} catch (JSONException e) {
|
||||
result = e.getMessage(); //show the error message
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,144 @@
|
||||
package com.example.itp4501assignment;
|
||||
|
||||
import android.app.DatePickerDialog;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.database.sqlite.SQLiteException;
|
||||
import android.graphics.drawable.AnimationDrawable;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.DatePicker;
|
||||
import android.widget.Toast;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.util.Calendar;
|
||||
|
||||
public class MainActivity extends AppCompatActivity {
|
||||
LinearLayout layoutRegbg;
|
||||
AnimationDrawable animationDrawable;
|
||||
DateFormat fmtDate = DateFormat.getDateInstance(DateFormat.MEDIUM);
|
||||
EditText etDate;
|
||||
EditText etName;
|
||||
EditText etEmail;
|
||||
EditText etPhone;
|
||||
Button btnSubmit;
|
||||
|
||||
|
||||
|
||||
Calendar myCalendar= Calendar.getInstance(); // Instance the DataTime Picker
|
||||
DatePickerDialog.OnDateSetListener d = new
|
||||
DatePickerDialog.OnDateSetListener() {
|
||||
public void onDateSet(DatePicker view, int year,
|
||||
int monthOfYear, int dayOfMonth) {
|
||||
myCalendar.set(Calendar.YEAR, year); // set the year
|
||||
myCalendar.set(Calendar.MONTH, monthOfYear); // set the Month
|
||||
myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth); // set the Dat
|
||||
updateLabel();
|
||||
}
|
||||
};
|
||||
public static final String SHARED_PREFS = "RegPrefe"; // Instance the SharedPreferences FIle Name
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_main); // set the design layout
|
||||
layoutRegbg = findViewById(R.id.bg_reg_layout); // set the adapter of the drawable file
|
||||
animationDrawable =(AnimationDrawable) layoutRegbg.getBackground(); // and to the variable
|
||||
animationDrawable.setEnterFadeDuration(3000); // set the start anim with Fade in
|
||||
animationDrawable.setExitFadeDuration(3000); // and set the end anim with Fade out
|
||||
animationDrawable.start(); // start the animation
|
||||
SharedPreferences loginPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE); //instance the sharedPreferences
|
||||
String userName = loginPreferences.getString("regName",null); // try to get reg Name in sharedPreferences
|
||||
if(userName!=null){ // if have the Name, that mean users is registed
|
||||
Intent intent = new Intent(this, GameMenuActivity.class); // new the intent of the Game Menu class
|
||||
startActivity(intent); // display the GameMenu Class
|
||||
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left); // and display with this animation
|
||||
finish(); // Quit this class
|
||||
}
|
||||
|
||||
etDate = findViewById(R.id.regDate); // set the variable to connect the Date TextView
|
||||
etName = findViewById(R.id.regName); // set the variable to connect the Name TextView
|
||||
etEmail = findViewById(R.id.regEmail); // set the variable to connect the Email TextView
|
||||
etPhone = findViewById(R.id.regPhone); // set the variable to connect the Phone TextView
|
||||
btnSubmit = findViewById(R.id.btnSubmit); // set the variable to connect the submit Button
|
||||
etDate.setOnClickListener(new View.OnClickListener() {
|
||||
public void onClick(View v) { // set the Date Picker to set the Date Format
|
||||
new DatePickerDialog(MainActivity.this, d,
|
||||
myCalendar.get(Calendar.YEAR), // set the Year
|
||||
myCalendar.get(Calendar.MONTH), // set the month
|
||||
myCalendar.get(Calendar.DAY_OF_MONTH)).show(); //set the day
|
||||
updateLabel(); // update the TextView of selected Date
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
}
|
||||
private void updateLabel() {
|
||||
etDate.setText(fmtDate.format(myCalendar.getTime()));
|
||||
} // update the editText of the selected Date value
|
||||
|
||||
public void onClick(View view){
|
||||
if(TextUtils.isEmpty(etName.getText())) // check the Name editText whether null
|
||||
etName.setError( "Name is required!" ); // display the require message
|
||||
else if(TextUtils.isEmpty(etDate.getText())) // check the Date whether null
|
||||
etDate.setError("Date is required!"); // display the require message
|
||||
else if(TextUtils.isEmpty(etPhone.getText())) // check the phone whether null
|
||||
etPhone.setError("Phone is required!"); //display the require message
|
||||
else if (TextUtils.isEmpty(etEmail.getText())) // check the email whether null
|
||||
etEmail.setError("Email is required!");// display the require message
|
||||
else {
|
||||
//Not the editText is null will instance the SharedPreferences
|
||||
SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
|
||||
SharedPreferences.Editor editor = sharedPreferences.edit();
|
||||
editor.putString("regName", etName.getText().toString());
|
||||
//put the Name editText value to SharedPreferences with "regName" key
|
||||
editor.putString("regDate", etDate.getText().toString());
|
||||
//put the Date editText value to SharedPreferences with "regDate" key
|
||||
editor.putString("regEmail", etEmail.getText().toString());
|
||||
//put the Email editText value to SharedPreferences with "regEmail" key
|
||||
editor.putString("regPhone", etPhone.getText().toString());
|
||||
//put the regPhone editText value to SharedPreferences with "regPhone" key
|
||||
editor.commit(); // commit the sharedPreferences
|
||||
createTable(); // when the registed the game will create the database
|
||||
Intent intent = new Intent(this, GameMenuActivity.class);
|
||||
// set the intent to connect the GameMenuActivity class
|
||||
startActivity(intent);
|
||||
// Show the GameMenuActivity Class
|
||||
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
|
||||
// show the class with the animation
|
||||
finish(); // quit the class
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void createTable(){
|
||||
try{
|
||||
SQLiteDatabase db; // set the variable of Database
|
||||
db=SQLiteDatabase.openDatabase("/data/data/com.example.itp4501assignment/GamesLog",
|
||||
null, SQLiteDatabase.CREATE_IF_NECESSARY); //create the Database will the patch
|
||||
String sql = "DROP TABLE if exists GamesLog;"; //Drop the Table SQL avoid exception occured
|
||||
db.execSQL(sql); // run SQL
|
||||
sql = "CREATE TABLE GamesLog( ID INTEGER PRIMARY KEY AUTOINCREMENT, gameDate DATETIME DEFAULT CURRENT_DATE,"+
|
||||
"gameTime text, opponentName text, winOrLost INT); ";// CREATE Table SQL
|
||||
db.execSQL(sql); // run SQL
|
||||
db.close(); // close the database
|
||||
} catch (SQLiteException e) {
|
||||
Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); //show the error message with Toast
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,176 @@
|
||||
package com.example.itp4501assignment;
|
||||
|
||||
import android.content.Context;
|
||||
import android.database.Cursor;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.database.sqlite.SQLiteException;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.Typeface;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.Toast;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
|
||||
|
||||
public class PieChartActivity extends AppCompatActivity {
|
||||
SQLiteDatabase db;
|
||||
int countTRUE;
|
||||
int countFALSE;
|
||||
float countTruePre = 0, countFalsePre = 0;
|
||||
DecimalFormat decimalFormat = new DecimalFormat("0.00"); // set the val format with 0.00
|
||||
Cursor cursor = null;
|
||||
String sql;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(new Panel(this));
|
||||
|
||||
try {
|
||||
// Create a database if it does not exist
|
||||
db = SQLiteDatabase.openDatabase("/data/data/com.example.itp4501assignment/GamesLog",
|
||||
null, SQLiteDatabase.OPEN_READONLY); // open the Database with the path
|
||||
|
||||
cursor = db.rawQuery("SELECT COUNT(*) FROM GamesLog WHERE winOrLost=0",null); // COUNT the Lose SQL
|
||||
|
||||
if (cursor.moveToNext()) //check the sql whether have the result
|
||||
countFALSE = cursor.getInt(0); // put the result to variable
|
||||
else
|
||||
countFALSE = 0; // if not result put the zero to variable
|
||||
cursor = db.rawQuery("SELECT COUNT(*) FROM GamesLog WHERE winOrLost=1",null); // COUNT the WIN SQL
|
||||
if (cursor.moveToNext()) // check the sql whether have the result
|
||||
countTRUE = cursor.getInt(0); //put the result to variable
|
||||
else
|
||||
countTRUE = 0;// if not result put the zero to variable
|
||||
|
||||
if(countTRUE==0)
|
||||
countTruePre=0;
|
||||
else
|
||||
countTruePre = countTRUE / (float) (countTRUE + countFALSE); // calculate the Win percentage
|
||||
if(countFALSE==0)
|
||||
countFalsePre=0;
|
||||
else
|
||||
countFalsePre = countFALSE / (float) (countTRUE + countFALSE); // calculate the Lose percentage
|
||||
|
||||
} catch (SQLiteException e) {
|
||||
Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); // show the error message
|
||||
// if the exception occured set the default value
|
||||
countFALSE = 0;
|
||||
countTRUE = 0;
|
||||
countTruePre = (float) 0;
|
||||
countFalsePre = (float) 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class Panel extends View {
|
||||
public Panel(Context context) {
|
||||
|
||||
super(context); // set the panel to draw
|
||||
|
||||
}
|
||||
|
||||
public void onDraw(Canvas c) {
|
||||
super.onDraw(c);
|
||||
Paint paint = new Paint();
|
||||
paint.setStyle(Paint.Style.FILL); //set the paint is Fill
|
||||
paint.setColor(Color.WHITE); // set the background is white
|
||||
paint.setAntiAlias(true); // set the draw the shape is antiAlias
|
||||
paint.setColor(Color.BLACK);
|
||||
paint.setStrokeWidth(2);
|
||||
//drawLine(float startX, float startY, float stopX, float stopY, Paint paint)
|
||||
c.drawLine(150, 150, 150, 850, paint);// draw the bar chart Y line
|
||||
c.drawLine(150, 850, 980, 850, paint); // draw the bar chary X line
|
||||
//Rect TRUE //(150-848)/100*countTruePre
|
||||
paint.setColor(Color.GREEN); // set the draw color is green
|
||||
c.drawRect(284, (848 - 150) - ((848 - 150) * countTruePre) + 150, 484, 848, paint);
|
||||
// draw the win Rectangle
|
||||
c.drawCircle(300, 1090, 90, paint);
|
||||
// draw the win Circle
|
||||
paint.setColor(Color.RED); // set the draw color is red
|
||||
c.drawRect(634, (848 - 150) - ((848 - 150) * countFalsePre) + 150, 834, 848, paint);
|
||||
// draw the Lose Rectangle
|
||||
c.drawCircle(300, 1330, 90, paint);
|
||||
// draw the Lose Circle
|
||||
// %
|
||||
paint.setColor(Color.BLACK);
|
||||
paint.setStyle(Paint.Style.FILL);
|
||||
paint.setTextSize(30); //set the draw text text size is 30
|
||||
paint.setTypeface(Typeface.SERIF);// font family is SERID
|
||||
c.drawText(decimalFormat.format(countTruePre * 100 )+ "%", 336, (848 - 150) - ((848 - 150) * countTruePre) + 120, paint);
|
||||
//draw the bar chart of WIN %
|
||||
c.drawText(decimalFormat.format(countFalsePre * 100) + "%", 679, (848 - 150) - ((848 - 150) * countFalsePre) + 120, paint);
|
||||
//draw the bar chart of Lose %
|
||||
paint.setTextSize(35);//set the draw text text size is 35
|
||||
c.drawText("Count: " + countTRUE + ",", 420, 1088, paint); //draw the count vale in circle right side
|
||||
c.drawText("Percentage: " + decimalFormat.format(countTruePre * 100) + "%", 420, 1135, paint);
|
||||
// draw the win Percentage val in the circle right side
|
||||
c.drawText("Count: " + countFALSE + ",", 420, 1338, paint);
|
||||
//draw the lose Percentage val in the circle right side
|
||||
c.drawText("Percentage: " + decimalFormat.format(countFalsePre * 100) + "%", 420, 1385, paint);
|
||||
// draw the lose Percentage val in the circle right side
|
||||
//set the font family
|
||||
paint.setTypeface(Typeface.create("Arial", Typeface.BOLD));
|
||||
c.drawText("WIN", 350, 900, paint); // draw the Win in bar chart X title
|
||||
c.drawText("LOSE", 693, 900, paint); // draw the LOSE in bar chart Y title
|
||||
paint.setTextSize(50); //set Text Size is 50
|
||||
c.drawText("WIN", 254, 1110, paint); // draw the WIN in Circle
|
||||
c.drawText("LOSE", 243, 1352, paint); // draw the LOSE in Circle
|
||||
|
||||
|
||||
c.drawText("GameDate", 75, 1575, paint); // draw the GameDate column title
|
||||
c.drawText("OpponentName", 355, 1575, paint); // draw the OpponentName title
|
||||
c.drawText("winOrLost", 760, 1575, paint); // draw the winOrLost column title
|
||||
paint.setStyle(Paint.Style.FILL);
|
||||
paint.setTypeface(Typeface.DEFAULT); // set the default font family
|
||||
int locationY=1575+70; // set the row margin-bottom
|
||||
String winOrLost;
|
||||
try {
|
||||
cursor = null;
|
||||
cursor = db.rawQuery("SELECT * FROM GamesLog ORDER BY gameDate DESC limit 3", null);
|
||||
//GET the least 3 Game LOG information SQL
|
||||
while (cursor.moveToNext()) {
|
||||
String gameDate = cursor.getString(cursor.getColumnIndex("gameDate"));
|
||||
//get the Column gameDate val and store to gameDate variable
|
||||
String opponentName = cursor.getString(cursor.getColumnIndex("opponentName"));
|
||||
//get the Column opponentName val and store to opponentName variable
|
||||
|
||||
int checkval = cursor.getInt(cursor.getColumnIndex("winOrLost"));
|
||||
//get the winOrLost val and store to checkval variable
|
||||
|
||||
c.drawText(gameDate, 70, locationY, paint); // draw the gameDate
|
||||
c.drawText(opponentName, 465, locationY, paint); // draw the opponent Name
|
||||
if(checkval == 0) // check the winORLost Val
|
||||
winOrLost = "LOST"; // if 0 equal to LOST
|
||||
else
|
||||
winOrLost = "WINS"; // NOT 0 is Win
|
||||
c.drawText(winOrLost, 805, locationY, paint); //draw the win OR Lost
|
||||
locationY+=70; // set the margin-bottom
|
||||
|
||||
}
|
||||
} catch (SQLiteException e) {
|
||||
|
||||
}
|
||||
paint.setTextSize(30);
|
||||
c.drawText("Last 3 Game History", 70, locationY-20, paint); //draw the hits of last 4 game history
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
public void finish() {
|
||||
super.finish();
|
||||
overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right); // set the animation of quit the class
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@@ -0,0 +1,100 @@
|
||||
package com.example.itp4501assignment;
|
||||
|
||||
import android.app.DatePickerDialog;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.view.View;
|
||||
import android.widget.DatePicker;
|
||||
import android.widget.EditText;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.util.Calendar;
|
||||
|
||||
public class UpdateInformation extends AppCompatActivity {
|
||||
EditText etDate;
|
||||
EditText etName;
|
||||
EditText etEmail;
|
||||
EditText etPhone;
|
||||
DateFormat fmtDate = DateFormat.getDateInstance(DateFormat.MEDIUM); // set the Date Format
|
||||
|
||||
String sharedPetName, sharedPetDate, sharedPetEmail, sharedPetPhone;
|
||||
TextView tvUsername;
|
||||
public static final String SHARED_PREFS = "RegPrefe";// instance the sharedPreferences
|
||||
SharedPreferences sharedPreferences;
|
||||
|
||||
Calendar dtCalendar= Calendar.getInstance(); //set the Date picker
|
||||
DatePickerDialog.OnDateSetListener d = new
|
||||
DatePickerDialog.OnDateSetListener() {
|
||||
public void onDateSet(DatePicker view, int year,
|
||||
int monthOfYear, int dayOfMonth) {
|
||||
dtCalendar.set(Calendar.YEAR, year);
|
||||
dtCalendar.set(Calendar.MONTH, monthOfYear);
|
||||
dtCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
|
||||
updateLabel();
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.update_inf_main); // set the design interface of layout/update_inf_main
|
||||
sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE); // getSharedPreferences
|
||||
etDate = findViewById(R.id.txtDate);// set variable to connect the editText
|
||||
etName = findViewById(R.id.txtName);// set variable to connect the editText
|
||||
etEmail = findViewById(R.id.txtEmail);// set variable to connect the editText
|
||||
etPhone = findViewById(R.id.txtPhone);// set variable to connect the editText
|
||||
tvUsername = findViewById(R.id.lblUserName);// set variable to connect the editText
|
||||
sharedPetName =sharedPreferences.getString("regName","") ;
|
||||
// get the sharedPreference value of the regName key and store to variable
|
||||
sharedPetDate = sharedPreferences.getString("regDate","");
|
||||
// get the sharedPreference value of the regDate key and store to variable
|
||||
|
||||
sharedPetEmail = sharedPreferences.getString("regEmail","");
|
||||
// get the sharedPreference value of the regEmail key and store to variable
|
||||
|
||||
sharedPetPhone = sharedPreferences.getString("regPhone","");
|
||||
// get the sharedPreference value of the regPhone key and store to variable
|
||||
|
||||
etName.setText(sharedPetName); // set the text to the editText Name
|
||||
etDate.setText(sharedPetDate);// set the text to the editText Date
|
||||
etEmail.setText(sharedPetEmail);// set the text to the editText Email
|
||||
etPhone.setText(sharedPetPhone);// set the text to the editText Phone
|
||||
tvUsername.setText(sharedPetName+", Hello!"); // set the text to the TextView
|
||||
etDate.setOnClickListener(new View.OnClickListener() {
|
||||
public void onClick(View v) { // Date picker
|
||||
new DatePickerDialog(UpdateInformation.this, d,
|
||||
dtCalendar.get(Calendar.YEAR),//year
|
||||
dtCalendar.get(Calendar.MONTH),//month
|
||||
dtCalendar.get(Calendar.DAY_OF_MONTH)).show();//day
|
||||
updateLabel(); // picked will call the updateLable method
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
private void updateLabel() {
|
||||
etDate.setText(fmtDate.format(dtCalendar.getTime()));// set the etDate Edittext value
|
||||
|
||||
}
|
||||
|
||||
public void onClick(View view){
|
||||
if(view.getId()==R.id.btnUpdate){//if onclick the update button
|
||||
SharedPreferences.Editor editor = sharedPreferences.edit(); // instance the sharedPreferences editor
|
||||
editor.putString("regName", etName.getText().toString()); // put the new value to the regName key value
|
||||
editor.putString("regDate", etDate.getText().toString());// put the new value to the regDate key value
|
||||
editor.putString("regEmail", etEmail.getText().toString());// put the new value to the regEmail key value
|
||||
editor.putString("regPhone", etPhone.getText().toString());// put the new value to the regPhone key value
|
||||
editor.commit();// sharedPreferences commit
|
||||
if(etName.getText().toString()!=sharedPetName ||etDate.getText().toString()!=sharedPetDate || etEmail.getText().toString()!=sharedPetEmail ||etPhone.getText().toString()!=sharedPetPhone)
|
||||
Toast.makeText(getBaseContext(), "Updated", Toast.LENGTH_LONG).show(); // check the EditText whether change, and when check will display the Toast
|
||||
finish(); //Quit the Activity
|
||||
}
|
||||
}
|
||||
public void finish() {
|
||||
super.finish();
|
||||
overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right);//when Quit the activity will use the animation
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,11 @@
|
||||
<set xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:fillAfter="true"
|
||||
android:interpolator="@android:anim/bounce_interpolator">
|
||||
|
||||
<scale
|
||||
android:duration="500"
|
||||
android:fromXScale="1.0"
|
||||
android:fromYScale="0.0"
|
||||
android:toXScale="1.0"
|
||||
android:toYScale="1.0" />
|
||||
</set>
|
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<set xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<translate
|
||||
android:duration="@android:integer/config_mediumAnimTime"
|
||||
android:fromXDelta="-100%p"
|
||||
android:toXDelta="0" />
|
||||
</set>
|
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<set xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<translate
|
||||
android:duration="@android:integer/config_mediumAnimTime"
|
||||
android:fromXDelta="100%p"
|
||||
android:toXDelta="0" />
|
||||
</set>
|
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<set xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<translate
|
||||
android:duration="@android:integer/config_mediumAnimTime"
|
||||
android:fromXDelta="0"
|
||||
android:toXDelta="-100%p" />
|
||||
</set>
|
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<set xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<translate
|
||||
android:duration="@android:integer/config_mediumAnimTime"
|
||||
android:fromXDelta="0"
|
||||
android:toXDelta="100%p" />
|
||||
</set>
|
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable-v24/gameresult_name.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable-v24/gameresult_name.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable-v24/gameresult_namepur.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable-v24/gameresult_namepur.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable-v24/gamestart_00.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable-v24/gamestart_00.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable-v24/gamestart_00sel.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable-v24/gamestart_00sel.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable-v24/gamestart_05.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable-v24/gamestart_05.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable-v24/gamestart_05sel.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable-v24/gamestart_05sel.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable-v24/gamestart_50.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable-v24/gamestart_50.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable-v24/gamestart_50sel.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable-v24/gamestart_50sel.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable-v24/gamestart_55.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable-v24/gamestart_55.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable-v24/gamestart_55sel.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable-v24/gamestart_55sel.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable-v24/gamestart_cardblue.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable-v24/gamestart_cardblue.png
(Stored with Git LFS)
Normal file
Binary file not shown.
@@ -0,0 +1,34 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="108dp"
|
||||
android:height="108dp"
|
||||
android:viewportWidth="108"
|
||||
android:viewportHeight="108">
|
||||
<path
|
||||
android:fillType="evenOdd"
|
||||
android:pathData="M32,64C32,64 38.39,52.99 44.13,50.95C51.37,48.37 70.14,49.57 70.14,49.57L108.26,87.69L108,109.01L75.97,107.97L32,64Z"
|
||||
android:strokeWidth="1"
|
||||
android:strokeColor="#00000000">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:endX="78.5885"
|
||||
android:endY="90.9159"
|
||||
android:startX="48.7653"
|
||||
android:startY="61.0927"
|
||||
android:type="linear">
|
||||
<item
|
||||
android:color="#44000000"
|
||||
android:offset="0.0" />
|
||||
<item
|
||||
android:color="#00000000"
|
||||
android:offset="1.0" />
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<path
|
||||
android:fillColor="#FFFFFF"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="M66.94,46.02L66.94,46.02C72.44,50.07 76,56.61 76,64L32,64C32,56.61 35.56,50.11 40.98,46.06L36.18,41.19C35.45,40.45 35.45,39.3 36.18,38.56C36.91,37.81 38.05,37.81 38.78,38.56L44.25,44.05C47.18,42.57 50.48,41.71 54,41.71C57.48,41.71 60.78,42.57 63.68,44.05L69.11,38.56C69.84,37.81 70.98,37.81 71.71,38.56C72.44,39.3 72.44,40.45 71.71,41.19L66.94,46.02ZM62.94,56.92C64.08,56.92 65,56.01 65,54.88C65,53.76 64.08,52.85 62.94,52.85C61.8,52.85 60.88,53.76 60.88,54.88C60.88,56.01 61.8,56.92 62.94,56.92ZM45.06,56.92C46.2,56.92 47.13,56.01 47.13,54.88C47.13,53.76 46.2,52.85 45.06,52.85C43.92,52.85 43,53.76 43,54.88C43,56.01 43.92,56.92 45.06,56.92Z"
|
||||
android:strokeWidth="1"
|
||||
android:strokeColor="#00000000" />
|
||||
</vector>
|
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<animation-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item
|
||||
android:drawable="@drawable/first_layer"
|
||||
android:duration="4000"/>
|
||||
|
||||
<item
|
||||
android:drawable="@drawable/second_layer"
|
||||
android:duration="4000"/>
|
||||
|
||||
<item
|
||||
android:drawable="@drawable/third_layer"
|
||||
android:duration="4000"/>
|
||||
|
||||
|
||||
|
||||
</animation-list>
|
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<gradient
|
||||
android:startColor="#3F51B5"
|
||||
android:endColor="#34dfbd"
|
||||
android:angle="-90"/>
|
||||
|
||||
</shape>
|
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
|
||||
<solid android:color="#72BEBEBE"/>
|
||||
<corners android:radius="50dp"/>
|
||||
<stroke android:color="#80FFFFFF"/>
|
||||
<stroke android:width="3dp"/>
|
||||
|
||||
</shape>
|
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
|
||||
<solid android:color="#000"/>
|
||||
<corners android:radius="50dp"/>
|
||||
|
||||
</shape>
|
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable/gameresult_result.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable/gameresult_result.png
(Stored with Git LFS)
Normal file
Binary file not shown.
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<gradient
|
||||
android:startColor="#6c50ec"
|
||||
android:endColor="#DD5292"
|
||||
android:angle="-90"/>
|
||||
</shape>
|
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable/gamestart_card.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable/gamestart_card.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable/gamestart_cardpin.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable/gamestart_cardpin.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable/gamestart_cardpin_00.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable/gamestart_cardpin_00.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable/gamestart_cardpin_05.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable/gamestart_cardpin_05.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable/gamestart_cardpin_50.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable/gamestart_cardpin_50.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable/gamestart_cardpin_55.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable/gamestart_cardpin_55.png
(Stored with Git LFS)
Normal file
Binary file not shown.
@@ -0,0 +1,5 @@
|
||||
<vector android:height="40dp" android:tint="#303AA6"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="40dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M3,5v14c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2L5,3c-1.11,0 -2,0.9 -2,2zM15,9c0,1.66 -1.34,3 -3,3s-3,-1.34 -3,-3 1.34,-3 3,-3 3,1.34 3,3zM6,17c0,-2 4,-3.1 6,-3.1s6,1.1 6,3.1v1L6,18v-1z"/>
|
||||
</vector>
|
@@ -0,0 +1,5 @@
|
||||
<vector android:height="150dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="150dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,5c1.66,0 3,1.34 3,3s-1.34,3 -3,3 -3,-1.34 -3,-3 1.34,-3 3,-3zM12,19.2c-2.5,0 -4.71,-1.28 -6,-3.22 0.03,-1.99 4,-3.08 6,-3.08 1.99,0 5.97,1.09 6,3.08 -1.29,1.94 -3.5,3.22 -6,3.22z"/>
|
||||
</vector>
|
@@ -0,0 +1,5 @@
|
||||
<vector android:height="40dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="40dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,5c1.66,0 3,1.34 3,3s-1.34,3 -3,3 -3,-1.34 -3,-3 1.34,-3 3,-3zM12,19.2c-2.5,0 -4.71,-1.28 -6,-3.22 0.03,-1.99 4,-3.08 6,-3.08 1.99,0 5.97,1.09 6,3.08 -1.29,1.94 -3.5,3.22 -6,3.22z"/>
|
||||
</vector>
|
@@ -0,0 +1,5 @@
|
||||
<vector android:height="35dp" android:tint="#303AA6"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="40dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M9,11L7,11v2h2v-2zM13,11h-2v2h2v-2zM17,11h-2v2h2v-2zM19,4h-1L18,2h-2v2L8,4L8,2L6,2v2L5,4c-1.11,0 -1.99,0.9 -1.99,2L3,20c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,6c0,-1.1 -0.9,-2 -2,-2zM19,20L5,20L5,9h14v11z"/>
|
||||
</vector>
|
@@ -0,0 +1,5 @@
|
||||
<vector android:height="35dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="40dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M9,11L7,11v2h2v-2zM13,11h-2v2h2v-2zM17,11h-2v2h2v-2zM19,4h-1L18,2h-2v2L8,4L8,2L6,2v2L5,4c-1.11,0 -1.99,0.9 -1.99,2L3,20c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,6c0,-1.1 -0.9,-2 -2,-2zM19,20L5,20L5,9h14v11z"/>
|
||||
</vector>
|
@@ -0,0 +1,5 @@
|
||||
<vector android:height="35dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="40dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M20,4L4,4c-1.1,0 -1.99,0.9 -1.99,2L2,18c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,6c0,-1.1 -0.9,-2 -2,-2zM20,8l-8,5 -8,-5L4,6l8,5 8,-5v2z"/>
|
||||
</vector>
|
@@ -0,0 +1,170 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="108dp"
|
||||
android:height="108dp"
|
||||
android:viewportWidth="108"
|
||||
android:viewportHeight="108">
|
||||
<path
|
||||
android:fillColor="#008577"
|
||||
android:pathData="M0,0h108v108h-108z" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M9,0L9,108"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,0L19,108"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M29,0L29,108"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M39,0L39,108"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M49,0L49,108"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M59,0L59,108"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M69,0L69,108"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M79,0L79,108"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M89,0L89,108"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M99,0L99,108"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,9L108,9"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,19L108,19"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,29L108,29"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,39L108,39"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,49L108,49"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,59L108,59"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,69L108,69"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,79L108,79"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,89L108,89"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,99L108,99"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,29L89,29"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,39L89,39"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,49L89,49"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,59L89,59"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,69L89,69"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,79L89,79"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M29,19L29,89"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M39,19L39,89"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M49,19L49,89"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M59,19L59,89"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M69,19L69,89"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M79,19L79,89"
|
||||
android:strokeWidth="0.8"
|
||||
android:strokeColor="#33FFFFFF" />
|
||||
</vector>
|
@@ -0,0 +1,5 @@
|
||||
<vector android:height="35dp" android:tint="#303AA6"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="40dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M20,4L4,4c-1.1,0 -1.99,0.9 -1.99,2L2,18c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,6c0,-1.1 -0.9,-2 -2,-2zM20,18L4,18L4,8l8,5 8,-5v10zM12,11L4,6h16l-8,5z"/>
|
||||
</vector>
|
@@ -0,0 +1,5 @@
|
||||
<vector android:height="150dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="150dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M12,12c2.21,0 4,-1.79 4,-4s-1.79,-4 -4,-4 -4,1.79 -4,4 1.79,4 4,4zM12,14c-2.67,0 -8,1.34 -8,4v2h16v-2c0,-2.66 -5.33,-4 -8,-4z"/>
|
||||
</vector>
|
@@ -0,0 +1,5 @@
|
||||
<vector android:height="40dp" android:tint="#303AA6"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="40dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M6.62,10.79c1.44,2.83 3.76,5.14 6.59,6.59l2.2,-2.2c0.27,-0.27 0.67,-0.36 1.02,-0.24 1.12,0.37 2.33,0.57 3.57,0.57 0.55,0 1,0.45 1,1V20c0,0.55 -0.45,1 -1,1 -9.39,0 -17,-7.61 -17,-17 0,-0.55 0.45,-1 1,-1h3.5c0.55,0 1,0.45 1,1 0,1.25 0.2,2.45 0.57,3.57 0.11,0.35 0.03,0.74 -0.25,1.02l-2.2,2.2z"/>
|
||||
</vector>
|
@@ -0,0 +1,5 @@
|
||||
<vector android:height="35dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24.0" android:viewportWidth="24.0"
|
||||
android:width="40dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#FF000000" android:pathData="M6.62,10.79c1.44,2.83 3.76,5.14 6.59,6.59l2.2,-2.2c0.27,-0.27 0.67,-0.36 1.02,-0.24 1.12,0.37 2.33,0.57 3.57,0.57 0.55,0 1,0.45 1,1V20c0,0.55 -0.45,1 -1,1 -9.39,0 -17,-7.61 -17,-17 0,-0.55 0.45,-1 1,-1h3.5c0.55,0 1,0.45 1,1 0,1.25 0.2,2.45 0.57,3.57 0.11,0.35 0.03,0.74 -0.25,1.02l-2.2,2.2z"/>
|
||||
</vector>
|
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<gradient
|
||||
android:startColor="#3F51B5"
|
||||
android:endColor="#3F51B5" />
|
||||
</shape>
|
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable/left.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable/left.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable/left_5.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable/left_5.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable/opleft.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable/opleft.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable/opleft_5.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable/opleft_5.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable/opright.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable/opright.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable/opright_5.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable/opright_5.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable/ownleft_5.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable/ownleft_5.png
(Stored with Git LFS)
Normal file
Binary file not shown.
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
|
||||
<solid android:color="#FFF"/>
|
||||
<corners android:radius="50dp"/>
|
||||
|
||||
</shape>
|
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
|
||||
android:shape="rectangle">
|
||||
|
||||
<solid android:color="#51FFFFFF"/>
|
||||
<corners android:radius="50dp"/>
|
||||
|
||||
|
||||
</shape>
|
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable/regtitle.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable/regtitle.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable/right.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable/right.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable/right_5.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/drawable/right_5.png
(Stored with Git LFS)
Normal file
Binary file not shown.
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<gradient
|
||||
android:startColor="#345bdb"
|
||||
android:endColor="#db348b"
|
||||
android:angle="-90"/>
|
||||
</shape>
|
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<gradient
|
||||
android:startColor="#3F51B5"
|
||||
android:endColor="#CC1A56"
|
||||
android:angle="-90"/>
|
||||
</shape>
|
@@ -0,0 +1,86 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout 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/bg_reg_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@drawable/bg_reg_anim"
|
||||
android:gravity="center"
|
||||
android:onClick="onClick"
|
||||
android:orientation="vertical"
|
||||
tools:context=".MainActivity">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/imAccount"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="150dp"
|
||||
app:srcCompat="@drawable/regtitle" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/regName"
|
||||
android:layout_width="325dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_marginTop="25dp"
|
||||
android:background="@drawable/reg_edittext"
|
||||
android:drawableLeft="@drawable/ic_account_circle_white_40x35dp"
|
||||
android:ems="10"
|
||||
android:hint="Name"
|
||||
android:inputType="textPersonName"
|
||||
android:paddingLeft="20dp"
|
||||
android:paddingRight="20dp"
|
||||
android:textSize="18sp" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/regDate"
|
||||
android:layout_width="325dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_marginTop="20dp"
|
||||
android:background="@drawable/reg_edittext"
|
||||
android:drawableLeft="@drawable/ic_date_range_white_40x35dp"
|
||||
android:ems="10"
|
||||
android:focusable="false"
|
||||
android:hint="Date of Birth"
|
||||
android:inputType="date"
|
||||
android:paddingLeft="20dp"
|
||||
android:paddingRight="20dp"
|
||||
android:textSize="18sp" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/regPhone"
|
||||
android:layout_width="325dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_marginTop="20dp"
|
||||
android:background="@drawable/reg_edittext"
|
||||
android:drawableLeft="@drawable/ic_phone_white_40x35dp"
|
||||
android:ems="10"
|
||||
android:hint="Phone"
|
||||
android:inputType="phone"
|
||||
android:paddingLeft="20dp"
|
||||
android:paddingRight="20dp"
|
||||
android:textSize="18sp" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/regEmail"
|
||||
android:layout_width="325dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_marginTop="20dp"
|
||||
android:background="@drawable/reg_edittext"
|
||||
android:drawableLeft="@drawable/ic_email_white_40x35dp"
|
||||
android:ems="10"
|
||||
android:hint="Email"
|
||||
android:inputType="textEmailAddress"
|
||||
android:paddingLeft="20dp"
|
||||
android:paddingRight="20dp"
|
||||
android:textSize="18sp" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/btnSubmit"
|
||||
android:layout_width="150dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="45dp"
|
||||
android:background="@drawable/reg_button"
|
||||
android:onClick="onClick"
|
||||
android:text="Submit" />
|
||||
|
||||
</LinearLayout>
|
@@ -0,0 +1,160 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@drawable/gamestart_background"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/lyQuestion"
|
||||
android:layout_width="318dp"
|
||||
android:layout_height="197dp"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="140dp"
|
||||
android:background="@drawable/gamestart_cardblue"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txtQuestion"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:lineSpacingExtra="6dp"
|
||||
android:text="What is your guess?"
|
||||
android:textAlignment="center"
|
||||
android:textColor="#332FA2"
|
||||
android:textSize="26sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textRound"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="30dp"
|
||||
android:lineSpacingExtra="6dp"
|
||||
android:text="Round:"
|
||||
android:textAlignment="center"
|
||||
android:textColor="#000"
|
||||
android:textSize="14sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="175dp"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal"
|
||||
android:padding="10dp">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/lyZero"
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_marginRight="15dp"
|
||||
android:background="@drawable/gamestart_cardblue"
|
||||
android:onClick="onClick"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txtZero"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
android:lineSpacingExtra="6dp"
|
||||
android:onClick="onClick"
|
||||
android:text="0"
|
||||
android:textAlignment="center"
|
||||
android:textColor="#332FA2"
|
||||
android:textSize="26sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/lyFive"
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_marginRight="15dp"
|
||||
android:background="@drawable/gamestart_cardblue"
|
||||
android:onClick="onClick"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txtFive"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:lineSpacingExtra="6dp"
|
||||
android:onClick="onClick"
|
||||
android:text="5"
|
||||
android:textAlignment="center"
|
||||
android:textColor="#332FA2"
|
||||
android:textSize="26sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/lyTen"
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_marginRight="15dp"
|
||||
android:background="@drawable/gamestart_cardblue"
|
||||
android:onClick="onClick"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txtTen"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
android:lineSpacingExtra="6dp"
|
||||
android:onClick="onClick"
|
||||
android:text="10"
|
||||
android:textAlignment="center"
|
||||
android:textColor="#332FA2"
|
||||
android:textSize="26sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/lyfift"
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_marginRight="15dp"
|
||||
android:background="@drawable/gamestart_cardblue"
|
||||
android:onClick="onClick"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txtfift"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
android:lineSpacingExtra="6dp"
|
||||
android:onClick="onClick"
|
||||
android:text="15"
|
||||
android:textAlignment="center"
|
||||
android:textColor="#332FA2"
|
||||
android:textSize="26sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/lyTwe"
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="60dp"
|
||||
android:background="@drawable/gamestart_cardblue"
|
||||
android:onClick="onClick"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txtTwe"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
android:lineSpacingExtra="6dp"
|
||||
android:onClick="onClick"
|
||||
android:text="20"
|
||||
android:textAlignment="center"
|
||||
android:textColor="#332FA2"
|
||||
android:textSize="26sp" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
@@ -0,0 +1,97 @@
|
||||
<?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:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:animateLayoutChanges="true"
|
||||
android:background="#000"
|
||||
>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerInParent="true"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginLeft="40dp"
|
||||
android:layout_marginRight="40dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvMatching"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:text="Matching..."
|
||||
android:textColor="@android:color/white"
|
||||
android:textSize="30sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/relLayoutTop"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/tvMatching"
|
||||
android:visibility="gone">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/img_person"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:srcCompat="@drawable/ic_person_white_150dp" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/linlay1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/img_person"
|
||||
android:layout_marginTop="20dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvName"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:fontFamily="sans-serif-light"
|
||||
android:gravity="center"
|
||||
android:text="Name:"
|
||||
android:textAllCaps="true"
|
||||
android:textColor="#FFF"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvCountry"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:fontFamily="sans-serif-light"
|
||||
android:gravity="center"
|
||||
android:text="Password"
|
||||
android:textAllCaps="true"
|
||||
android:textColor="#FFF"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/relLayoutBottom"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_marginLeft="20dp"
|
||||
android:layout_marginRight="20dp"
|
||||
android:visibility="gone"/>
|
||||
|
||||
</RelativeLayout>
|
@@ -0,0 +1,46 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<Button
|
||||
android:id="@+id/btnStart"
|
||||
android:layout_width="240dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_marginTop="30dp"
|
||||
android:background="@drawable/gamemenu_button"
|
||||
android:onClick="onClick"
|
||||
android:text="Start Game" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/btnGraphic"
|
||||
android:layout_width="240dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_marginTop="30dp"
|
||||
android:background="@drawable/gamemenu_button"
|
||||
android:onClick="onClick"
|
||||
android:text="Analysis" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/btnUpdateInf"
|
||||
android:layout_width="240dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_marginTop="30dp"
|
||||
android:background="@drawable/gamemenu_button"
|
||||
android:onClick="onClick"
|
||||
android:text="Update Information" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/btnCancel"
|
||||
android:layout_width="114dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="30dp"
|
||||
android:background="@drawable/gamemenu_quitbutton"
|
||||
android:onClick="onClick"
|
||||
android:text="Quit"
|
||||
android:textColor="@android:color/white"
|
||||
android:textSize="18sp" />
|
||||
</LinearLayout>
|
@@ -0,0 +1,178 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout 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:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@drawable/gamestart_background"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="181dp"
|
||||
android:layout_height="79dp"
|
||||
android:layout_gravity="left"
|
||||
android:layout_marginLeft="20dp"
|
||||
android:layout_marginTop="20dp"
|
||||
android:background="@drawable/gameresult_name"
|
||||
android:gravity="left"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txtOpTitle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="20dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:text="Opponent"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txtOpName"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="40dp"
|
||||
android:text="Name"
|
||||
android:textSize="24sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="247dp"
|
||||
android:layout_height="227dp"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="25dp"
|
||||
android:background="@drawable/gameresult_result"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="7dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginRight="7dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/imgOpLeft"
|
||||
android:layout_width="80dp"
|
||||
android:layout_height="80dp"
|
||||
android:layout_marginLeft="18dp"
|
||||
android:layout_marginRight="29dp"
|
||||
android:layout_weight="0"
|
||||
tools:srcCompat="@tools:sample/avatars[0]" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/imgOpRight"
|
||||
android:layout_width="80dp"
|
||||
android:layout_height="80dp"
|
||||
android:layout_marginLeft="15dp"
|
||||
android:layout_weight="0"
|
||||
tools:srcCompat="@tools:sample/avatars[0]" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="7dp"
|
||||
android:layout_marginTop="40dp"
|
||||
android:layout_marginRight="7dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/imgLeft"
|
||||
android:layout_width="80dp"
|
||||
android:layout_height="80dp"
|
||||
android:layout_marginLeft="18dp"
|
||||
android:layout_marginRight="29dp"
|
||||
android:layout_weight="0"
|
||||
tools:srcCompat="@tools:sample/avatars[0]" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/imgRight"
|
||||
android:layout_width="80dp"
|
||||
android:layout_height="80dp"
|
||||
android:layout_marginLeft="15dp"
|
||||
android:layout_weight="0"
|
||||
tools:srcCompat="@tools:sample/avatars[0]" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txtGuess"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="20dp"
|
||||
android:gravity="center"
|
||||
android:text="Guess"
|
||||
android:textColor="@android:color/white"
|
||||
android:textSize="18sp" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="180dp"
|
||||
android:layout_height="80dp"
|
||||
android:layout_gravity="right"
|
||||
android:layout_marginRight="20dp"
|
||||
android:background="@drawable/gameresult_namepur"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txtTitle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="20dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:text="Owner"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txtName"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="40dp"
|
||||
android:text="Name"
|
||||
android:textSize="24sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txtWinOrLose"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="30dp"
|
||||
android:gravity="center"
|
||||
android:text="WinOrLose"
|
||||
android:textColor="@android:color/white"
|
||||
android:textSize="36sp" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="30dp"
|
||||
android:layout_marginTop="40dp"
|
||||
android:layout_marginRight="30dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<Button
|
||||
android:id="@+id/btnResultQuit"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginRight="20dp"
|
||||
android:layout_weight="1"
|
||||
android:background="@drawable/gamemenu_quitbutton"
|
||||
android:onClick="onClick"
|
||||
android:text="Quit"
|
||||
android:textColor="@android:color/white" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/btnResultContine"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="20dp"
|
||||
android:layout_weight="1"
|
||||
android:background="@drawable/reg_button"
|
||||
android:onClick="onClick"
|
||||
android:text="Continue" />
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
@@ -0,0 +1,146 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@drawable/gamestart_background"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/gameTitle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp"
|
||||
android:fontFamily="casual"
|
||||
android:gravity="center"
|
||||
android:text='" 15,20 "'
|
||||
android:textColor="#FFF"
|
||||
android:textSize="36sp" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="318dp"
|
||||
android:layout_height="197dp"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="20dp"
|
||||
android:background="@drawable/gamestart_cardblue"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txtQuestion"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:lineSpacingExtra="6dp"
|
||||
android:text="What is your choice?"
|
||||
android:textAlignment="center"
|
||||
android:textColor="#332FA2"
|
||||
android:textSize="26sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textError"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="30dp"
|
||||
android:lineSpacingExtra="6dp"
|
||||
android:textAlignment="center"
|
||||
android:textColor="#FD0000"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textRound"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="30dp"
|
||||
android:lineSpacingExtra="6dp"
|
||||
android:text="Round:"
|
||||
android:textAlignment="center"
|
||||
android:textColor="#000"
|
||||
android:textSize="14sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/imgVewSelected"
|
||||
android:layout_width="200dp"
|
||||
android:layout_height="114dp"
|
||||
android:layout_gravity="center"
|
||||
app:srcCompat="@drawable/gamestart_cardpin" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/textTitle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="39dp"
|
||||
android:layout_marginLeft="28dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginRight="28dp"
|
||||
android:text="SELECT "
|
||||
android:textColor="#FFF"
|
||||
android:textSize="24sp" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="350dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal"
|
||||
android:padding="10dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/btn00"
|
||||
android:layout_width="119dp"
|
||||
android:layout_height="73dp"
|
||||
android:layout_gravity="left"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="30dp"
|
||||
android:background="@drawable/gamestart_00"
|
||||
android:onClick="onClick" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/btn55"
|
||||
android:layout_width="119dp"
|
||||
android:layout_height="73dp"
|
||||
android:layout_gravity="right|center_horizontal|fill_horizontal"
|
||||
android:background="@drawable/gamestart_55"
|
||||
android:onClick="onClick" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="350dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal"
|
||||
android:padding="10dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/btn05"
|
||||
android:layout_width="119dp"
|
||||
android:layout_height="73dp"
|
||||
android:layout_gravity="left"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="30dp"
|
||||
android:background="@drawable/gamestart_05"
|
||||
android:onClick="onClick" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/btn50"
|
||||
|
||||
android:layout_width="119dp"
|
||||
android:layout_height="73dp"
|
||||
android:layout_gravity="right|center_horizontal|fill_horizontal"
|
||||
android:background="@drawable/gamestart_50"
|
||||
android:onClick="onClick" />
|
||||
</LinearLayout>
|
||||
|
||||
<Button
|
||||
android:id="@+id/btnNext"
|
||||
android:layout_width="109dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="10dp"
|
||||
android:background="@drawable/reg_button"
|
||||
android:onClick="next"
|
||||
android:text="NEXT" />
|
||||
|
||||
</LinearLayout>
|
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="center"
|
||||
android:background="@drawable/gamestart_background"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical"
|
||||
app:layout_anchorGravity="center">
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/progressBar2"
|
||||
style="?android:attr/progressBarStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="102dp"
|
||||
android:layout_gravity="center"
|
||||
android:foregroundGravity="center" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/txtWaitSelect"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:text="Waiting the opponents select"
|
||||
android:textColor="@android:color/white"
|
||||
android:textSize="24sp" />
|
||||
</LinearLayout>
|
@@ -0,0 +1,97 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="280dp">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_marginBottom="0dp"
|
||||
android:background="@drawable/inf_toplayout"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/imAccount"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:srcCompat="@drawable/ic_account_circle_white_120dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/lblUserName"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:text="UserName"
|
||||
android:textColor="#FFFFFF"
|
||||
android:textSize="24sp" />
|
||||
</LinearLayout>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<EditText
|
||||
android:id="@+id/txtName"
|
||||
android:layout_width="275dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="30dp"
|
||||
android:drawableLeft="@drawable/ic_account_box_blue_30dp"
|
||||
android:ems="10"
|
||||
android:hint="Name"
|
||||
android:inputType="textPersonName"
|
||||
android:textColorHighlight="#3039A0" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/txtDate"
|
||||
android:layout_width="275dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="10dp"
|
||||
android:drawableLeft="@drawable/ic_date_range_blue_40dp"
|
||||
android:focusable="false"
|
||||
android:ems="10"
|
||||
android:hint="Date"
|
||||
android:inputType="textPersonName" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/txtEmail"
|
||||
android:layout_width="275dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="10dp"
|
||||
android:drawableLeft="@drawable/ic_mail_outline_blue_30dp"
|
||||
android:ems="10"
|
||||
android:hint="Email"
|
||||
android:inputType="textPersonName" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/txtPhone"
|
||||
android:layout_width="275dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="10dp"
|
||||
android:drawableLeft="@drawable/ic_phone_blue_40dp"
|
||||
android:ems="10"
|
||||
android:hint="Phone Number"
|
||||
android:inputType="textPersonName" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/btnUpdate"
|
||||
android:layout_width="126dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="60dp"
|
||||
android:background="@drawable/gamemenu_quitbutton"
|
||||
android:onClick="onClick"
|
||||
android:text="Update"
|
||||
android:textColor="#FFFFFF" />
|
||||
</LinearLayout>
|
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@drawable/ic_launcher_background" />
|
||||
<foreground android:drawable="@drawable/ic_launcher_foreground" />
|
||||
</adaptive-icon>
|
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@drawable/ic_launcher_background" />
|
||||
<foreground android:drawable="@drawable/ic_launcher_foreground" />
|
||||
</adaptive-icon>
|
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/mipmap-hdpi/ic_launcher.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/mipmap-hdpi/ic_launcher.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/mipmap-mdpi/ic_launcher.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/mipmap-mdpi/ic_launcher.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/mipmap-xhdpi/ic_launcher.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/mipmap-xhdpi/ic_launcher.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
(Stored with Git LFS)
Normal file
BIN
it114105/itp4501/Assignment/18-19/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
(Stored with Git LFS)
Normal file
Binary file not shown.
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="colorPrimary">#008577</color>
|
||||
<color name="colorPrimaryDark">#3F51B5</color>
|
||||
<color name="colorAccent">#3F51B5</color>
|
||||
</resources>
|
@@ -0,0 +1,3 @@
|
||||
<resources>
|
||||
<string name="app_name">ITP4501Assignment</string>
|
||||
</resources>
|
@@ -0,0 +1,13 @@
|
||||
<resources>
|
||||
|
||||
<!-- Base application theme. -->
|
||||
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
|
||||
<!-- Customize your theme here. -->
|
||||
<item name="colorPrimary">@color/colorPrimary</item>
|
||||
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
|
||||
<item name="colorAccent">@color/colorAccent</item>
|
||||
|
||||
</style>
|
||||
|
||||
|
||||
</resources>
|
@@ -0,0 +1,17 @@
|
||||
package com.example.itp4501assignment;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* Example local unit test, which will execute on the development machine (host).
|
||||
*
|
||||
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
|
||||
*/
|
||||
public class ExampleUnitTest {
|
||||
@Test
|
||||
public void addition_isCorrect() {
|
||||
assertEquals(4, 2 + 2);
|
||||
}
|
||||
}
|
27
it114105/itp4501/Assignment/18-19/build.gradle
Normal file
27
it114105/itp4501/Assignment/18-19/build.gradle
Normal file
@@ -0,0 +1,27 @@
|
||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||
|
||||
buildscript {
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:3.4.1'
|
||||
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
// in the individual module build.gradle files
|
||||
}
|
||||
}
|
||||
|
||||
allprojects {
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
task clean(type: Delete) {
|
||||
delete rootProject.buildDir
|
||||
}
|
15
it114105/itp4501/Assignment/18-19/gradle.properties
Normal file
15
it114105/itp4501/Assignment/18-19/gradle.properties
Normal file
@@ -0,0 +1,15 @@
|
||||
# Project-wide Gradle settings.
|
||||
# IDE (e.g. Android Studio) users:
|
||||
# Gradle settings configured through the IDE *will override*
|
||||
# any settings specified in this file.
|
||||
# For more details on how to configure your build environment visit
|
||||
# http://www.gradle.org/docs/current/userguide/build_environment.html
|
||||
# Specifies the JVM arguments used for the daemon process.
|
||||
# The setting is particularly useful for tweaking memory settings.
|
||||
org.gradle.jvmargs=-Xmx1536m
|
||||
# When configured, Gradle will run in incubating parallel mode.
|
||||
# This option should only be used with decoupled projects. More details, visit
|
||||
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
|
||||
# org.gradle.parallel=true
|
||||
|
||||
|
6
it114105/itp4501/Assignment/18-19/gradle/wrapper/gradle-wrapper.properties
vendored
Normal file
6
it114105/itp4501/Assignment/18-19/gradle/wrapper/gradle-wrapper.properties
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
#Sun Jun 23 13:09:31 HKT 2019
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip
|
172
it114105/itp4501/Assignment/18-19/gradlew
vendored
Normal file
172
it114105/itp4501/Assignment/18-19/gradlew
vendored
Normal file
@@ -0,0 +1,172 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
##############################################################################
|
||||
##
|
||||
## Gradle start up script for UN*X
|
||||
##
|
||||
##############################################################################
|
||||
|
||||
# Attempt to set APP_HOME
|
||||
# Resolve links: $0 may be a link
|
||||
PRG="$0"
|
||||
# Need this for relative symlinks.
|
||||
while [ -h "$PRG" ] ; do
|
||||
ls=`ls -ld "$PRG"`
|
||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||
if expr "$link" : '/.*' > /dev/null; then
|
||||
PRG="$link"
|
||||
else
|
||||
PRG=`dirname "$PRG"`"/$link"
|
||||
fi
|
||||
done
|
||||
SAVED="`pwd`"
|
||||
cd "`dirname \"$PRG\"`/" >/dev/null
|
||||
APP_HOME="`pwd -P`"
|
||||
cd "$SAVED" >/dev/null
|
||||
|
||||
APP_NAME="Gradle"
|
||||
APP_BASE_NAME=`basename "$0"`
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS=""
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD="maximum"
|
||||
|
||||
warn () {
|
||||
echo "$*"
|
||||
}
|
||||
|
||||
die () {
|
||||
echo
|
||||
echo "$*"
|
||||
echo
|
||||
exit 1
|
||||
}
|
||||
|
||||
# OS specific support (must be 'true' or 'false').
|
||||
cygwin=false
|
||||
msys=false
|
||||
darwin=false
|
||||
nonstop=false
|
||||
case "`uname`" in
|
||||
CYGWIN* )
|
||||
cygwin=true
|
||||
;;
|
||||
Darwin* )
|
||||
darwin=true
|
||||
;;
|
||||
MINGW* )
|
||||
msys=true
|
||||
;;
|
||||
NONSTOP* )
|
||||
nonstop=true
|
||||
;;
|
||||
esac
|
||||
|
||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
|
||||
# Determine the Java command to use to start the JVM.
|
||||
if [ -n "$JAVA_HOME" ] ; then
|
||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||
# IBM's JDK on AIX uses strange locations for the executables
|
||||
JAVACMD="$JAVA_HOME/jre/sh/java"
|
||||
else
|
||||
JAVACMD="$JAVA_HOME/bin/java"
|
||||
fi
|
||||
if [ ! -x "$JAVACMD" ] ; then
|
||||
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
else
|
||||
JAVACMD="java"
|
||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
|
||||
# Increase the maximum file descriptors if we can.
|
||||
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
|
||||
MAX_FD_LIMIT=`ulimit -H -n`
|
||||
if [ $? -eq 0 ] ; then
|
||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
||||
MAX_FD="$MAX_FD_LIMIT"
|
||||
fi
|
||||
ulimit -n $MAX_FD
|
||||
if [ $? -ne 0 ] ; then
|
||||
warn "Could not set maximum file descriptor limit: $MAX_FD"
|
||||
fi
|
||||
else
|
||||
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
|
||||
fi
|
||||
fi
|
||||
|
||||
# For Darwin, add options to specify how the application appears in the dock
|
||||
if $darwin; then
|
||||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
||||
fi
|
||||
|
||||
# For Cygwin, switch paths to Windows format before running java
|
||||
if $cygwin ; then
|
||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
||||
|
||||
# We build the pattern for arguments to be converted via cygpath
|
||||
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
||||
SEP=""
|
||||
for dir in $ROOTDIRSRAW ; do
|
||||
ROOTDIRS="$ROOTDIRS$SEP$dir"
|
||||
SEP="|"
|
||||
done
|
||||
OURCYGPATTERN="(^($ROOTDIRS))"
|
||||
# Add a user-defined pattern to the cygpath arguments
|
||||
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
|
||||
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
|
||||
fi
|
||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||
i=0
|
||||
for arg in "$@" ; do
|
||||
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
|
||||
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
|
||||
|
||||
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
|
||||
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
|
||||
else
|
||||
eval `echo args$i`="\"$arg\""
|
||||
fi
|
||||
i=$((i+1))
|
||||
done
|
||||
case $i in
|
||||
(0) set -- ;;
|
||||
(1) set -- "$args0" ;;
|
||||
(2) set -- "$args0" "$args1" ;;
|
||||
(3) set -- "$args0" "$args1" "$args2" ;;
|
||||
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Escape application args
|
||||
save () {
|
||||
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
|
||||
echo " "
|
||||
}
|
||||
APP_ARGS=$(save "$@")
|
||||
|
||||
# Collect all arguments for the java command, following the shell quoting and substitution rules
|
||||
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
|
||||
|
||||
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
|
||||
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
|
||||
cd "$(dirname "$0")"
|
||||
fi
|
||||
|
||||
exec "$JAVACMD" "$@"
|
84
it114105/itp4501/Assignment/18-19/gradlew.bat
vendored
Normal file
84
it114105/itp4501/Assignment/18-19/gradlew.bat
vendored
Normal file
@@ -0,0 +1,84 @@
|
||||
@if "%DEBUG%" == "" @echo off
|
||||
@rem ##########################################################################
|
||||
@rem
|
||||
@rem Gradle startup script for Windows
|
||||
@rem
|
||||
@rem ##########################################################################
|
||||
|
||||
@rem Set local scope for the variables with windows NT shell
|
||||
if "%OS%"=="Windows_NT" setlocal
|
||||
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%" == "" set DIRNAME=.
|
||||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
set DEFAULT_JVM_OPTS=
|
||||
|
||||
@rem Find java.exe
|
||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||
|
||||
set JAVA_EXE=java.exe
|
||||
%JAVA_EXE% -version >NUL 2>&1
|
||||
if "%ERRORLEVEL%" == "0" goto init
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
echo.
|
||||
echo Please set the JAVA_HOME variable in your environment to match the
|
||||
echo location of your Java installation.
|
||||
|
||||
goto fail
|
||||
|
||||
:findJavaFromJavaHome
|
||||
set JAVA_HOME=%JAVA_HOME:"=%
|
||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||
|
||||
if exist "%JAVA_EXE%" goto init
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||
echo.
|
||||
echo Please set the JAVA_HOME variable in your environment to match the
|
||||
echo location of your Java installation.
|
||||
|
||||
goto fail
|
||||
|
||||
:init
|
||||
@rem Get command-line arguments, handling Windows variants
|
||||
|
||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
||||
|
||||
:win9xME_args
|
||||
@rem Slurp the command line arguments.
|
||||
set CMD_LINE_ARGS=
|
||||
set _SKIP=2
|
||||
|
||||
:win9xME_args_slurp
|
||||
if "x%~1" == "x" goto execute
|
||||
|
||||
set CMD_LINE_ARGS=%*
|
||||
|
||||
:execute
|
||||
@rem Setup the command line
|
||||
|
||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||
|
||||
@rem Execute Gradle
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
|
||||
|
||||
:end
|
||||
@rem End local scope for the variables with windows NT shell
|
||||
if "%ERRORLEVEL%"=="0" goto mainEnd
|
||||
|
||||
:fail
|
||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||
rem the _cmd.exe /c_ return code!
|
||||
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
|
||||
exit /b 1
|
||||
|
||||
:mainEnd
|
||||
if "%OS%"=="Windows_NT" endlocal
|
||||
|
||||
:omega
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user