Fragment+ViewPager 파일럿
9584 단어 Android
직관적인 조작을 나도 매우 좋아해서 무의미하게 교환한다.
좋아하기 때문에 발전할 수 있고, 반드시 공부해야 한다.
컨디션
OS X 10.9.3
Android Studio (Beta) 0.8.0
Sony SOL25 Android 4.4.2(API 19)
ViewPager
ViewPager에서 어댑터를 사용하여 페이지를 표시된 데이터와 연결합니다.
사용할 수 있는 어댑터는 다음과 같은 3가지다.
ViewPager에서 어댑터를 사용하여 페이지를 표시된 데이터와 연결합니다.
사용할 수 있는 어댑터는 다음과 같은 3가지다.
FragmentPagerAdapter
로 할게요.Fragment 작성
표시할 부분을 적당히 만듭니다.3 드릴까요?자유롭다이번에는 세 번째를ListFragment로 삼았다.
FragmentPagerAdapter 사용
FragmentPagerAdapter
FragmentPagerAdaptere에서 교환을 통해 Fragment를 전환할 때 각 Fragment에 대한 터치가 해제됩니다.메모리에 저장해야 하기 때문에 간단하게 다시 부착할 수 있을 것이다.이렇게 되면 onAttach()
와 onCreate()
는 매번 호출되지 않는다.
생명주기에서 볼 수 있듯이 onCreateView()
에서 호출된 것이기 때문에 상태를 보존하려면 onSavedInstanceState()
로 상태를 보존하고 onActivityCreated()
로 회복할 수 있다.
FragmentStatePagerAdapter
Fragment State Pager Adapter는 불필요한 웹 페이지 Fragment를 삭제하는 것이 아니라 삭제하는 Pager Adapter라고 합니다.
대량의 페이지를 사용할 때도 메모리를 압박하지 않는다.이곳은 매우 적기 때문에 이쪽은 쓰지 않는다.
방법의 실현
실시해야 할 방법은 다음과 같은 두 가지가 있다.
FragmentPagerAdapter
FragmentPagerAdaptere에서 교환을 통해 Fragment를 전환할 때 각 Fragment에 대한 터치가 해제됩니다.메모리에 저장해야 하기 때문에 간단하게 다시 부착할 수 있을 것이다.이렇게 되면
onAttach()
와 onCreate()
는 매번 호출되지 않는다.생명주기에서 볼 수 있듯이
onCreateView()
에서 호출된 것이기 때문에 상태를 보존하려면 onSavedInstanceState()
로 상태를 보존하고 onActivityCreated()
로 회복할 수 있다.FragmentStatePagerAdapter
Fragment State Pager Adapter는 불필요한 웹 페이지 Fragment를 삭제하는 것이 아니라 삭제하는 Pager Adapter라고 합니다.
대량의 페이지를 사용할 때도 메모리를 압박하지 않는다.이곳은 매우 적기 때문에 이쪽은 쓰지 않는다.
방법의 실현
실시해야 할 방법은 다음과 같은 두 가지가 있다.
getiItem
매개변수가 지정한 페이지에 표시된 Fragment 인스턴스를 반환합니다.getCount
ViewPager 페이지 수를 반환합니다.코드는 이렇습니다.패키지, import은 사랑을 베는 것이다.
TestFragmentPagerAdapter.java
public class TestFragmentPagerAdapter extends FragmentPagerAdapter{
public TestFragmentPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch(position){
case 0:
return new Fragment1();
case 1:
return new Fragment2();
default:
return new ItemListFragment();
}
}
@Override
public int getCount() {
return 3;
}
@Override
public CharSequence getPageTitle(int position) {
return "Page " + (position+1);
}
}
다시 쓰기 getPageTitle
에 페이지 제목을 설정했습니다.이것은 제목을 표시할 때의 옵션입니다.ViewPager 구성
우선MainActivity에서viewParger를 설정합니다.그리고 제목도 보여줘야 돼요.옵션입니다.
activity_main.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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context=".MainActivity">
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<android.support.v4.view.PagerTitleStrip
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:background="@drawable/border"
android:textColor="#000000"
android:paddingTop="10dp"
android:paddingBottom="10dp"/>
</android.support.v4.view.ViewPager>
</LinearLayout>
Fragment Manager를 사용하여 어댑터를 생성합니다.이런 느낌.
MainActivity.javapublic class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager manager = getFragmentManager();
final ViewPager viewPager = (ViewPager)findViewById(R.id.pager);
final TestFragmentPagerAdapter adapter =
new TestFragmentPagerAdapter(manager);
viewPager.setAdapter(adapter);
}
}
실행 확인
제 실기(Sony SOL25)로 동작을 확인했습니다.
응, 그래.
끝말
Github 프로젝트가 공개되었습니다.할애의 설명은 여기 보세요.당신의 지적과 건의를 받을 수 있다면 정말 다행입니다.
참고 자료
ViewPager | Android Developers
화면을 가로로 전환하는 ViewPager 사용 방법 교환
Reference
이 문제에 관하여(Fragment+ViewPager 파일럿), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mackiso/items/1dacec44d9096bc6d900
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context=".MainActivity">
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<android.support.v4.view.PagerTitleStrip
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:background="@drawable/border"
android:textColor="#000000"
android:paddingTop="10dp"
android:paddingBottom="10dp"/>
</android.support.v4.view.ViewPager>
</LinearLayout>
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager manager = getFragmentManager();
final ViewPager viewPager = (ViewPager)findViewById(R.id.pager);
final TestFragmentPagerAdapter adapter =
new TestFragmentPagerAdapter(manager);
viewPager.setAdapter(adapter);
}
}
제 실기(Sony SOL25)로 동작을 확인했습니다.
응, 그래.
끝말
Github 프로젝트가 공개되었습니다.할애의 설명은 여기 보세요.당신의 지적과 건의를 받을 수 있다면 정말 다행입니다.
참고 자료
ViewPager | Android Developers
화면을 가로로 전환하는 ViewPager 사용 방법 교환
Reference
이 문제에 관하여(Fragment+ViewPager 파일럿), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mackiso/items/1dacec44d9096bc6d900
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
ViewPager | Android Developers
화면을 가로로 전환하는 ViewPager 사용 방법 교환
Reference
이 문제에 관하여(Fragment+ViewPager 파일럿), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mackiso/items/1dacec44d9096bc6d900텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)