ImageView 全屏 Activity
ImageView fullscreen in Activity
我有一个填充有图像的 GridView。当我点击一个 GridView 项目时,它应该打开一个新的 Activity 并全屏显示图像,但它并没有发生。
我正在使用 Glide 库。我试过调试,但没有找到问题所在。
有什么想法吗?
Gallery.java
gridViewGallery.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Intent intent = new Intent(AdvertisementGallery.this,FullScreenImage.class);
intent.putExtra("image",i);
startActivity(intent);
}
});
FullScreenImage.java
viewPager.clearFocus();
imageItems = Constants.items;
bitmap = getIntent().getExtras().getInt("image");
// ImagePageAdapter imagePageAdapter = new ImagePageAdapter(this,imageItems);
imagePageAdapter = new ImageAdapter(this,imageItems);
viewPager.setAdapter(imagePageAdapter);
viewPager.setCurrentItem(bitmap,false);
class ImageAdapter 扩展了 PagerAdapter {
public Context context;
public ArrayList data = new ArrayList();
public ImageAdapter(Context context, ArrayList data){
this.context = context;
this.data = data;
}
@Override
public int getCount() {
return this.data.size();
}
@Override
public int getItemPosition(Object object) {
int position = data.indexOf(object);
return POSITION_NONE ;
}
@Override
public boolean isViewFromObject(View view, Object object)
{
return view == ((LinearLayout) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View row = null;
if (row == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(R.layout.image_pager_item_list_layout, container, false);
// holder.imageTitle = (TextView) row.findViewById(R.id.text);
image = (TouchImageView) row.findViewById(R.id.imgDisplay);
row.setTag(image);
} else {
image = (ImageView) row.getTag();
}
ImageItem item = (ImageItem) data.get(position);
Glide.with(getApplicationContext())
.load(item.getImage())
.into(image);
container.addView(row);
return row;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((LinearLayout) object);
}
}
检查如何通过 intent 将图像从一个 activity 发送到另一个 activity。在您的代码中,您发送的不是位置图像。你是如何获得位图中的位置的?这不是办法。对不起我的英语。
检查this link
首先,将图像转换为位图,然后将位图传递给其他 activity 并接收它。
首先,你传递的是图像的位置。你需要通过该项目。而不是位置。您需要按以下方式进行以下更改。
在Gallery.java
gridViewGallery.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
ImageItem item = (ImageItem) data.get(position)
Intent intent = new Intent(AdvertisementGallery.this,FullScreenImage.class);
//intent.putExtra("image",i);
intent.putExtra("imagePosition",i);
startActivity(intent);
}
});
现在,通过以下方式在 FullScreenImage.java 中检索您的图像。
imageItems = Constants.items;
int position=getIntent().getExtras().getInt("imagePosition");
ImageItem item = imageItems.get(position);
bitmap = item.getImage();
要在您的 ViewPager
中设置,您可以使用以下代码:
imagePageAdapter = new ImageAdapter(this,imageItems);
viewPager.setAdapter(imagePageAdapter);
viewPager.setCurrentItem(position, true);
以及
的问题
some time image display and some time is not display in viewpager.
尝试添加以下行 .placeholder (new ColorDrawable (Color.WHITE))
。所以代码看起来像:
Glide.with(getApplicationContext())
.load(item.getImage())
.placeholder (new ColorDrawable (Color.WHITE))
.into(image);
并且,如果您仅在发布模式 apk 中遇到问题,请尝试
我有一个填充有图像的 GridView。当我点击一个 GridView 项目时,它应该打开一个新的 Activity 并全屏显示图像,但它并没有发生。
我正在使用 Glide 库。我试过调试,但没有找到问题所在。
有什么想法吗?
Gallery.java
gridViewGallery.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Intent intent = new Intent(AdvertisementGallery.this,FullScreenImage.class);
intent.putExtra("image",i);
startActivity(intent);
}
});
FullScreenImage.java
viewPager.clearFocus();
imageItems = Constants.items;
bitmap = getIntent().getExtras().getInt("image");
// ImagePageAdapter imagePageAdapter = new ImagePageAdapter(this,imageItems);
imagePageAdapter = new ImageAdapter(this,imageItems);
viewPager.setAdapter(imagePageAdapter);
viewPager.setCurrentItem(bitmap,false);
class ImageAdapter 扩展了 PagerAdapter {
public Context context;
public ArrayList data = new ArrayList();
public ImageAdapter(Context context, ArrayList data){
this.context = context;
this.data = data;
}
@Override
public int getCount() {
return this.data.size();
}
@Override
public int getItemPosition(Object object) {
int position = data.indexOf(object);
return POSITION_NONE ;
}
@Override
public boolean isViewFromObject(View view, Object object)
{
return view == ((LinearLayout) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View row = null;
if (row == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(R.layout.image_pager_item_list_layout, container, false);
// holder.imageTitle = (TextView) row.findViewById(R.id.text);
image = (TouchImageView) row.findViewById(R.id.imgDisplay);
row.setTag(image);
} else {
image = (ImageView) row.getTag();
}
ImageItem item = (ImageItem) data.get(position);
Glide.with(getApplicationContext())
.load(item.getImage())
.into(image);
container.addView(row);
return row;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((LinearLayout) object);
}
}
检查如何通过 intent 将图像从一个 activity 发送到另一个 activity。在您的代码中,您发送的不是位置图像。你是如何获得位图中的位置的?这不是办法。对不起我的英语。
检查this link
首先,将图像转换为位图,然后将位图传递给其他 activity 并接收它。
首先,你传递的是图像的位置。你需要通过该项目。而不是位置。您需要按以下方式进行以下更改。
在Gallery.java
gridViewGallery.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
ImageItem item = (ImageItem) data.get(position)
Intent intent = new Intent(AdvertisementGallery.this,FullScreenImage.class);
//intent.putExtra("image",i);
intent.putExtra("imagePosition",i);
startActivity(intent);
}
});
现在,通过以下方式在 FullScreenImage.java 中检索您的图像。
imageItems = Constants.items;
int position=getIntent().getExtras().getInt("imagePosition");
ImageItem item = imageItems.get(position);
bitmap = item.getImage();
要在您的 ViewPager
中设置,您可以使用以下代码:
imagePageAdapter = new ImageAdapter(this,imageItems);
viewPager.setAdapter(imagePageAdapter);
viewPager.setCurrentItem(position, true);
以及
的问题some time image display and some time is not display in viewpager.
尝试添加以下行 .placeholder (new ColorDrawable (Color.WHITE))
。所以代码看起来像:
Glide.with(getApplicationContext())
.load(item.getImage())
.placeholder (new ColorDrawable (Color.WHITE))
.into(image);
并且,如果您仅在发布模式 apk 中遇到问题,请尝试