특정 경로에 있는 폴더안의 모든 이미지들을 불러와서 뷰페이저로 이미지를 볼 수있도록 만들었습니다.
좌/우로 슬라이드 할 때 보일 수 있도록 만들었는데요, 이미지 크기가 조금 크다보니 속도가 매우 더딥니다..
뷰페이저를 다루는건 처음이라, 구글링 예제소스를 참고해서 만들었는데요. 조언 좀 해주시면 감사하겠습니다.
public class Gallary extends Activity {
private ViewPager mPager;
ImageView image01;
String path;
String paths[];
// Bitmap bm;
int Gridposition;
int i;
int maxTexture[];
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.gallary);
Intent intent = getIntent();
if (intent != null) {
path = intent.getStringExtra("path"); // 선택한 path받아옴
paths = intent.getStringArrayExtra("paths");
for (int i = 0; i < paths.length; i++) {
Log.d("......paths", paths[i]);
}
Gridposition = intent.getIntExtra("Gridposition", 0);
Log.d(".......position", Integer.toString(Gridposition));
}
// bm = BitmapFactory.decodeFile(path); //path값으로 비트맵 생성.
// image01.setImageBitmap(bm);
// 1023 현재 디바이스의 gl max texture size 알아내기
maxTexture = new int[1];
GLES20.glGetIntegerv(GLES20.GL_MAX_TEXTURE_SIZE, maxTexture, 0);
mPager = (ViewPager) findViewById(R.id.pager);
mPager.setAdapter(new PagerAdapterClass(getApplicationContext()));
mPager.setCurrentItem(Gridposition);
}// onCreate
private class PagerAdapterClass extends PagerAdapter {
private LayoutInflater li;
public PagerAdapterClass(Context c) {
super();
li = LayoutInflater.from(c);
}
@Override
public int getCount() // 뷰페이저 총 갯수
{
return paths.length;// 이미지 총 갯수
}
@Override
public Object instantiateItem(View container, int position) {
View v = null; // 뷰 생성하기~
for (i = 0; i < paths.length; i++) // 폴더에 있는 이미지 총 갯수만큼!
{
if (i == position)
{
v = li.inflate(R.layout.gallarydetailactivity, null);
image01 = (ImageView) v.findViewById(R.id.image01);// 사진띄워줄 imageview
Bitmap bm0 = BitmapFactory.decodeFile(paths[i]);
Bitmap bm = bm0.createBitmap(bm0, 0, 0, bm0.getWidth(),bm0.getHeight(), m, false);
int reWidth = (int) (getWindowManager().getDefaultDisplay().getWidth());
int reHeight = (int) (getWindowManager().getDefaultDisplay().getHeight());
Bitmap reSized = Bitmap.createScaledBitmap(bm, reWidth,reHeight, true);
image01.setImageBitmap(reSized);
bm0 = null;
}
}
((ViewPager) container).addView(v, 0);
v.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
finish();
}
});
return v;
}
@Override
public void destroyItem(View container, int position, Object object) {
((ViewPager) container).removeView((View) object);
}
// instantiateItem에서 생성한 객체를 이용할 것이지 여부를 반환.
@Override
public boolean isViewFromObject(View pager, Object obj) {
// TODO Auto-generated method stub
return pager == obj;
}
@Override
public void restoreState(Parcelable state, ClassLoader loader) {
// TODO Auto-generated method stub
}
@Override
public Parcelable saveState() {
// TODO Auto-generated method stub
return null;
}
@Override
public void startUpdate(View container) // 페이지변경시작
{
}
@Override
public void finishUpdate(View container) // 페이지변경완료
{
}
}
}