Android,从另一个类运行一个方法

时间:2013-01-22 14:52:50

标签: android

我的游戏需要更新每个类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));

3 个答案:

答案 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等,如您的示例所示。