2012-05-11 2 views
0

스위치 케이스 기능에 따라 이미지 중 하나를 표시해야하며 실제로 어떤 방법을 사용해야하는지 모릅니다. 정말로 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; 

답변

3

ImageView 하나를 사용하고 조건에 따라 이미지를 설정합니다. 나는 또한 귀하의 스위치 성명서로 약간 혼란스러워합니다. 나는, 당신은 단지 혈압 범위를 확인하고 이해할 수있는 바로는, 그래서 이런 코드 뭔가있을 것 :

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-ldpi, drawable-mdpi, drawable-hdpidrawable-xhdpi

+0

로 각 이미지의 서로 다른 해상도 버전이 어떤 상태 머신 등 UI 스레드에서 확실 모든 실행을 확인을 기반으로 이미지를 선택하기위한 표준 및 널리 사용되는 방법이다. – ScouseChris

+0

덕분에이게 더 명확 해졌습니다. status_image는 단 하나의 질문 만있을뿐입니다 (애니메이션 일 수도 있고 기본값 임). 나이? –

+0

@DianaC XML에서 'id = "+ @ id/status_image"또는 비슷한 것을 사용하여 ImageView의 이름을 지정해야합니다. 이것은 XML에서 사용한 것과 같은 이름입니다. XML로 ImageView를 만들지 않았다면, 그 대신에'ImageView image = new ImageView (this);'와 같은 것을 쓰게 될 것입니다. –

0

귀하 switch은 항상 case 1:에 들어갈 것이므로 switch/case 항목을 제거하고으로 처리하십시오.에만 해당됩니다.

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 마지막 그래서 위해 가장 중요한 사건을 덮어 쓰게됩니다 일치하는 경우.