我正在开发一个即时聊天应用程序。我在一个活动中有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。请帮我修复它。
答案 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());
}
});