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

如何在ViewPager上高效添加多幅图像

龙高歌
2023-03-14
ViewPager myPager;
PagerAdapter myAdapter;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //Remove Title bar
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    //force portrait orientation. (No landscape orientation).
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    setContentView(R.layout.activity_view_pager);

    myPager = (ViewPager) findViewById(R.id.pager);
    myAdapter = new adapterClass(getSupportFragmentManager());
    myPager.setAdapter(myAdapter);
}

/*
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_view_pager, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
} */

/*Nested class needed for custom Adapter */
private class adapterClass extends FragmentStatePagerAdapter {

    int[] images = new int[3];
    images[0] = R.drawable._2;

    String extract = "R.drawable._";



    public adapterClass(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        //initialiseArray(images);
        return viewPageFragment.newInstance(position, images[position]);
    }

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

    private int[] initialiseArray(int[] array) {
        for (int i = 2; i <= array.length + 1; i++) {
            extract += i;
            array[i-2] = Integer.parseInt(extract);
        }
        return array;
    }
}

片段类:

包com.syedabdullah.syed.qran_memorization_application;

/***由syed于2014年25日创建。*/

导入Android.os.bundle;导入android.support.v4.app.fragment;导入Android.View.LayoutInflater;导入Android.view.view;导入Android.View.ViewGroup;导入Android.Widget.ImageView;

公共类viewPageFragment扩展片段{

public viewPageFragment() {
}

public static viewPageFragment newInstance(int position, int imageId) {
    viewPageFragment myFrag = new viewPageFragment();
    Bundle myBundle = new Bundle();

    myBundle.putInt("imagePosition", position);
    myBundle.putInt("imageId", imageId);
    myFrag.setArguments(myBundle);

    return myFrag;
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_view_pager,
            container, false);

    int imageId = getArguments().getInt("imageId");
    ImageView myImageView = (ImageView) rootView.findViewById(R.id.imageView);
    myImageView.setImageResource(imageId);

    return rootView;
} }

当前我的initialisearray不工作。如果我要按照以下方式初始化数组:

int[] images = {R.drawable._2, R.drawable._3, R.drawable._4};

它会在我的ViewPager中显示适当的图像。然而,我有超过500个图像,如果我这样做,这将需要永远。这就是为什么我想知道是否有更简单的方法插入这些图像。我所有的图像都是按递增顺序命名的。所以我的第一个映像名为.2,一直到._550之类的。

int[]images=新int[3];图像[0]=r.drawable._2;

谁能解释一下吗?多谢了。

暂时还没有答案

 类似资料:
  • 问题内容: 在我的项目中,我使用iText生成PDF文档。 假设页面的高度为500pt(1个用户单位= 1点),并且我在页面上写了一些文本,然后是图像。 如果内容和图像要求小于450pt,则文本在图像之前。如果内容和图像超过450pt,则文本将转发到下一页。 我的问题是:在写图像之前如何获得剩余的可用空间? 问题答案: 首先,第一件事:在页面上添加文本和图像时,iText有时会更改文本内容和图像的

  • 问题内容: 我正在尝试使用HTML中的新canvas元素。 我只是想将图像添加到画布,但是由于某种原因它不起作用。 我有以下代码: 的HTML 的CSS JS 图片存在,并且没有JavaScript错误。该图像只是不显示。 这一定是我错过的非常简单的事情… 问题答案: 也许您应该等到图像加载后才能绘制图像。尝试以下方法: 即在图像的onload回调中绘制图像。

  • 最近我加入了GitHub。我在那里主持了一些项目。 我需要在自述文件中包含一些图像。我不知道怎么做。 我搜索了一下,但我得到的只是一些链接,告诉我“在web上托管图像并在readme.md文件中指定图像路径”。 有没有什么方法可以做到这一点,而不将图像托管在任何第三方web托管服务上?

  • 我尝试了很多解决办法,但没有一次对我有效。 我以这种方式接收图像数据: 和使用multipart上载图像 我的接口是: 但仍收到null响应,而不是true或FALSE: 提前致谢

  • 这样循环有点慢。我尝试添加numba的@njit decorator,但显然它与opencv有问题。 输入图像为32x32像素。它们映射到32x32圆的输出图像。每个圆绘制在一个20x20像素的正方形内。也就是说,输出图像为640x640像素 一张图像需要大约100毫秒才能转化为圆圈,我希望能将其降低到30毫秒或更低 有什么建议吗?

  • 如何创建一个可以包含多个图像并包含圆形边框的视图?以下是一些最终产品的样本。 图像将从url下载,如示例所示,视图中可能包含一到四个图像。