Android如何迭代R.drawable对象

时间:2012-03-30 17:57:50

标签: android for-loop drawable

我正在尝试逐帧动画显示并想要遍历drawables,因此我不必在帧数增加时键入所有名称。

但是我似乎无法找到如何遍历drawables。我已经查了一些java for循环教程,但他们都只是打印的东西(据我确定)不必在这里使用。

这是相关代码(图片的名称是dude1,dude2,...):

   private void startAnimation(){
       animation = new AnimationDrawable();
       for (int i = 1; i < 4; i++) {
           animation.addFrame(getResources().getDrawable(R.drawable.dude(i)), 100);
       }
       animation.setOneShot(true);

       ImageView imageView = (ImageView) findViewById(R.id.img);
       RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(80, 90);
       params.alignWithParent = true;
       params.addRule(RelativeLayout.CENTER_IN_PARENT);      
       imageView.setLayoutParams(params);
       imageView.setImageDrawable(animation);
       imageView.post(new Starter());
   }

THX!

3 个答案:

答案 0 :(得分:6)

我认为最后的答案很正确,但可能是:

for (int i=0; i <10;i++){
      animation.addFrame(
         getResources().getDrawable(getResources().getIdentifier("dude" + i,"drawable",
             getPackageName()),100);
}

答案 1 :(得分:2)

试试这个。 getResources()需要一个背景。

for (int i=0;i<10;i++){
    animation.addFrame(getResources().getIdentifier("dude" + i,"drawable", getPackageName()),100);
}

这里,假设有10帧(i <10)。

答案 2 :(得分:1)

我使用 Simon 的答案来迭代我的名为“c1”到“c54”并放在数组中的drawable。这是我刚刚使用的代码,对我有用。

private void getDeckDrawables() {
    for (int i=0; i<54; i++){
        int j = i + 1;
        intArrDeck[i] = getResources().getIdentifier("c"+j,"drawable",getPackageName());
    }
}

以前,我手动输入它们,这对我来说占用了太多空间。

private void getDeckDrawables() {
    intArrDeck[0]=R.drawable.c1;
    intArrDeck[1]=R.drawable.c2;
    intArrDeck[2]=R.drawable.c3;
}