gpt4 book ai didi

java - 根据条件更改图像

转载 作者:行者123 更新时间:2023-12-01 13:18:38 27 4
gpt4 key购买 nike

我正在开发一个 BMI 计算器,其中哪种质量状态会显示不同的图像。

但我不知道该怎么做,而且我在 R.id.drawable 上遇到错误图片 ID 为“imageBody”。

package com.example.calculadorimc;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RadioGroup;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;

public class MainActivity extends Activity {
private RadioGroup rgsexo;
EditText editPeso;
EditText editAltura;
TextView imcView;
SeekBar alterarAltura;
SeekBar alterarPeso;
ImageView imagem;

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

editPeso = (EditText)findViewById(R.id.editPeso);
editAltura = (EditText)findViewById(R.id.editAltura);
imcView = (TextView)findViewById(R.id.imcView);
alterarAltura = (SeekBar)findViewById(R.id.alterarAltura);
alterarPeso = (SeekBar)findViewById(R.id.alterarPeso);
imagem = (ImageView)findViewById(R.id.imageBody);
alterarAltura.setOnSeekBarChangeListener(alteraralturaListener);
alterarPeso.setOnSeekBarChangeListener(alterarpesoListener);


}

private OnSeekBarChangeListener alteraralturaListener = new OnSeekBarChangeListener() {

@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// TODO Auto-generated method stub

double setAltura = (alterarAltura.getProgress()) * .01d;
// mostra na caixa o valor novo
editAltura.setText(String.format("%.02f", setAltura).replace(',', '.'));
}

@Override
public void onStopTrackingTouch(SeekBar seekBar) {

}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {

}
};
private OnSeekBarChangeListener alterarpesoListener = new OnSeekBarChangeListener() {

@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// TODO Auto-generated method stub
// Calcula o novo valor do TIP

int setPeso = (alterarPeso.getProgress());
// mostra na caixa o valor novo
editPeso.setText(String.valueOf(setPeso));
}

@Override
public void onStopTrackingTouch(SeekBar seekBar) {

}

@Override
public void onStartTrackingTouch(SeekBar seekBar) {

}
};
public void calculateClickHandler(View view) {

// make sure we handle the click of the calculator button

if (view.getId() == R.id.botaoCalcular) {

// get the users values from the widget references

float peso = Float.parseFloat(editPeso.getText().toString());
float altura = Float.parseFloat(editAltura.getText().toString());

// calculate the bmi value

float imcValue = calcularIMC(peso, altura);


// interpret the meaning of the bmi value
String imcInterpretation = interpretIMC(imcValue);

// now set the value in the result text

imcView.setText(String.format("%.02f", imcValue).replace(',', '.') + "-" + imcInterpretation);
}
}
// the formula to calculate the BMI index

// check for http://en.wikipedia.org/wiki/Body_mass_index
private float calcularIMC (float peso, float altura) {

return (float) (peso / (altura * altura));
}

// interpret what BMI means
private String interpretIMC(float imcValue) {

imagem = (ImageView)findViewById(R.id.imageBody);
int res;

rgsexo = (RadioGroup)findViewById(R.id.rgSexo);
int selectedId = rgsexo.getCheckedRadioButtonId(); // get the id

switch (selectedId) // switch on the button selected
{
case R.id.radioMasc:
if (imcValue < 20) {
res = r.drawable.slim;
return "Abaixo do Peso";
} else if (imcValue < 24.9) {
res = r.drawable.normal;
return "Peso Normal";
} else if (imcValue < 29.9) {
res = r.drawable.fat;
return "Acima do Peso";
} else if (imcValue < 39.9) {
res = r.drawable.fat;
return "Obesidade Moderada";
} else {
res = r.drawable.fat;
return "Obesidade Mórbida";
}
case R.id.radioFem:
if (imcValue < 19) {
return "Abaixo do Peso";
} else if (imcValue < 23.9) {

return "Peso Normal";
} else if (imcValue < 28.9) {

return "Acima do Peso";
} else if (imcValue < 38.9) {

return "Obesidade Moderada";
} else {
return "Obesidade Mórbida";
}
}
return null;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}

感谢大家的支持! :)

最佳答案

您应该将新图像设置为 ImageView像这样:

imagem = (ImageView)findViewById(R.id.imageBody);
imagem.setImageResource(R.drawable.my_image);

另请注意该方法 rgsexo.getCheckedRadioButtonId()不会为您提供 R 类的 id,但您需要通过 setId(int id) 设置到按钮的 id之前的方法,即在 xml 布局文件中。也许最好通过索引来区分组中的两个按钮,如下所示:

int radioButtonID = radioButtonGroup.getCheckedRadioButtonId();
View radioButton = radioButtonGroup.findViewById(radioButtonID);
int idx = radioButtonGroup.indexOfChild(radioButton);

所以整个方法是:

private String interpretIMC(float imcValue) {           
imagem = (ImageView)findViewById(R.id.imageBody);

rgsexo = (RadioGroup)findViewById(R.id.rgSexo);
int selectedId = rgsexo.getCheckedRadioButtonId(); // get the id
View radioButton = radioButtonGroup.findViewById(radioButtonID);
int idx = radioButtonGroup.indexOfChild(radioButton);

switch (idx) // switch on the button selected
{
case 0:
if (imcValue < 20) {
imagem.setImageResource(R.drawable.slim);
return "Abaixo do Peso";
} else if (imcValue < 24.9) {
imagem.setImageResource(R.drawable.normal);
return "Peso Normal";
} else if (imcValue < 29.9) {
imagem.setImageResource(R.drawable.fat);
return "Acima do Peso";
} else if (imcValue < 39.9) {
imagem.setImageResource(R.drawable.fat);
return "Obesidade Moderada";
} else {
imagem.setImageResource(R.drawable.fat);
return "Obesidade Mórbida";
}
break;
case 1:
if (imcValue < 19) {
return "Abaixo do Peso";
} else if (imcValue < 23.9) {
return "Peso Normal";
} else if (imcValue < 28.9) {
return "Acima do Peso";
} else if (imcValue < 38.9) {
return "Obesidade Moderada";
} else {
return "Obesidade Mórbida";
}
break;
}
}

关于java - 根据条件更改图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22237752/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com