【问题标题】:Click on Imageview and open fullscreen-image in new Activity单击 Imageview 并在新 Activity 中打开 fullscreen-image
【发布时间】:2017-09-17 01:39:19
【问题描述】:

我有一个 MainActivity,其中 4 个图像视图放置在 4 个不同的卡片视图中。
我想要的是,当单击其中一个卡片视图/图像视图时,它会在新活动中全屏显示图像。

我想我可以创建 4 个新活动并在每个活动中放置一个全屏图像视图,并引用 MainActivity 中选定的图像。但这种方法似乎并不那么顺利。

我更喜欢一个“imageActivity”,然后传递选定的 imageview。这可以通过传递资源ID的参数来完成吗?

【问题讨论】:

标签: java android


【解决方案1】:

可能有一个比我提供的更好的解决方案,但即使我正在学习,如果它只是大约 4 个卡片视图,我会做以下事情。

在 MainActivity 中创建一个公共静态变量
public static Drawable resId;

像这样为每个Imageview 设置onClickListener。

ImageView image1 = (ImageView) findViewById(R.id.image1);
image1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        resId = R.drawable.image1;
        Intent intent = new Intent(MainActivity.this,your_fullscreen_activity_name.class);
        startActivity(intent);
        
    }
});
ImageView image2 = (ImageView) findViewById(R.id.image2);
image2.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        resId = R.drawable.image2;
        Intent intent = new Intent(MainActivity.this,your_fullscreen_activity_name.class);
        startActivity(intent);
        
    }
});
ImageView image3 = (ImageView) findViewById(R.id.image3);
image3.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        resId = R.drawable.image3;
        Intent intent = new Intent(MainActivity.this,your_fullscreen_activity_name.class);
        startActivity(intent);
        
    }
});
ImageView image4 = (ImageView) findViewById(R.id.image4);
image4.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        resId = R.drawable.image4;
        Intent intent = new Intent(MainActivity.this,your_fullscreen_activity_name.class);
        startActivity(intent);
        
    }
});

或在卡片视图上,请参阅 herehere
创建一个全屏活动并将其名称放在这些意图中。
然后在这个fullscreenactivity的java文件中,获取layout/imageview的引用,做这个。

    ViewGroup viewGroup = findViewById(R.id.fullscreenLayout);
    viewGroup.setBackgroundDrawable(MainActivity.resId);

    ImageView imageView = findViewById(R.id.fullscreenImageview); 
    imageView .setBackgroundDrawable(MainActivity.resId);

您可以使用imageViewviewGroup

是的,不要忘记在全屏活动的 XML 文件中添加布局 id 或创建与父布局大小相同的 imagview。
如果有任何令人困惑/没有帮助的地方,我会提供帮助。

【讨论】:

  • 为什么不将Home.flag 设置为可绘制资源?
  • 另外,静态变量确实不需要。通过该 Intent 传递整数
  • @cricket_007 是的,可以有意识地使用 putExtra,也可以在 Home/Mainactivity 中创建一个 Drawable 变量并传递它,但这里也没有错。更多我会获得经验,更好我会尝试回答。谢谢你的建议,我会努力改进的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-23
  • 2023-01-22
  • 1970-01-01
  • 2017-04-04
  • 1970-01-01
  • 2013-02-10
相关资源
最近更新 更多