在开关盒功能中正确显示图像?(Android)

时间:2012-05-11 12:59:19

标签: android

所以我需要根据我的开关盒功能显示其中一个图像,我真的不知道最好的方法是什么。我是否真的需要将它们放在xml文件中,我可以在函数中绘制它们吗?另外,我是否需要将此功能放入活动中?

我可以为您提供我的开关案例功能:

public void BloodStatistics(){
        String state;
        int cases=1;
        switch(cases){
        case 1: if(sys<90 && dys<60)
            state="Hypotension";
        break;
        case 2: if(sys>90 && sys<119 && dys>60 && dys<79)
            state="Desriable";
        break;
        case 3: if(sys>120 && sys<139 && dys>80 && dys<89)
            state="Prehypertension";
        break;
        case 4: if(sys>140 && sys<159 && dys>90 && dys<99)
            state="Hypertension Stage 1";
        break;
        case 5: if(sys>160 && sys<179 && dys>100 && dys<109)
            state="Hypertension Stage 2";
        break;
        case 6: if(sys>=180 && dys>=110)
            state="Hypertension Crisis";
        break;
        case 7: if(sys<90 && dys>=60)
            state="Hypotension";
        break;
        default: state="invalid mesurements";
        break;

        }
    }

这些是我的照片:

ImageView Hypotension, Desriable, Prehypertension, Hypertension_Stage_1, Hypertension_Stage_2, Hypertension_Crisis;

如果问题看起来太容易,我很抱歉:(

2 个答案:

答案 0 :(得分:3)

我会使用一个ImageView,然后根据您的条件将图像设置为它。你的switch语句我也有些困惑。根据我的理解,你只是检查血压范围,所以我的代码是这样的:

ImageView image = findViewById(R.id.status_image);
int res;

if(sys<90 && dys<60) {
    res = r.drawable.Hypotension;
}
else if(sys>90 && sys<119 && dys>60 && dys<79) {
    res = r.drawable.Desriable;
}
else if(sys>120 && sys<139 && dys>80 && dys<89) {
    res = r.drawable.Prehypertension;
}
else if(sys>140 && sys<159 && dys>90 && dys<99) {
    res = r.drawable.Hypertension_Stage_1;
}
else if(sys>160 && sys<179 && dys>100 && dys<109) {
    res = r.drawable.Hypertension_Stage_2;
}
else if(sys>=180 && dys>=110) {
    res = r.drawable.Hypertension_Crisis;
}
else if(sys<90 && dys>=60) {
    res = r.drawable.Hypotension;
}
else {
    res = 0;
}

if(res != 0) {
    image.setImageDrawable(res);
}

确保将包含您指定名称的图片放入drawable文件夹(或者更好的是,将每张图片的不同分辨率版本放入drawable-ldpidrawable-mdpi,{{1 }和drawable-hdpi

答案 1 :(得分:0)

您的switch没有任何意义,因为您将始终进入case 1:,删除switch / case内容并仅使用if ... else进行操作。

    String state="invalid mesurements"; // or use the R.id. here and make state int
    if(sys<90 && dys<60)
        state="Hypotension";
    if(sys>90 && sys<119 && dys>60 && dys<79)
        state="Desriable";
    if(sys>120 && sys<139 && dys>80 && dys<89)
        state="Prehypertension";
    if(sys>140 && sys<159 && dys>90 && dys<99)
        state="Hypertension Stage 1";
    if(sys>160 && sys<179 && dys>100 && dys<109)
        state="Hypertension Stage 2";
    if(sys>=180 && dys>=110)
        state="Hypertension Crisis";
    if(sys<90 && dys>=60)
        state="Hypotension";

要小心:如果多个if匹配,条件state将被覆盖,因此请将最重要的案例排在最后。