我是android程序的新手,我正在制作一个有动画计数器的应用程序。每次我按“计数”按钮,计数就会增加,我想根据计数更改ImageView图像源。
我使用if条件来完成这个任务,而我想动态地执行它,因为我有9999个最大计数,所以我不能编写太多的if条件。
TextView textViewHeader;
static String value;
static int count;
static ImageButton imageButtonCountTasbeeh;
ImageView imageViewLsb,imageViewLsb1, imageViewLsb2, imageViewLsb3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tasbeeh_counter);
imageButtonCountTasbeeh = (ImageButton)findViewById(R.id.imageButtonCountTasbeeh);
textViewHeader = (TextView)findViewById(R.id.editTextTasbeehName);
imageButtonCountTasbeeh.setImageResource(R.drawable.imagebuttontasbeenpageselector);
imageViewLsb = (ImageView)findViewById(R.id.imageViewLsb);
imageViewLsb1 = (ImageView)findViewById(R.id.imageViewLsb1);
imageViewLsb2 = (ImageView)findViewById(R.id.imageViewLsb2);
imageViewLsb3 = (ImageView)findViewById(R.id.imageViewLsb3);
Bundle extras = getIntent().getExtras();
if (extras != null) {
value = extras.getString("tasbeehName");
}
textViewHeader.setText(value);
imageButtonCountTasbeeh.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Toast.makeText(getBaseContext(), "Hello you Just Clicked me", Toast.LENGTH_LONG).show();
count++;
if(count<10) {
int resID = getResources().getIdentifier("n" + count, "drawable", getPackageName());
imageViewLsb.setImageResource(resID);
}else if(count<20 && count>=10)
{
int count1 = count-10;
int resID = getResources().getIdentifier("n" + count1, "drawable", getPackageName());
imageViewLsb.setImageResource(resID);
imageViewLsb1.setImageResource(R.drawable.n1);
}else if(count<30 && count>=20)
{
int count1 = count-20;
int resID = getResources().getIdentifier("n" + count1, "drawable", getPackageName());
imageViewLsb.setImageResource(resID);
imageViewLsb1.setImageResource(R.drawable.n2);
}else if(count<40 && count>=30)
{
int count1 = count-30;
int resID = getResources().getIdentifier("n" + count1, "drawable", getPackageName());
imageViewLsb.setImageResource(resID);
imageViewLsb1.setImageResource(R.drawable.n3);
}else if(count<50 && count>=40)
{
int count1 = count-40;
int resID = getResources().getIdentifier("n" + count1, "drawable", getPackageName());
imageViewLsb.setImageResource(resID);
imageViewLsb1.setImageResource(R.drawable.n4);
}else if(count<60 && count>=50)
{
int count1 = count-50;
int resID = getResources().getIdentifier("n" + count1, "drawable", getPackageName());
imageViewLsb.setImageResource(resID);
imageViewLsb1.setImageResource(R.drawable.n5);
}else if(count<70 && count>=60)
{
int count1 = count-60;
int resID = getResources().getIdentifier("n" + count1, "drawable", getPackageName());
imageViewLsb.setImageResource(resID);
imageViewLsb1.setImageResource(R.drawable.n6);
}else if(count<80 && count>=70)
{
int count1 = count-70;
int resID = getResources().getIdentifier("n" + count1, "drawable", getPackageName());
imageViewLsb.setImageResource(resID);
imageViewLsb1.setImageResource(R.drawable.n7);
}else if(count<90 && count>=80)
{
int count1 = count-80;
int resID = getResources().getIdentifier("n" + count1, "drawable", getPackageName());
imageViewLsb.setImageResource(resID);
imageViewLsb1.setImageResource(R.drawable.n8);
}
}
});
}}
发布于 2016-03-24 21:16:37
试试这个:
imageButtonCountTasbeeh.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Toast.makeText(getBaseContext(), "Hello you Just Clicked me", Toast.LENGTH_LONG).show();
count++;
if (count > 999)
imageViewLsb3.setImageResource(getResIdDrawableByNumber(count / 1000));
if (count > 99 ) {
int n100 = (count % 1000) / 100;
imageViewLsb2.setImageResource(getResIdDrawableByNumber(n100));
}
if (count > 9) {
int number10 = (count % 100) / 10;
imageViewLsb1.setImageResource(getResIdDrawableByNumber(number10));
}
imageViewLsb.setImageResource(getResIdDrawableByNumber(count % 10));
}
});使用此方法按数字值获取相应的图像资源id:
public int getResIdDrawableByNumber(int count){
return = getResources().getIdentifier("n" + count, "drawable", getPackageName());
}希望这能帮上忙!
发布于 2016-03-24 21:16:12
您可以通过这样的resource id来完成这个任务:
int drawableResourceId = this.getResources().getIdentifier("nameOfDrawable", "drawable", this.getPackageName());这里,您必须用nameOfDrawable替换为n1,n2,.,n9999。
因此:
@Override
public void onClick(View v) {
count++;
int drawableResourceId = this.getResources().getIdentifier("n"+count, "drawable", this.getPackageName());
imageViewLsb.setImageResource(drawableResourceId);
}https://stackoverflow.com/questions/36210063
复制相似问题