2

我正在开发一个简单的安卓游戏,分为多个级别。当该级别完成时,我希望在级别按钮(在级别选择菜单上)旁边出现一个复选图标(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);

在过去的几天里,我尝试了很多方法,包括这个(如何在两个活动之间传递数据)。我什至试图让检查图标(ImageView)不可见,并以这种方式再次可见。

此外,每个完成的关卡旁边都会出现相同的检查图标。是否可以仅使用一个 ImageView 来完成此操作(无需创建相同可绘制对象的 10 个不同 ID)?

先感谢您。

编辑:如果我不够清楚,我很抱歉。我认为有一些方法可以改变图像的可见性,例如,在 MainActivity 上,意图在另一个活动的按钮内。谢谢您的回答。

EDIT2:添加了另一个不成功尝试的代码。

4

2 回答 2

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);

希望这会帮助你。

于 2012-10-24T04:49:05.810 回答
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;
}

谢谢

于 2012-10-24T03:41:58.210 回答