【问题标题】:ImageView fullscreen in ActivityActivity中的ImageView全屏
【发布时间】:2018-08-29 09:23:59
【问题描述】:

我有一个填充了图像的 GridView。当我单击 GridView 项目时,它应该会打开一个新 Activity 并全屏显示图像,但它不会发生。

我正在使用 Glide 库。我试过调试,但没有发现问题。

有什么想法吗?

图库.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);

类 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);


    }
}

【问题讨论】:

  • 问题可能出在这一行:bitmap = getIntent().getExtras().getInt("image");检查您从以前的活动中收到的内容。它可能为空吗?
  • 图像位置接收到

标签: android image android-viewpager android-glide


【解决方案1】:

首先,您正在传递图像的位置。您需要传递该项目。而不是位置。您需要通过以下方式进行以下更改。

在 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);

关于问题

有时会显示图像,有时不会在 viewpager 中显示。

尝试添加以下行.placeholder (new ColorDrawable (Color.WHITE))。所以代码看起来像:

Glide.with(getApplicationContext())
            .load(item.getImage())
            .placeholder (new ColorDrawable (Color.WHITE))
           .into(image);

而且,如果您仅在发布模式 apk 中遇到问题,请尝试 this solution

【讨论】:

  • @rahul 你能告诉我ImageItem类的代码吗?
  • 我试过了,但没有显示图像。我使用 glide 库不在 viewpager 中显示图像。当我使用通用图像加载器库时,它在视图寻呼机中显示图像。那么,如何通过滑翔库不显示图像。
  • @rahul 如果要将图像加载为位图,则需要调用asBitmap() 方法。 Glide.with(getApplicationContext()) .load(item.getImage()).asBitmap() .into(bitmap); 其中位图是图像的位图。
  • 我从服务器 url 加载图像
  • @rahul 然后不需要使用asBitmap 它应该会自动加载。确保您有一个有效的互联网连接,并且您从中加载的 URL 正常工作。在以上都没有的情况下,请检查你的 logcat 可能你会在那里找到问题的原因。
【解决方案2】:

检查如何通过意图将图像从一个活动发送到另一个活动。在您的代码中,您发送的不是一个位置的图像。你是如何得到位图中的位置的?这不是办法。对不起我的英语。

查看this link

首先,将图像转换为位图,然后将位图传递给其他活动并接收它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 2014-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多