当前位置: 首页 > 知识库问答 >
问题:

ImageAdapter使用thumnails扩展PagerAdapter

白学
2023-03-14

我正在使用幻灯片显示图像...我想将缩略图添加到它中。下面我想作为缩略图显示多少图像以及它显示的特定图像。我浏览了许多网站,但没有找到任何有用的东西

public class ImageAdapter extends PagerAdapter {
    Context context;
    int[] GalImages = new int[]{
        R.drawable.chokkanatha1,
        R.drawable.chokkanatha2,
        R.drawable.chokkanatha3,
        R.drawable.chokkanatha4,
        R.drawable.chokkanatha5,
        R.drawable.chokkanatha6};

    public ImageAdapter(Context context,String list1){
        this.context=context;
       String list =list1;
    }

    @Override
    public int getCount() {
        return GalImages.length;
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == ((ImageView) object);
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        ImageView imageView = new ImageView(context);
        //imageView.getItem(myViewPager.getCurrentItem());
        // int padding = context.getResources().getDimensionPixelSize(R.dimen.padding_medium);
        // imageView.setPadding(padding, padding, padding, padding);
        imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
        imageView.setImageResource(GalImages[position]);
        ((ViewPager) container).addView(imageView, 0);

        System.out.println("position:"+position);
        return imageView;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        ((ViewPager) container).removeView((ImageView) object);
    }
}

共有1个答案

仲孙飞文
2023-03-14

我的建议是在您的instatiateItem()中放置一个LinearLayout,而不是只有一个ImageView

LinearLayout方向设置为垂直并添加ImageView,然后在其下方添加另一个具有水平方向的LinearLayout,并在此内部布局中添加5(或您喜欢多少)ImageView,您将在其中绘制缩略图。

你应该得到这样的结果:

    public Object instantiateItem(ViewGroup container, int position) {
        // this is your layout for the Item
        final LinearLayout outerLayout = new LinearLayout(context);
        outerLayout.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
        outerLayout.setOrientation(LinearLayout.VERTICAL);

        // this is your main picture
        ImageView imageView = new ImageView(context);
        imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
        imageView.setImageResource(GalImages[position]);
        // add the picture to the layout
        outerLayout.addView(imageView);

        final LinearLayout innerLayout = new LinearLayout(context);
        innerLayout.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
        innerLayout.setOrientation(LinearLayout.HORIZONTAL);

        // thumbnail for the previous image
        ImageView thumbnailBefore = new ImageView(context);
        thumbnailBefore.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
        thumbnailBefore.setImageResource("enter your thumbnail for image with id position - 1");

        // thumbnail for the current image
        ImageView thumbnailThis = new ImageView(context);
        thumbnailThis.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
        thumbnailThis.setImageResource("enter your thumbnail for image with id position");

        // thumbnail for the next image
        ImageView thumbnailAfter = new ImageView(context);
        thumbnailAfter.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
        thumbnailAfter.setImageResource("enter your thumbnail for image with id position + 1");

        // add the thumbnails for the images to the inner layout (to appear below your main picture)
        innerLayout.addView(thumbnailBefore);
        innerLayout.addView(thumbnailThis);
        innerLayout.addView(thumbnailAfter);

        // add the inner layout to the whole layout
        outerLayout.addView(innerLayout);

        ((ViewPager) container).addView(outerLayout, 0);

        return imageView;
    }

根据现在显示的图像,您应该用前后的图片填充内部线性布局。(注意带有缩略图位置的ArrayIndexOutOfBoundsException)

很抱歉没有向您提供确切的代码,我现在不在我的电脑前。

编辑:我发布了用于显示上一张和下一张图片的代码示例。此外,如果你没有图片的缩略图,请参阅此答案以了解更多详细信息制作缩略图

 类似资料:
  • Puppeteer 可以用来测试 Chrome 扩展 注意 Chrome / Chromium 扩展当前只能在非无头模式下使用。 下面的代码用来处理扩展的 background page,该扩展的代码在 ./my-extension: const puppeteer = require('puppeteer'); (async () => { const pathToExtension =

  • 使用 Swift 扩展 Weex Swift和Objective-C 混编 参考完整 例子 使用 Swift 进行 module 扩展 因为 module 暴露 method 是通过Objective-C宏来做的,调用的时候是通过反射,所以Swift扩展 module 通过extensionObjective-C的类。 新建 WXSwiftTestModule.h/m 和 WXSwiftTestM

  • 我正试图用三个额外的日期(时间戳)字段扩展扩展扩展名(新闻),并希望在(新闻)的fluidtemplate中调用这些字段。 我已经连线到目前为止,我可以看到我的后端额外的字段,而无需选择一个外部类型-我已经相应地修改了ext_tables.php,并可以保存数据。 现在,我试图在我的新闻流模板中使用这些字段,在我的Partials/List/Item中使用以下代码。html-{newsItem.d

  • 我使用VS2019 16.1.6创建了一个新的VS扩展。我添加了这个using语句 我怎样才能摆脱这个错误?或者,除了使用IDEBugEventCallback2之外,还有其他方法来响应调试器事件吗? 编辑:向Microsoft报告的问题:https://developercommunity.visualstudio.com/content/Problem/651199/vs2019-extens

  • 本文是如何创建 CRD 来扩展 Kubernetes API 的教程。CRD 是用来扩展 Kubernetes 最常用的方式,在 Service Mesh 和 Operator 中也被大量使用。因此读者如果想在 Kubernetes 上做扩展和开发的话,是十分有必要了解 CRD 的。 在阅读本文前您需要先了解使用自定义资源扩展 API, 以下内容译自 Kubernetes 官方文档,有删改,推荐阅

  • 目的 使用部署配置来部署多个 Pod,并以此扩展缩放应用。 环境 openshift v3.11.16/kubernetes v1.11.0 步骤 创建工程1. CLI 登录到 OCP $ oc login https://master.example.com:8443 -u admin -p admin2. 创建工程 $ oc new-project lab08 创建一个新应用,测试缩放1. 创