分からないこと(ここではじゃんけんゲームに合わせて質問をします。)
・じゃんけんゲームで、メイン画面で自分が手を選び、リザルト画面でコンピュータの出した手を表示して、勝敗を決める流れですが、リザルト画面で勝敗によって文字のサイズや色を変更するにはどうしたら良いでしょうか?(ソースコードを掲載します。)
・レイアウトエディタのプロパティでも、XX.javaのクラスでも、テキスト(Text.view)の色やサイズ、配置を変えられますがどちらの方が使い勝手が良いのでしょうか?
Main.Activity.java
Java
1import android.content.Intent; 2import android.content.SharedPreferences; 3import android.graphics.Color; 4import android.os.Bundle; 5import android.preference.PreferenceManager; 6import android.support.v7.app.AppCompatActivity; 7import android.view.View; 8import android.widget.TextView; 9 10public class MainActivity extends AppCompatActivity { 11 12 @Override 13 protected void onCreate(Bundle savedInstanceState) { 14 super.onCreate(savedInstanceState); 15 setContentView(R.layout.activity_main); 16 TextView txt=(TextView)findViewById(R.id.textView2);//テキストの色を指定 17 txt.setTextColor(Color.argb(255,255,0,0));//(透明度,r,g,b) 18 txt.setTextSize(18.0f);//float型の値で文字の大きさを指定。 19 20 //起動時にデータをクリアする 21 SharedPreferences pref = 22 PreferenceManager.getDefaultSharedPreferences(this); 23 SharedPreferences.Editor editor = pref.edit(); 24 editor.clear(); 25 editor.commit(); 26 } 27 28 public void onJankenButtonTapped(View view) {//引数viewを受け取ってonClickプロパティに設定する。 29 Intent intent = new Intent(this, ResultActivity.class);//Intentクラスのインスタンスを生成。 30 intent.putExtra("MY_HAND", view.getId());//タップされたイメージボタンのIDをインテントに格納 31 startActivity(intent);//生成したインスタンスをstartActivityメソッドの引数に渡す。 32 } 33}
ResultActivity.javaのソースコード
Java
1import android.content.Intent; 2import android.content.SharedPreferences; 3import android.os.Bundle; 4import android.preference.PreferenceManager; 5import android.support.v7.app.AppCompatActivity; 6import android.view.View; 7import android.widget.ImageView; 8import android.widget.TextView; 9 10public class ResultActivity extends AppCompatActivity { 11 final int JANKEN_GU = 0 ;//グーは0 12 final int JANKEN_CHOKI = 1 ;//チョキは1 13 final int JANKEN_PA = 2 ;//パーは2として定数を定義。 14 15 @Override 16 protected void onCreate(Bundle savedInstanceState) { 17 super.onCreate(savedInstanceState); 18 setContentView(R.layout.activity_result); 19 20 int myHand = 0 ;//前画面でプレイヤーが出した手の情報を記録するための変数 21 Intent intent = getIntent();//受け取ったインテントの取得 22 int id = intent.getIntExtra("MY_HAND" , 0);//インテントに格納された情報を取り出す。 23 24 //TextView txt=(TextView)findViewById(R.id.my_hand_image);//テキストの色を指定(ここが出来ない?) 25 //txt.setTextColor(Color.argb(255,255,0,0));//(透明度,r,g,b) 26 ImageView myHandImageView = 27 (ImageView) findViewById(R.id.my_hand_image); 28 29 30 switch (id) {//前画面でプレイヤーが出した手の情報を記録。 31 case R.id.gu: 32 myHandImageView.setImageResource(R.drawable.jankengu); 33 myHand = JANKEN_GU; 34 break; 35 case R.id.choki: 36 myHandImageView.setImageResource(R.drawable.jankenchoki); 37 myHand = JANKEN_CHOKI; 38 break; 39 case R.id.pa: 40 myHandImageView.setImageResource(R.drawable.jankenpa); 41 myHand = JANKEN_PA; 42 break; 43 default: 44 myHand = JANKEN_GU; 45 break; 46 } 47 int comHand = getHand();//コンピュータの手をランダムで決める 48 ImageView comHandImageView = 49 (ImageView) findViewById(R.id.sazae_hand_image); 50 switch (comHand) {//コンピュータの手に合わせた画像の表示 51 case JANKEN_GU: 52 comHandImageView.setImageResource(R.drawable.sazaesan3); 53 break; 54 case JANKEN_CHOKI: 55 comHandImageView.setImageResource(R.drawable.sazaesan1); 56 break; 57 case JANKEN_PA: 58 comHandImageView.setImageResource(R.drawable.sazaesan2); 59 break; 60 } 61 //勝敗を決定する。 62 TextView resultLabel = (TextView) findViewById(R.id.result_label); 63 int gameResult = (comHand - myHand + 3) % 3 ; 64 switch (gameResult) { 65 case 0://あいこの場合 66 resultLabel.setText(R.string.result_draw); 67 break; 68 case 1://勝った場合 69 resultLabel.setText(R.string.result_win); 70 break; 71 case 2://負けた場合 72 resultLabel.setText(R.string.result_lose); 73 break; 74 } 75 //じゃんけんの結果を保存する。 76 saveData(myHand, comHand, gameResult); 77 } 78 public void onBackButtonTapped(View view) { 79 finish(); 80 } 81 private void saveData(int myHand, int comHand, int gameResult){ 82 SharedPreferences pref = 83 PreferenceManager.getDefaultSharedPreferences(this); 84 SharedPreferences.Editor editor = pref.edit(); 85 86 int gameCount = pref.getInt("GAME_COUNT",0); 87 int winningStreakCount = pref.getInt("WINNING_STREAK_COUNT", 0); 88 int lastComHand = pref.getInt("LAST_COM_HAND", 0); 89 int lastGameResult = pref.getInt("GAME_RESULT", -1); 90 editor.putInt("GAME_COUNT",gameCount + 1); 91 if (lastGameResult == 2 && gameResult == 2) { 92 //コンピュータが連勝した場合 93 editor.putInt("WINNING_STREAK_COUNT", winningStreakCount + 1); 94 } else { 95 editor.putInt("WINNING_STREAK_COUNT", 0); 96 } 97 editor.putInt("LAST_MY_HAND" , myHand) ; 98 editor.putInt("LAST_COM_HAND" , comHand) ; 99 editor.putInt("BEFORE_LAST_COM_HAND" , lastComHand) ; 100 editor.putInt("GAME_RESULT" , gameResult) ; 101 102 editor.commit(); 103 } 104 private int getHand() { 105 int hand = (int) (Math.random() * 3); 106 SharedPreferences pref = 107 PreferenceManager.getDefaultSharedPreferences(this); 108 int gameCount = pref.getInt("GAME_COUNT", 0); 109 int winningStreakCount = pref.getInt("WINNING_STREAK_COUNT", 0); 110 int lastMyHand = pref.getInt("LAST_MY_HAND", 0); 111 int lastComHand = pref.getInt("LAST_COM_HAND", 0); 112 int beforeLastComHand = pref.getInt("BEFORE_LAST_COM_HAND", 0); 113 int gameResult = pref.getInt("GAME_RESULT", -1); 114 115 if (gameCount == 1) { 116 if (gameResult == 2) { 117 //前回の勝負が1回目でコンピュータが勝った場合、 118 //コンピュータは次に出す手を変える 119 while (lastComHand == hand) { 120 hand = (int) (Math.random() * 3); 121 } 122 } else if (gameResult == 1) { 123 //前回の勝負が1回目でコンピュータが負けた場合、 124 //相手の出した手に勝つ手を出す。 125 hand = (lastMyHand - 1 + 3) % 3; 126 } 127 } else if (winningStreakCount > 0) { 128 if (beforeLastComHand == lastComHand) { 129 //同じ手で連勝した場合は手を変える。 130 while (lastComHand == hand) { 131 hand = (int) (Math.random() * 3); 132 } 133 } 134 } 135 return hand; 136 } 137}

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/12 04:29