[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개를 소개한다.
<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>
<?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>
<?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>
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);
}
}
그게 다야.여기.
Reference
이 문제에 관하여([android] ViewPager의 기본 사용 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yukiyamadajp/items/6d8b38effeb38ed96d78텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)