我的游戏需要更新每个类onCreate中TextView的背景,以显示玩家的健康状况,但是目前我能想到的唯一方法就是这个
int Health = 100;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_act1);
if (Health == 100){
HealthDisplay.setBackgroundResource(R.drawable.health100);
} else if (Health == 99){
HealthDisplay.setBackgroundResource(R.drawable.health99);
} else if (Health == 98){
HealthDisplay.setBackgroundResource(R.drawable.health98);
} else if (Health == 99){
HealthDisplay.setBackgroundResource(R.drawable.health98);
} else if (Health == 99){
HealthDisplay.setBackgroundResource(R.drawable.health98);
} else if (Health == 99){
HealthDisplay.setBackgroundResource(R.drawable.health98);
}
etc.
}
必须有一种更容易/更快的方法,特别是因为我需要对其他两个统计数据进行类似的操作。
我考虑过让一个单独的类处理它,并在onCreate中有一行或两行,告诉它运行该类来更新背景图像然后返回到这个。
或许也许这样的事情可能吗?
int Health = 100;
HealthDisplay.setBackgroundResource(R.drawable.health(Health));
答案 0 :(得分:0)
“我的游戏需要更新每个课程中的TextView背景,以显示播放器的健康状况”
抱歉,我不明白。如果要在运行时更新后台,请不要在onCreate中执行此操作,因为它只被调用一次(创建活动时)。
只需创建一个方法,通过在TextView上调用setBackgroundResource来更新此背景。
答案 1 :(得分:0)
我建议使用一张图片(完全健康)并每次剪裁并根据您的健康水平显示一个百分比。例如:
private ImageView healthLevel;
private ClipDrawable clipDrawable;
@Override
public void onCreate(Bundle savedInstanceState) {
healthLevel = (ImageView ) findViewById(R.id.health); //there a corresponding ImageView in the layout
BitmapDrawable bitmapDrawable = new BitmapDrawable(BitmapFactory.decodeResource(getResources(), R.drawable.full_health));
//vertical bar cropped from top
clipDrawable = new ClipDrawable(bitmapDrawable, Gravity.BOTTOM, ClipDrawable.VERTICAL);
healthLevel.setImageDrawable(clipDrawable);
}
然后在另一个线程中你会打电话:
int health = 54;
clipDrawable.setLevel(health);
clipDrawable.invalidateSelf();
答案 2 :(得分:0)
ThomasKa的答案很好。裁剪一个资源将为您节省大量时间,如果做得好,看起来很好。但是,如果您愿意,可以使用100个单独的drawable。
您要做的是适当地命名您的drawable(带有数字后缀),并按名称抓取它们。您可以使用Resources.getIdentifier()
,例如:
Resources res = getResources();
int resId = res.getIdentifier("health" + Health, "drawable", getPackageName());
HealthDisplay.setBackgroundResource(resId);
该示例假设您的drawable名为health100,health99等,如您的示例所示。