2016-06-17 2 views
0

Код, загруженный с here. Он сохраняет изображения в массиве и отображается соответствующим образом, когда я запускаю его. Я хочу сохранить изображения в матрице и сделать это. то есть проведите по экрану вверх, вниз, вправо, влево для разных изображений. Я также хочу пропустить некоторые позиции в матрице. какая-то картинка-карта. Возможно ли редактирование этого кода? Или мне придется использовать совершенно новый синтаксис? Как мне это сделать?Сохранение изображений в матрице int []?

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); 
} 
} 
} 
+0

Я хотел бы предложить вам использовать Пикассо, который делает кэширование изображения от вашего имени. Делает такие вещи довольно легко – shiladitya

ответ

0

Все зависит от количества имеющихся изображений.

  • Если вас так много, вы можете дать TableLayout. Однако это предполагает начало. Вам придется выполнять прокрутку, например, самостоятельно.

  • Если фотографий много, вам придется работать с (одним или двумя) адаптерами. Я считаю, что есть два основных варианта.

    • Вы можете повторно использовать код, который вы имеете, сделать так много ImagePagerAdapter с, как вы хотите, чтобы строки, положить эти адаптеры в массив, который может быть данные для VerticalViewPager (https://github.com/castorflex/VerticalViewPager, например). Это, вероятно, самое сложное решение, но вы также многому научитесь.

    • Вы можете реализовать GridView, который прокручивается в двух измерениях и требует адаптер, например BaseAdapter, который отличается от вашего адаптера в коде. Однако, если вы можете управлять пропуском позиций (которые вы пишете и которые я действительно не понимаю) в одномерном массиве тоже, это жизнеспособное решение.