[android] ViewPager의 기본 사용 방법

18036 단어 Android

ViewPager


ViewPager는 ListView가 세로 스크롤을 기준으로 가로로 스크롤하여 View를 전환하는 View입니다.
오래된 정보를 오랫동안 유지해 왔기 때문에 수정했습니다.
깃허브 여기 있어요.

DesginSupportLibrary
- tablayout
- NavigationView
응용 프로그램 시작 후 첫 번째 화면은 다음과 같습니다.
viewPager + tablayout + drawerLayout ...등 설치는 이미 일반적인 나무가 되었다.그렇게 생각한다면한번 봐주셨으면 좋겠습니다.간단한 ViewPager를 모르면 이쪽 기사를 보세요.
그러면 기본적으로 ViewPager는 여러 개의 프레임을 가지고 있어 View를 전환합니다.
android-support-v4 지원이 있기 때문에 거의 모든android가 이동할 수 있다고 볼 수 있습니다.
ViewPager는 adapter에서 컨텐트의 View 관리를 수행합니다.
이러한 기능은 PagerAdapter를 상속하여 수행됩니다.
샘플 코드를 기재하면서 설명하다.
Viewpager를 사용하는 절차는 다음과 같습니다.
- layout을 사용합니다.xml에서 ViewPager 설정(.xml에서 설명)
- Fragment 준비(Viewpager의 요소)
- (Fragment) Pager Adapter 준비
- ViewPager에서 어댑터 설정

사용된 layout 입니다.xml에서 Viewpager 설정


xml
<LinearLayout 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:orientation="vertical">
    <android.support.v4.view.ViewPager 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/viewPager"/>
</LinearLayout>
ViewPager는 Support Package에서 제공되기 때문에 android입니다.support.v4.view.는 viewPage로 기술되어 있습니다.
이 밖에 다른 자주 사용하는'Pager Title Strip'도 있다.모처럼의 기회니까 이번에 한번 실현해 보자.
앞에서 말한 바와 같이 SupportLibrary가 준비된 후에는 사용하지 않았습니다.
대안으로'타블로이드'가 존재하기 때문에 그것을 사용한다.
이번 취지와 조금 다르기 때문에 설명을 생략합니다.
일단 적어주세요.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolBar"
        android:layout_width="match_parent"
        android:layout_height="?actionBarSize"
        android:background="@color/colorPrimary"/>

    <android.support.design.widget.TabLayout
        android:id="@+id/tabLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <android.support.v4.view.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</LinearLayout>
내가 너에게 이런 기술을 주겠다.
또 여기에 툴바를 준비했기 때문에 안드로이드 매니페스트의 주제를 바꿀 필요가 있다.
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
이 "android:theeme="@style/Theeme.AppCompot.Light.NoAction Bar"처럼 변경해 드리겠습니다.

Fragment 준비


Fragment에 대한 자세한 설명은 생략되었지만 쉽게 말하면 Activity에 UI가 있는 구성 요소입니다.그나저나 액티비티와는 라이프 사이클이 완전히 다르기 때문에 그쪽 관리는 별도의 관리가 필요하다.이것은 매우 어렵기 때문에 반드시 잘 관리해야 한다.
그럼fragment와Activity처럼layout을 만들면 문제없습니다.
아무것도 없는 간단한 레이아웃 파일을 준비하세요.
다만, 백그라운드를 변경해야 하기 때문에 id 임의의 것만 휘둘러주세요.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fragment_main_linearlayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

</LinearLayout>
그리고자바지만'Fragment'을 계승한다.
Fragment에서 자주 사용하는 콜백 3개를 소개한다.
  • onCreate()
  • onCreateView()
  • onPause()
  • onCreate()는 Activity와 같습니다.생성할 때 호출되며, 그 중에서 수치를 초기화하는 것이 가장 좋다.
    onCreateView()는 Fragment의 UI를 설명하는 동안 호출됩니다.여기서 Activty의 setContentView가 진행됩니다.
    onPause () 는 Activity와 마찬가지로 정지할 때 호출됩니다.데이터 저장은 여기서 하면 믿음직해지겠죠.
    newInstance라는 static 메서드가 있습니다.아마도 나는 구조기로 설치하면 될 것 같다.fragment에는 파라미터를 구조기에 넘길 수 없는 규칙이 존재하기 때문에 이렇게 실시되었다.동시에 백그라운드의 색을 건네주는 리시드처럼 실현됩니다.
    public class ExampleFragment extends Fragment {
        private final static String BACKGROUND_COLOR = "background_color";
    
        public static ExampleFragment newInstance(@ColorRes int IdRes) {
            ExampleFragment frag = new ExampleFragment();
            Bundle b = new Bundle();
            b.putInt(BACKGROUND_COLOR, IdRes);
            frag.setArguments(b);
            return frag;
        }
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
        }
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.fragment_main, null);
            LinearLayout linearLayout = (LinearLayout) view.findViewById(R.id.fragment_main_linearlayout);
            linearLayout.setBackgroundResource(getArguments().getInt(BACKGROUND_COLOR));
    
            return view;
        }
    }
    
    이런 형식으로 이루어지다.

    FragmentPagerAdapter

    public class ExampleFragmentPagerAdapter extends FragmentPagerAdapter {
        public ExampleFragmentPagerAdapter(FragmentManager fm) {
            super(fm);
        }
    
        @Override
        public Fragment getItem(int position) {
            switch (position) {
                case 0:
                    return ExampleFragment.newInstance(android.R.color.holo_blue_bright);
                case 1:
                    return ExampleFragment.newInstance(android.R.color.holo_green_light);
                case 2:
                    return ExampleFragment.newInstance(android.R.color.holo_red_dark);
            }
            return null;
        }
    
        @Override
        public int getCount() {
            return 3;
        }
    
        @Override
        public CharSequence getPageTitle(int position) {
            return "ページ" + (position + 1);
        }
    }
    
    javaClass를 사용하여 FragmentPagerAdapter를 계승합니다.
    getItem은 얻은 포지션에 따라fragment를 전환합니다.
    getCount의 최대치를 설정합니다. getPageTitle는 title의 정보를 tabLayout에 전달합니다.
    다음은 mainActivity입니다.자바에서 Fragment Manager를 가져와 어댑터를 생성합니다.
    이하 기술.
    public class MainActivity extends AppCompatActivity {
        private Toolbar toolbar;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            setViews();
        }
    
        private void setViews() {
            toolbar = (Toolbar) findViewById(R.id.toolBar);
            setSupportActionBar(toolbar);
            FragmentManager manager = getSupportFragmentManager();
            ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager);
            ExampleFragmentPagerAdapter adapter = new ExampleFragmentPagerAdapter(manager);
            viewPager.setAdapter(adapter);
            TabLayout tabLayout = (TabLayout) findViewById(R.id.tabLayout);
            tabLayout.setupWithViewPager(viewPager);
        }
    
    }
    
    그게 다야.
    여기.

    좋은 웹페이지 즐겨찾기