반응형
자동 스크롤 ViewPager는 이런 기능을 가지고 있다.
- 일정 주기마다 페이지를 이동한다.
- 끝 페이지에 도달하면 다시 첫 페이지로 이동해야 한다.
- 사용자가 직접 페이지 전환할 수 있어야 한다.
그럼 외부 라이브러리를 끌어쓰지않고 직접 구현해보자.
onCreateView()에 모두 구현을 하지않고 굳이 onResume()와 onPause()로 나눈 이유는
다른 Activity나 Fragment로 전환되면 ViewPager는 그 페이지에 머물러 있길 원했기 때문이다.
+ Activity에 구현할 시 onCreate()만 고쳐주면 차이가 없을거 같습니다.
+ PagerAdapter 구현부와 xml은 관련 자료가 많아서 따로 올리지 않았습니다.
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 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | public class Test1 extends Fragment { ViewPager vewPager; int images[] = {R.drawable.img_1, R.drawable.img_2, R.drawable.img_3, R.drawable.img_4}; // images배열에 원하는 이미지 삽입 MyCustomPagerAdapter myCustomPagerAdapter; // PagerAdapter 상속받아 구현한 class int currentPage = 0; Timer timer; final int NUM_PAGES = images.length; // 이미지의 총 갯수 final long DELAY_MS = 3000; // 오토 플립용 타이머 시작 후 해당 시간에 작동(초기 웨이팅 타임) ex) 앱 로딩 후 3초 뒤 플립됨. final long PERIOD_MS = 5000; // 5초 주기로 작동 @Override public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View root = inflater.inflate(R.layout.frag_1, container, false); viewPager = (ViewPager)root.findViewById(R.id.viewPager); myCustomPagerAdapter = new MyCustomPagerAdapter(getContext(), images); viewPager.setAdapter(myCustomPagerAdapter); return root; } @Override public void onResume() { super.onResume(); // Adapter 세팅 후 타이머 실행 final Handler handler = new Handler(); final Runnable Update = new Runnable() { public void run() { currentPage = viewPager.getCurrentItem(); int nextPage = currentPage + 1; if (nextPage >= NUM_PAGES) { nextPage = 0; } viewPager.setCurrentItem(nextPage, true); currentPage = nextPage; } }; timer = new Timer(); // thread에 작업용 thread 추가 timer.schedule(new TimerTask() { @Override public void run() { } }, DELAY_MS, PERIOD_MS); } @Override public void onPause() { super.onPause(); // 다른 액티비티나 프레그먼트 실행시 타이머 제거 // 현재 페이지의 번호는 변수에 저장되어 있으니 취소해도 상관없음 if(timer != null) { timer = null; } } } http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter | http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs |
안되는 부분이 있으면 언제든 댓글로 알려주세요!!
반응형
'IT Study > Android' 카테고리의 다른 글
[Android] 안드로이드 타이틀 바 / 상태 바 제거하기 (0) | 2020.02.19 |
---|---|
[Android] SHA 키 값 구하기 ERROR:Invalid Key Hash - Facebook Login API (0) | 2020.02.13 |
[Android] 구글 OAuth 2.0과 Facebook 로그인 API Log out/Sign out (0) | 2020.02.12 |
[Android] Barcode QR코드 스캐너 만들기 with zxing-embedded 라이브러리 (0) | 2019.12.05 |
[Android] SharedPreferences를 이용한 데이터 저장 (0) | 2019.11.01 |
댓글