将图像存储在 int[] 矩阵中?
Storing images in int[] matrix?
这是我从 here 下载的代码。它将图像存储在一个数组中,并在我 运行 它时相应地显示。我想将图像存储在 矩阵 中并执行此操作。即 向上、向下、向右、向左滑动 以获得不同的图像。我还想跳过矩阵中的一些位置。某种图片地图之类的东西。是否可以编辑 this 代码?还是我必须使用全新的语法?我该怎么做?
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);
}
}
}
一切都取决于你有多少张图片。
如果没有那么多,可以试试TableLayout
。然而,这意味着重新开始。例如,您必须自己实现滚动。
如果有很多图片,您将不得不使用(一个或两个)适配器类。我相信有两种基本选择。
您可以重用您拥有的代码,根据需要制作尽可能多的 ImagePagerAdapter
行,将这些适配器放入一个数组中,该数组可能是 [=12] 的数据=](例如 https://github.com/castorflex/VerticalViewPager)。这可能是最困难的解决方案,但您也会学到很多东西。
您可以实现一个 GridView
,它可以在两个维度上滚动并且需要一个适配器,例如 BaseAdapter
,它与您在代码中的适配器不同.但是,如果您也可以管理一维数组中位置的跳过(您写过但我不太了解),这也是一个可行的解决方案。
这是我从 here 下载的代码。它将图像存储在一个数组中,并在我 运行 它时相应地显示。我想将图像存储在 矩阵 中并执行此操作。即 向上、向下、向右、向左滑动 以获得不同的图像。我还想跳过矩阵中的一些位置。某种图片地图之类的东西。是否可以编辑 this 代码?还是我必须使用全新的语法?我该怎么做?
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);
}
}
}
一切都取决于你有多少张图片。
如果没有那么多,可以试试
TableLayout
。然而,这意味着重新开始。例如,您必须自己实现滚动。如果有很多图片,您将不得不使用(一个或两个)适配器类。我相信有两种基本选择。
您可以重用您拥有的代码,根据需要制作尽可能多的
ImagePagerAdapter
行,将这些适配器放入一个数组中,该数组可能是 [=12] 的数据=](例如 https://github.com/castorflex/VerticalViewPager)。这可能是最困难的解决方案,但您也会学到很多东西。您可以实现一个
GridView
,它可以在两个维度上滚动并且需要一个适配器,例如BaseAdapter
,它与您在代码中的适配器不同.但是,如果您也可以管理一维数组中位置的跳过(您写过但我不太了解),这也是一个可行的解决方案。