我正在开发一个分为关卡的简单安卓游戏。我希望在该级别完成后,在级别按钮(在级别选择菜单上)旁边出现一个检查图标(ImageView)。 按下按钮后完成一个级别,如下所示(InsideLevelActivity):
final EditText level1editText=(EditText)findViewById(R.id.level1editText);
Button level1completeButton=(Button)findViewById(R.id.level1completeButton);
level1completeButton.setOnClickListener(new View.OnClickListener()
public void onClick(View v)
{
final String edittext=level1editText.getText().toString();
if(edittext.trim().equals("Complete level"))
{
{
Intent visible1 = new Intent();
visible1.putExtra("iconvisible",0);
startActivity(visible1);
{
LayoutInflater inflater = getLayoutInflater();
View view = inflater.inflate(R.layout.activity_level1completed,
(ViewGroup) findViewById(R.id.img11_toast));
Toast toast = new Toast(Level1Activity.this);
toast.setView(view);
toast.show();
{ onBackPressed(); {
return;
}
}
}
else
{
Toast.makeText(Level1Activity.this,
"Type Complete level.", Toast.LENGTH_LONG).show();
}
然后返回级别选择菜单活动。我正在尝试以这种方式检索数据(LevelMenuActivity):
ImageView logocheckicon1=(ImageView)findViewById(R.id.logocheckicon1);
logocheckicon1.setVisibility(View.GONE);
Intent visible1 = getIntent();
int state = Integer.parseInt(visible1.getExtras().get("iconvisible").toString());
complete1.setVisibility(iconvisible);
过去几天我尝试了很多方法,包括this one (how to pass data between two activities)。我甚至试图使检查图标(ImageView)不可见,并再次显示this way。
此外,每个已完成级别旁边都会显示相同的检查图标。是否可以仅使用一个ImageView来完成此操作(不创建相同drawable的10个不同ID)?
提前谢谢。
编辑: 如果我不够清楚,我道歉。我认为有一些方法可以改变位于MainActivity上的图像的可见性,并在另一个活动的按钮内部使用intent。 谢谢你的回答。
EDIT2:添加了另一个不成功尝试的代码。
答案 0 :(得分:1)
将图像从一个活动传递到另一个活动。首先将图像转换为位图,然后将base64转换为字符串,然后通过意图传递或保存共享偏好。
public boolean saveImage(Context context, Bitmap realImage) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
realImage.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] b = baos.toByteArray();
String encodedImage = Base64.encodeToString(b, Base64.DEFAULT);
}
然后通过意图将此图像带入另一项活动或从共享偏好中获取
public Bitmap getFacebookImageBitmap(Context context)
{
Bitmap bitmap = null;
String saveimage=from intent or share-preference string.
if( !saveimage.equalsIgnoreCase("") ){
byte[] b = Base64.decode(saveimage, Base64.DEFAULT);
bitmap = BitmapFactory.decodeByteArray(b, 0, b.length);
}
return bitmap;
}
谢谢
答案 1 :(得分:1)
您可以通过意图传递图像。首先将图像转换为字节数组,然后将其与意图一起发送。
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
byte[] b = baos.toByteArray();
Intent intent = new Intent(this, ActivityB.class);
intent.putExtra("picture", b);
startActivity(intent);
然后你可以从下一个活动中检索这个图像。
Bundle extras = getIntent().getExtras();
byte[] b = extras.getByteArray("picture");
Bitmap bmp = BitmapFactory.decodeByteArray(b, 0, b.length);
ImageView image = (ImageView) findViewById(R.id.imageView1);
image.setImageBitmap(bmp);
希望这会对你有所帮助。