我正在尝试逐帧动画显示并想要遍历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!
答案 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;
}