Android 单击图像时全屏显示图像

Android 单击图像时全屏显示图像,android,android-imageview,Android,Android Imageview,我正在使用即时聊天应用程序。我在活动中有3个选项卡,即聊天、组和联系人。在组选项卡中,我有一个使用BaseAdapter填充的列表视图。现在列表视图可以包含图像。单击图像后,我想全屏显示它 在adpater内部,我在单击imageview时使用以下代码: //On clicking image,display the image in full screen imageView.setOnClickListener(new View.OnClickListener() {

我正在使用即时聊天应用程序。我在活动中有3个选项卡,即聊天、组和联系人。在组选项卡中,我有一个使用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);              
            }
        });
这里“image”是图像的基本表示形式

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;
    }
}
class ModelBase64{
   public static String base64Image;
}
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;
}
}

但它对我不起作用。当我单击它时,它将移动到FullIMageActivity并立即移回“组”选项卡。请帮助我修复它。

你做错了,这就是你可以做到的

在你的第一次活动中

首先将
ImageView
转换为位图

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

Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("BitmapImage", bitmap);
在第二个活动中

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

然后在您的
图像视图中显示位图

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

ModelBase64.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;
    }
}
class ModelBase64{
   public static String base64Image;
}
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;
}
}
现在将图像字符串分配给
base64图像

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");
        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;
    }
}
class ModelBase64{
   public static String base64Image;
}
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;
}
}

简单来说,最适合您的解决方案是ImageViewPopusPer。


从该url获取源代码,并将类名设为“ImageViewPoputUpulper”。之后,每当您想在单击时看到弹出窗口时,在该图像上定义setOnClicklistner,如下所示

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

将图像作为intent的一部分传递可能不是一个好主意:)为什么不将图像保存在内部或外部存储器中的某个位置,并提供intent中下一个活动的路径?嘿,Deepak,你在用XMPP和Asmack库制作吗?@NikhilBorad:我在我的应用程序中使用socket.io-client库。@NikhilBorad:当然。来吧。。。你应该发布一些零件代码并解释一些东西。您可以在注释中发布不正确的链接,从这个url获取源代码,并将类名命名为“ImageViewPopusUpsulPer”。之后,无论何时您希望在单击时看到弹出窗口,都可以在该图像上定义setOnClicklistner,如profile_image.setOnClickListener(new View.OnClickListener(){@Override public void onClick(View v){imageViewPopupUpulper.enablePopUpOnClick(activity,profile_image,profile_image.getDrawable();}});明白了,但你必须更新你的答案,并将此评论放在你的帖子中。