我试图让我的按钮改为不同的图片和一套不同的法则 它是一个字母应用程序,我目前已经工作,它在市场上....我想让它随机改变图片,然后跟随alphebet通过整个程序,但我无法弄清楚如何让按钮随机化所以这是我正在使用的基本代码
package com.alphafree;
import java.util.Random;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
public class letterA extends Activity implements OnClickListener {
/** Called when the activity is first created. */
private MediaPlayer mp;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int[] _26Num = new int[6];
int i, number;
Random r1 = new Random(); // Random generator
for (i = 1; i < _26Num.length; i++) { // Pick 6 Random Numbers
do {
number = (int) (r1.nextDouble() * 26);
_26Num[1] = 1;
} while (!(number != 0 && number != _26Num[1]
&& number != _26Num[2] && number != _26Num[3]
&& number != _26Num[4] && number != _26Num[5]));
_26Num[i] = number;
}
// defines the buttons
View but1 = findViewById(R.id.let1);
View but2 = findViewById(R.id.let2);
View but3 = findViewById(R.id.let3);
View but4 = findViewById(R.id.let4);
View but5 = findViewById(R.id.let5);
but1.setOnClickListener(this);
but2.setOnClickListener(this);
but3.setOnClickListener(this);
but4.setOnClickListener(this);
but5.setOnClickListener(this);
// set the random content view
int random = (int) Math.ceil(Math.random() * 5);
if (random == 1) {
setContentView(R.layout.letter1a);
} else if (random == 2) {
setContentView(R.layout.letter1a);
} else if (random == 3) {
setContentView(R.layout.letter1a);
} else if (random == 4) {
setContentView(R.layout.letter1a);
} else if (random == 5) {
setContentView(R.layout.letter1a);
}
// here is were i need to set up the buttons
if (_26Num[1] == 1) {
let1.setBackgroundResource(R.drawable.let_a);
} else if (_26Num[1] == 2) {
setContentView(R.layout.letter1a);
}
}
public void onClick(View v) {
if (mp != null)
mp.release();
switch (v.getId()) {
case R.id.let1:
mp = MediaPlayer.create(this, R.raw.correct);
{
new AlertDialog.Builder(this)
.setTitle("Y A Y!!!! Y O U R R I G H T")
.setMessage(
"Thats the letter 'A' You Chose Correct")
.setNeutralButton("Done", null).show();
startActivity(new Intent("com.alphafree.LETTERB"));
}
break;
}
mp.seekTo(0);
mp.start();
}
}
答案 0 :(得分:1)
你可以这样做:
private static final int[] num2DrawableMap = new int[] {
R.drawable.letterA,
R.drawable.letterB,
// etc
};
private static final int[] num2LayoutMap = new int[] {
R.layout.layoutA,
R.layout.layoutB,
// etc
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int[] _26Num = new int[6];
int i, number;
Random r1 = new Random(); // Random generator
for (i = 1; i < _26Num.length; i++) { // Pick 6 Random Numbers
do {
// don't you like r1.nextInt(26) ?
number = (int) (r1.nextDouble() * 26);
// always 1? why in that loop?
_26Num[1] = 1;
} while (!(number != 0 && number != _26Num[1]
&& number != _26Num[2] && number != _26Num[3]
&& number != _26Num[4] && number != _26Num[5]));
_26Num[i] = number;
}
// set the random content view
int random = r1.nextInt(num2LayoutMap.size);
setContentView(num2LayoutMap[random]);
// find the buttons
View[] buts = new View[5];
buts[0] = findViewById(R.id.let1);
buts[1] = findViewById(R.id.let2);
buts[2] = findViewById(R.id.let3);
buts[3] = findViewById(R.id.let4);
buts[4] = findViewById(R.id.let5);
for (View but : buts) {
but.setOnClickListener(this);
int drawableId = num2DrawableMap[_26Num[i]];
but.setBackgroundResource(drawableId);
}
}
但是:Buttons必须在每个layout.xml文件中,并且它们需要具有相同的id。否则你找不到它们。您还需要setContentView()
才能使用findViewById()
答案 1 :(得分:0)
每次除了setContentView之外,您是否可以一次添加所有内容并保持其对GONE的可见性。你想要显示的按钮只是让它可见到VISIBLE。如果你想改变使上一个为GONE并使新的可见。