从活动中发送图像并将其置于其他活动中

时间:2016-12-29 20:14:17

标签: java android

我有3个按钮的Activity1。 btn1和2和3.并且Activity2有3个imageViews,imageView1和2和3.我想当我在act1中单击btn1时,将图像发送到act2中的imageView1(可见),再次单击btn1时,图像将消失(不可见)在act2中。当我在act2中单击btn2时,将图像发送到act2中的imageView2(可见),再次单击btn2时,图像将在act2中消失(不可见)。还有btn3。当我退出应用程序时,我会保存更改并且不要错过更改。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

不要将图像从act1发送到act2,只需将它们放在act2中即可。然后当您单击act1中的按钮时,通过putExtra()将按下的按钮的标签发送到act2,如下所示:

public void clickButton1(View view) {
    Intent intent = new Intent(this, act2.class);
    intent.putExtra("bttnTag", 1);
    startActivity(intent);
}

然后对其他两个按钮执行相同操作,将2和3作为相应的标记发送。 然后在act2上,您可以按如下方式点击哪个按钮:

    Intent intent = getIntent();
    int btnClicked = intent.get("bttnTag", -1);

然后您可以使用该btnClicked值来选择您必须使三个ImageView中的哪一个可见/不可见。 希望它有所帮助。

答案 1 :(得分:0)

您可以使用意图在两个活动之间传递信息。你可以:

  1. 将图片的Bitmap转换为发送活动中的byte[],然后将其传递给接收活动或
  2. 将文件位置从发送活动传递到接收活动
  3. 请注意,前一种方法更昂贵,因为您要将图像转换为Bitmap,然后转换为byte[],然后在两个活动之间传递“大量”信息。在后一种方法中,您只是传递一个位置并渲染资源。

    方法1的示例:

    在发送活动中:

    // Let image_name be the name of the image file located in your drawable folder
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.image_name);     
    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 imageView = (ImageView) findViewById(R.id.image_view_1);
    

    然后,您可以通过在按钮的ImageView中添加以下行来渲染OnClickListener中的图片。

    imageView.setImageBitmap(bmp);
    

    方法2的示例:

    在发送活动中:

    Intent intent = new Intent(this, ActivityB.class);
    intent.putExtra("picname", fileName);
    

    在接收活动中:

    Bundle extras = getIntent().getExtras();
    String fileName = extras.getString("picname");
    
    File filePath = getFileStreamPath(fileName);
    Drawable d = Drawable.createFromPath(filePath.toString());
    

    然后,您可以通过在按钮的ImageView中添加以下行来设置OnClickListener drawable。

    someImageView.setBackgroundDrawable(d);
    

    关于您的其他问题:

    您可以通过操纵ImageView的可见性隐藏/显示图片。

    imageView.setVisibility(View.VISIBLE);
    imageView.setVisibility(View.INVISIBLE);
    

    您还可以使用名为Bundle的{​​{1}}来保存图片的状态。确保在切换图片时以及savedInstanceState方法更新图片的状态(可见性)。