<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/relative" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent">
<android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="center"/>
</RelativeLayout>
viewpager.xml
현재 이미지들을 나열하기 위해 뷰페이저를 쓰고 있습니다.
이미지는 서버에서 다운로드하여 이미지갯수만큼 동적으로 이미지뷰를 생성하고 있습니다.
여기서 문제가 생겼는데요. 이미지의 종류가 2가지입니다.
1)한 화면에 꽉차는 이미지 2)화면의 반만한 이미지
1번의 이미지를 다운로드하면 일반적인 뷰어형태로 보여주기
여기까지는 구현이 되었습니다.
2번의 경우에 한 화면에 2개의 이미지뷰를 생성하여 2장씩 보여주는걸
원하는데요. 뷰페이저가 커스텀 할 수 없게 되어있네요??
스크린방향 Landscape, Portrait 에 따라서도 레이아웃이 변경되게 해야하는데
쉽지가 않네요.
public Object instantiateItem(View pager, int position) {
ImageView imageView = new ImageView(mContext); //이미지뷰 매번 생성
imageDownloader.download(urls[position], imageView); //해당 서버에서 다운로드
((ViewPager)pager).addView(imageView, 0); //뷰페이저에 넣어줌
return imageView;
}이건 뷰페이저 객체 생성부분입니다.
처음부터 설계를 잘못한 것일까요...?
1. 각 position 마다 채워줄 view inflate 시키기.
2. destroyItem()릴리즈 시킬 함수 선언.
@Override
public void destroyItem(View pager, int position, Object view) {
((ViewPager) pager).removeView((View) view);
}
빡드로이드님 소중한 답변 감사합니다. 참고하겠습니다.
근데 2개의 이미지뷰를 넣은 레이아웃을 작성해서
inflate하면 return할때는 한개의 이미지뷰만 들어갈 수 있지 않나요?
맨 밑에코드에서 다운받은 이미지를 bitmap으로 불러온다음 2개를 add시킬지 1개 시킬지 결정하고 2개일때는 LinearLayout을 생성해서 넣어주면 주고 add 및 return 시켜주면 됩니다.
하지만 문제점은 viewpager에 이미지를 다 불러와서 넣어보기 전에는 viewpager의 사이즈를 몇으로 정해야 할지 알 수 없다는 점입니다. 그리고 position으로 image를 불러오지 말고 따로 변수를 생성하여 이미지를 불러올때마다 변수를 증가시키는 방식으로 불러오게 해야 합니다.
저같은 경우에는 xml을 읽어 와서 xml에 있는 자료의 개수에 따라 페이지수를 증가하고 감소하고 뭐 뷰 마다 보이는게 달라지고 뭐
이런 ViewPager를 만들었습니다.
꼭 리턴으로 이미지뷰를 출력할것이 아니라. 시루떡님 말씀대로 레이아웃을 리턴할수도 있겠지요?
resId = R.layout.menu01;
view = inflater.inflate(resId, null);
((ViewPager) collection).addView(view, 0);
return view;
이렇게 id값에 레이아웃 id를 넣어주는 방식을 쓰면 되겠구요
1장일때는 true 2장일때는 false 로 해서
스위치로 선택되게 하구요 true 일때는 1장만 들어가는 레이아웃을 리턴하게 하고 false일때는 2장 들어가는 레이아웃이 리턴되게 하면
쉽게 구현 할수 있을거 같습니다





질문의 중점을 잘 모르겠네요 ㅠㅠ 1장 나올때의 뷰와 2장 나올때의 뷰를 다르게 하고 싶다는 말씀이신가요??