반응형
업무의 목적:
* TabLayout을 이용 할 경우 ViewPager2를 이용해야한다. 경우에 따라서 dot(점) 인디케이터를 구현해야 할 필요가 있는데 오픈 소스 라이브러리를 이용하여 구현 하였다.
구현 방법:
오픈소스 라이브러리는 동일 한 라이브러임에도 불구 하고 2종류의 패키지?로 배포 중에 있다
implementation 'com.tbuonomo:dotsindicator:4.2',
implementation 'com.tbuonomo.andrui:viewpagerdotsindicator:4.1.2'
둘다 구현 부는 동일한데 둘중 한가지를 선택해서 사용하면 된다.
그레이들
dependencies {
...
implementation "androidx.viewpager2:viewpager2:1.0.0" //ViewPager2
implementation 'com.tbuonomo:dotsindicator:4.2'//인디케이터
}
activity_main.xml
<!--탭 레이아웃-->
<com.google.android.material.tabs.TabLayout
android:id="@+id/layout_tab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:tabGravity="center"
app:tabMode="scrollable"
app:tabTextColor="#000000"
app:tabSelectedTextColor="#FF0000"
app:tabIndicatorColor="#00FF00" />
<!--뷰페이저 -->
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/pager_content"
android:layout_width="match_parent"
android:layout_height="250dp" />
<!--인디케이터 타입1-->
<com.tbuonomo.viewpagerdotsindicator.DotsIndicator
android:id="@+id/dots_indicator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:dotsColor="#FF0000"
app:dotsCornerRadius="8dp"
app:dotsSize="16dp"
app:dotsSpacing="4dp"
app:dotsWidthFactor="2.5"
app:selectedDotColor="#00FF00"
app:progressMode="false"/>
<!--인디케이터 타입2-->
<com.tbuonomo.viewpagerdotsindicator.WormDotsIndicator
android:id="@+id/worm_dots_indicator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:dotsColor="#ff0000"
app:dotsStrokeColor="#00FF00"
app:dotsCornerRadius="10dp"
app:dotsSize="20dp"
app:dotsSpacing="5dp"
app:dotsStrokeWidth="7dp"/>
MainActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTabLayout = (TabLayout) findViewById(R.id.layout_tab);
// mTabLayout.addTab(mTabLayout.newTab().setText("홈"));
mViewPager = (ViewPager2) findViewById(R.id.pager_content);
//프레그먼트 이동 구현
ContentsPagerAdapter contentsPagerAdapter = new ContentsPagerAdapter(this);
mViewPager.setAdapter(contentsPagerAdapter);
final List<String> tabElement = Arrays.asList("홈","게임","ㅅㅁㅅ","ㅇㄹㅇㄹㅇㄹ","ㅇㄹㅇㄹㅇㄹㅇ","ㅇㄹㅇㄹㅇㄹㅇ");
//mTabLayout.setupWithViewPager(); //viewPager1을 붙일수 있음.
//tabLyout와 viewPager 연결
new TabLayoutMediator(mTabLayout, mViewPager, new TabLayoutMediator.TabConfigurationStrategy() {
@Override
public void onConfigureTab(@NonNull @NotNull TabLayout.Tab tab, int position) {
TextView textView = new TextView(MainActivity.this);
textView.setText(tabElement.get(position));
tab.setCustomView(textView);
}
}).attach();
//인디케이터 타입1
DotsIndicator dotsIndicator = (DotsIndicator) findViewById(R.id.dots_indicator);
dotsIndicator.setViewPager2(mViewPager);
//인디케이터 타입2
WormDotsIndicator wormDotsIndicator = (WormDotsIndicator) findViewById(R.id.worm_dots_indicator);
wormDotsIndicator.setViewPager2(mViewPager);
}
코드 첨부:
참고자료:
[1] https://androidrepo.com/repo/tommybuonomo-dotsindicator-android-viewpager
반응형
'안드로이드' 카테고리의 다른 글
[Android] 액티비티를 다이얼로그 효과 주기 (0) | 2021.08.30 |
---|---|
[Android] 애니메이션 효과?(회전) 주기 (0) | 2021.07.20 |
[Android] 탭 메뉴의 구현 (TabLayout과 ViewPager2) (0) | 2021.07.14 |
[kotlin] 람다 apply, also, with, let, run 알아 보기 (0) | 2021.06.08 |
[Android] 노티피케이션(알림)과 펜딩인텐트 (0) | 2021.05.26 |