在int []矩阵中存储图像?

时间:2016-06-17 08:21:55

标签: android matrix swipe

这是我从here下载的代码。它将图像存储在一个数组中,并在运行时相应显示。我想将图像存储在矩阵中并执行此操作。即滑动向上,向下,向右,向左扫描不同的图像。我还想跳过矩阵中的一些位置。某种图片地图的东西。是否可以编辑代码?或者我必须使用全新的语法?我该怎么做?

public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
    ImagePagerAdapter adapter = new ImagePagerAdapter();
    viewPager.setAdapter(adapter);
}

private class ImagePagerAdapter extends PagerAdapter {
    private int[] mImages = new int[] {
        R.drawable.chiang_mai,
        R.drawable.himeji,
        R.drawable.petronas_twin_tower,
        R.drawable.ulm
};

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

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

@Override
public Object instantiateItem(ViewGroup container, int position) {
  Context context = MainActivity.this;
  ImageView imageView = new ImageView(context);
  int padding = context.getResources().getDimensionPixelSize(
      R.dimen.padding_medium);
  imageView.setPadding(padding, padding, padding, padding);
  imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
  imageView.setImageResource(mImages[position]);
  ((ViewPager) container).addView(imageView, 0);
  return imageView;
}

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

1 个答案:

答案 0 :(得分:0)

全部取决于您拥有的照片数量。

  • 如果没有那么多,你可以试试TableLayout。然而,这意味着重新开始。你必须自己实现滚动。

  • 如果有很多图片,则必须使用(一个或两个)适配器类。我相信有两个基本选择。

    • 您可以重复使用您拥有的代码,根据需要创建尽可能多的ImagePagerAdapter,将这些适配器放入一个数组中,该数组可能是VerticalViewPager的数据({例如{3}}。这可能是最困难的解决方案,但您也会学到很多东西。

    • 您可以实现一个可在两个维度上滚动的GridView,并且需要一个适配器,例如BaseAdapter,这与您的代码中的适配器不同。但是,如果你可以在一维数组中管理跳过职位(你写的和我不太了解的),这是一个可行的解决方案。