单击时全屏显示图像

时间:2016-04-28 12:34:18

标签: android android-imageview

我正在开发一个即时聊天应用程序。我在一个活动中有3个选项卡,即Chat,Group和Contact。在Group选项卡中,我有一个使用BaseAdapter填充的列表视图。现在列表视图可以包含图像。点击图像,我想全屏显示。

在adpater内部,我在点击imageview时使用以下代码:

//On clicking image,display the image in full screen


 imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(context, FullImageActivity.class);
                intent.putExtra("image", image);
                context.startActivity(intent);              
            }
        });

这里"图像"是图像的基础64表示。

FullImageActivity.java

    public class FullImageActivity extends AppCompatActivity {
    ImageView imgFullImage;

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

        ///findViewBYID
        imgFullImage = (ImageView) findViewById(R.id.fullImage);

        Bundle bundle = getIntent().getExtras();
        String image = bundle.getString("image");
        Bitmap bitmap = decodeImage(image);
        imgFullImage.setImageBitmap(bitmap);
    }    

    private Bitmap decodeImage(String data) {
        byte[] b = Base64.decode(data, Base64.DEFAULT);
        Bitmap bmp = BitmapFactory.decodeByteArray(b, 0, b.length);
        return bmp;
    }
}

但它对我不起作用。当我点击它时会移动到FullIMageActivity并立即返回Group Tab。请帮我修复它。

3 个答案:

答案 0 :(得分:1)

你做错了,你就是这样做的

在您的第一个活动中

ImageView转换为Bitmap First

imageView.buildDrawingCache();
Bitmap bitmap = imageView.getDrawingCache();

Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("BitmapImage", bitmap);

并在第二个活动中

 Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage");

然后在ImageView

中显示位图

答案 1 :(得分:1)

这里Base64图像是大字符串的数据,可以通过传递给其他活动是不好主意,因为在你可以丢失数据或应用程序获得更多负载。用于创建存储Base64字符串中的一个模型类并检索它。 如何?见下面的代码

<强> ModelBase64.java

class ModelBase64{
   public static String base64Image;
}

现在将图像字符串分配给base64Image

imageView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            ModelBase64.base64Image=image;
            Intent intent = new Intent(context, FullImageActivity.class);
            context.startActivity(intent);              
        }
    });

现在在另一个班级中重温

<强> FullImageActivity.java

public class FullImageActivity extends AppCompatActivity {
ImageView imgFullImage;

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

    ///findViewBYID
    imgFullImage = (ImageView) findViewById(R.id.fullImage);

   // Bundle bundle = getIntent().getExtras();
    //String image = bundle.getString("image");
    String image = ModelBase64.base64Image;
    Bitmap bitmap = decodeImage(image);
    imgFullImage.setImageBitmap(bitmap);
}    

private Bitmap decodeImage(String data) {
    byte[] b = Base64.decode(data, Base64.DEFAULT);
    Bitmap bmp = BitmapFactory.decodeByteArray(b, 0, b.length);
    return bmp;
}
}

答案 2 :(得分:0)

最适合您的解决方案是ImageViewPopUpHelper。 https://github.com/juliomarcos/ImageViewPopUpHelper

从此网址获取来源并制作一个类名称&#34; ImageViewPopUpHelper&#34;。之后,每当你想看到弹出单击时,在该图像上定义setOnClicklistner,如

profile_image.setOnClickListener(new View.OnClickListener() 
{ 
   @Override public void onClick(View v) { 
       ImageViewPopUpHelper.enablePopUpOnClick(activity, profile_image, profile_image.getDrawable());
   }
});