gpt4 book ai didi

java - 有没有办法为同一个 ImageView 使用多个源?

转载 作者:行者123 更新时间:2023-12-02 10:03:21 27 4
gpt4 key购买 nike

我正在尝试使用一个 Activity 来显示数组中的随机对象。该对象是从 Intent 传入的。

我尝试为每个对象使用图像,然后为正确的对象显示正确的图像。

到目前为止,我一直在使用可绘制文件夹来保存图像,然后通过 XML 加载它们,但这会阻止我在同一个 ImageView 中使用多个图像。我尝试使用 imageview.setImageResource(R.drawable.imagename);但由于某种原因,这似乎不喜欢加载。在这种情况下,我需要为每个对象创建一个新的 Activity 吗?

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_random_race);

TextView name = (TextView)findViewById(R.id.raceName);
Intent secondIntent = getIntent();
Race message = (Race)secondIntent.getSerializableExtra("RACE");

ImageView image = (ImageView) findViewById(R.id.raceImage);
image.setImageResource(R.drawable.hacan);
image.setImageBitmap(imageToBitmapImage(message, image));

name.setText(message.getName());
}

字节转位图方法

 public Bitmap imageToBitmapImage (Race message, ImageView image){
Bitmap bmp;
try {
FileInputStream in = new FileInputStream(message.getImageName());
BufferedInputStream buffer = new BufferedInputStream(in);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int input = buffer.read();

while (input != -1){
baos.write(input);
input = buffer.read();
}

byte[] bytes = baos.toByteArray();
bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
return bmp;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}

我正在谈论的每个对象的类。

public class Race implements Serializable {
private String name;
private String imageName; //name of file within drawable

最佳答案

正如 @XavierFalempin 评论的那样,您无法通过文件流访问资源。使用 setImageResource() 应该可以。正在关注this answer您的 onCreate() 方法应如下所示:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_random_race);

TextView name = (TextView)findViewById(R.id.raceName);
Intent secondIntent = getIntent();
Race message = (Race)secondIntent.getSerializableExtra("RACE");

ImageView image = (ImageView) findViewById(R.id.raceImage);
image.setImageResource(getResources().getIdentifier(message.getImageName(),
"drawable",
getPackageName()));

name.setText(message.getName());
}

关于java - 有没有办法为同一个 ImageView 使用多个源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55479263/

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