woong's

Vertical & Hrizontal ViewPager 사용하기 본문

Develop/Android

Vertical & Hrizontal ViewPager 사용하기

dlsdnd345 2016. 2. 14. 17:04

Vertical & Hrizontal ViewPager 사용하기 


안녕하세요 . ViewPager 를 사용은 해보았지만 , ViewPager 안에 ViewPager 를 이용은 처음해보았습니다 . 

그래서 나중에도 참고하고자 포스트를 쓰고 있습니다 ^^


나중에 시간이 되면 ListView 안에 GridView 라던지 Inside UI 를 많이 사용해 보아야 겠습니다 .


 

제가 ViewPager Inside ViewPager 를 진행하면서 시행착오에대해 말씀드리겠습니다 .


처음에는 ViewPager 를 상하 좌우로 움직이려면 어떻게 해야하지 ??

하는생각에 검색을 해보았습니다 .


https://github.com/JakeWharton/Android-DirectionalViewPager


위 링크의 Android-DirectionalViewPager 였습니다.





이것을 이용해서 vertical ViewPager 를 통해서 상하 를 구현하고 Hrizontal ViewPager 를 통해서 좌우를 구현하려했습니다. 그렇게 생각을 하고 코딩을 해보니 상하좌우가 되긴 하지만 , 부자연스러운 것입니다 .


그래서 뭔가 잘못 된거 같아서 다시 생각 해보았습니다 .

생각하다보니.. ViewPager 안에 ViewPager 를 넣으면 되겠다는 생각을 했습니다 .


그래서 처음 시작을 Vertical ViewPager 를 구현했습니다 .

Vertical ViewPager 안에 Horizontal ViewPager 를 넣어 보려 시도해 보았습니다 .


쉽지는 않았지만 , 그렇게 구현해보니 상하좌우가 부드럽게 움직이는것을 알게 되었습니다 .

다른분들은 저와 같이 고생하지 않았으면 하는 마음에 포스트를 쓰고 있습니다 ^^


서론이 길었네요 ^^;;


이제 사용 방법에 대해서 말씀드리겠습니다 .


1. Horizontal ViewPager 구현

2. Horizontal ViewPager 를  Vertical ViewPager 로 변환

3. Vertical ViewPager 안에 Horizontal ViewPager 구현



우선 기본적인 Horizontal ViewPager 구현 합니다 .


구현후에 Vertical ViewPager 를 구현하기 위해서 


https://github.com/LambergaR/VerticalViewPager


위링크의 라이브러리 코드를 사용하였습니다 .


 

이포스트는 상하좌우의 ViewPager 구현이기 때문에  Horizontal ViewPager 구현에 대해서는 따로 언급하지 않겠습니다.

Vertical ViewPager 로 변환 하는 부분부터 진행해 보겠습니다 .


Horizontal ViewPager 구현 후에 xml 의 android.support.v4.view.ViewPager 되어 있는것을 변경해야 합니다 .


1
2
3
4
5
6
7
8
9
10
11
12
13
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ffffff"
    tools:context=".MainActivity" >
    
          <com.example.activity.VerticalViewPager
          android:id="@+id/pager"
          android:layout_width="match_parent"
          android:layout_height="match_parent" />
 
</RelativeLayout>

 

 

두번째로는  ViewPager viewPager = (ViewPager) findViewById(R.id.pager); 로 되어 있는것을 

위 링크를 통해 받은  VerticalViewPager 로 변경 합니다 .


VerticalViewPager viewPager = (VerticalViewPager) findViewById(R.id.pager);


이와 같이 진행하고 앱을 실행해보면 Horizontal ViewPager 구현해놓은것이 좌우가 아닌 상하로 바뀐것을 확인할수 있습니다 .


반은 성공했습니다 .


이제 마지막으로 VerticalViewPager 안에 Horizontal ViewPager 를 넣으면 될것 같습니다 .


VerticalViewPager 를 Fragment 를 통해서 구현하였습니다 .


VerticalViewPager 안에 Horizontal ViewPager 를 Fragment 안에 구현 하였습니다 .


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package com.example.fragment;
 
import java.util.List;
 
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ProgressBar;
 
import com.example.activity.VerticalViewPager;
import com.example.adapter.ChildPagerAdapter;
import com.example.adapter.PagerAdapter;
import com.example.viewpagerandfragment.R;
 
public class PageFragment extends Fragment {
 
    private int image;
    ImageView imageView;
    ProgressBar progressBar;
    static List<Integer> imageList;
    
    public static PageFragment create(List<Integer> mimageList) {
        imageList = mimageList;
        PageFragment fragment = new PageFragment();
        return fragment;
    }
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.activity_horizental, container, false);
        ViewPager viewPager = (ViewPager) rootView.findViewById(R.id.pager);
        ChildPagerAdapter mPagerAdapter = new ChildPagerAdapter( this.getChildFragmentManager(), imageList);
        viewPager.setAdapter(mPagerAdapter);
        return rootView;
    }
 
}
 

 

 

onCreateView 메서드 코드를 보시면 fragment 안에 Horizontal ViewPager 를 구현한 것을 볼수 있습니다 .


이제 처음 Horizontal ViewPager 를 구현한것 처럼 Adapter와 Fragment 를 구현하면 상하좌우로 움직이는

ViewPager 를 구현 할수 있습니다 .


Comments