少々長い動画になります。
過去の動画をほぼご覧になって「理解済み」の方用の動画です。
専門用語 「 変数・配列・アクティビティ・インテント・クリック処理 」と言われて分からない方は参考程度にご覧ください。
プロジェクト名
プロジェクト、カンパニードメイン、パッケージネームを同じにするとコピペエラーが減ります。
Application name CheckApp
Company Domain test.com
Package name com.test.checkapp
画像素材
* 注意 *
・画像をご自身で要するにはファイル名やファイルサイズ、拡張子に注意する必要があります。
・ファイル名は半角小文字の英数(a~z 0~9)とアンダーバー( _ )のみで、最初の1文字目は半角英字( a ~ z)のみです。
・慣れてない方はサンプル画像の使用をオススメします。






アクティビティの作成
activity_main.xml(完成)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.test.checkapp.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="キャラ診断"
android:textSize="60sp" />
<Button
android:onClick="onStart"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="スタート"
android:textSize="40sp" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/main" />
</LinearLayout>
activity_play.xml(完成)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_play"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.test.checkapp.PlayActivity">
<TextView
android:id="@+id/tvCount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="後5問" />
<TextView
android:gravity="center"
android:id="@+id/tvQuestion"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="パワーで勝負"
android:textSize="40sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true">
<Button
android:padding="10dp"
android:onClick="onYes"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Yes"
android:textSize="40sp" />
<Button
android:padding="10dp"
android:onClick="onNo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="No"
android:textSize="40sp" />
</LinearLayout>
</RelativeLayout>
activity_result.xml(完成)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_result"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.test.checkapp.ResultActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="あなたは"
android:textSize="18sp" />
<TextView
android:id="@+id/tvResult"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="パワータイプ"
android:textSize="40sp" />
<TextView
android:id="@+id/tvReText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="何も気にせずごり押ししましょう"
android:textSize="18sp" />
<ImageView
android:id="@+id/ivReImg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/p4" />
</LinearLayout>
MainActivity.java(完成)
package com.test.checkapp; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } // 画面切り替え ///////////////////////////////////// public void onStart(View v){ Intent intent = new Intent(this,PlayActivity.class); startActivity(intent); } }
PlayActivity.java(1・画面移行 )
package com.test.checkapp; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.TextView; public class PlayActivity extends AppCompatActivity { int count = 5; // 問題数 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_play); } // Yesボタン ///////////////////////////////////// public void onYes(View v) { count--; if (count > 0) { ((TextView) findViewById(R.id.tvCount)).setText("後" + count + "問"); } else { Intent intent = new Intent(this, ResultActivity.class); startActivity(intent); finish(); } } // Noボタン ///////////////////////////////////// public void onNo(View v) { count--; if (count > 0) { ((TextView) findViewById(R.id.tvCount)).setText("後" + count + "問"); } else { Intent intent = new Intent(this, ResultActivity.class); startActivity(intent); finish(); } } }
PlayActivity.java(2・出題 )
package com.test.checkapp; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.TextView; import java.util.Random; public class PlayActivity extends AppCompatActivity { // 問題データ //////////////////////// String[] question = { "ガンガン行こうぜ!", "慎重に!!", "支援は大事だね", "元気があれば何でも出来る!", }; int r = 0; // 乱数の保管 int count = 5; // 問題数 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_play); // 出題 ///////////////////////////// r = new Random().nextInt(question.length); ((TextView) findViewById(R.id.tvQuestion)).setText(question[r]); } // Yesボタン ///////////////////////////////////// public void onYes(View v) { count--; if (count > 0) { ((TextView) findViewById(R.id.tvCount)).setText("後" + count + "問"); // 出題 ///////////////////////////// r = new Random().nextInt(question.length); ((TextView) findViewById(R.id.tvQuestion)).setText(question[r]); } else { Intent intent = new Intent(this, ResultActivity.class); startActivity(intent); finish(); } } // Noボタン ///////////////////////////////////// public void onNo(View v) { count--; if (count > 0) { ((TextView) findViewById(R.id.tvCount)).setText("後" + count + "問"); // 出題 ///////////////////////////// r = new Random().nextInt(question.length); ((TextView) findViewById(R.id.tvQuestion)).setText(question[r]); } else { Intent intent = new Intent(this, ResultActivity.class); startActivity(intent); finish(); } } }
PlayActivity.java(3・スコア処理(完成) )

package com.test.checkapp;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
import java.util.Random;
public class PlayActivity extends AppCompatActivity {
// 問題データ ////////////////////////
String[] question = {
"ガンガン行こうぜ!",
"慎重に!!",
"支援は大事だね",
"元気があれば何でも出来る!",
};
// YES選択時のスコア(評価点)
int[] yes = {1, -1, -1, 1};
int r = 0; // 乱数の保管
int count = 5; // 問題数
int score = 0; // スコアの合計(評価点)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_play);
// 出題 /////////////////////////////
r = new Random().nextInt(question.length);
((TextView) findViewById(R.id.tvQuestion)).setText(question[r]);
}
// Yesボタン /////////////////////////////////////
public void onYes(View v) {
count--;
score += yes[r]; // スコアの加算
if (count > 0) {
((TextView) findViewById(R.id.tvCount)).setText("後" + count + "問");
// 出題 /////////////////////////////
r = new Random().nextInt(question.length);
((TextView) findViewById(R.id.tvQuestion)).setText(question[r]);
} else {
Intent intent = new Intent(this, ResultActivity.class);
intent.putExtra("score" , score);
startActivity(intent);
finish();
}
}
// Noボタン /////////////////////////////////////
public void onNo(View v) {
count--;
score -= yes[r]; // スコアの減算
if (count > 0) {
((TextView) findViewById(R.id.tvCount)).setText("後" + count + "問");
// 出題 /////////////////////////////
r = new Random().nextInt(question.length);
((TextView) findViewById(R.id.tvQuestion)).setText(question[r]);
} else {
Intent intent = new Intent(this, ResultActivity.class);
intent.putExtra("score" , score);
startActivity(intent);
finish();
}
}
}
ResultActivity.java(完成)
package com.test.checkapp; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ImageView; import android.widget.TextView; public class ResultActivity extends AppCompatActivity { String[] result = { "魔女タイプ", "魔法少女", "魔法剣士", "剣士タイプ", "パワータイプ", }; String[] reTest = { "とっても神秘的!!", "後方支援が得意です", "オールマイティ!!", "スタンダードに攻撃だ!", "何も気にせずごり押しだ!", }; int[] reImg = { R.drawable.p0, R.drawable.p1, R.drawable.p2, R.drawable.p3, R.drawable.p4, }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_result); // インテントからスコアを取得 ///////////////////// int score = getIntent().getIntExtra("score" , 0); if( score < 0) score = 0; if( score >= result.length) score = result.length -1; // テキストと画像をセット ////////////////////////// ((TextView)findViewById(R.id.tvResult)).setText(result[score]); ((TextView)findViewById(R.id.tvReText)).setText(reTest[score]); ((ImageView)findViewById(R.id.ivReImg)).setImageResource(reImg[score]); } }




