首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用Count++编码计数器图像以进行更改

如何用Count++编码计数器图像以进行更改
EN

Stack Overflow用户
提问于 2016-03-24 21:12:06
回答 2查看 89关注 0票数 1

我是android程序的新手,我正在制作一个有动画计数器的应用程序。每次我按“计数”按钮,计数就会增加,我想根据计数更改ImageView图像源。

我使用if条件来完成这个任务,而我想动态地执行它,因为我有9999个最大计数,所以我不能编写太多的if条件。

代码语言:javascript
复制
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);
            }



        }
    });




}

}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-24 21:16:37

试试这个:

代码语言:javascript
复制
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:

代码语言:javascript
复制
public int getResIdDrawableByNumber(int count){    
     return = getResources().getIdentifier("n" + count, "drawable", getPackageName());    
}

希望这能帮上忙!

票数 1
EN

Stack Overflow用户

发布于 2016-03-24 21:16:12

您可以通过这样的resource id来完成这个任务:

代码语言:javascript
复制
int drawableResourceId = this.getResources().getIdentifier("nameOfDrawable", "drawable", this.getPackageName());

这里,您必须用nameOfDrawable替换为n1n2,.,n9999

因此:

代码语言:javascript
复制
@Override
public void onClick(View v) {
     count++;
     int drawableResourceId = this.getResources().getIdentifier("n"+count, "drawable", this.getPackageName());           
     imageViewLsb.setImageResource(drawableResourceId);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36210063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档