2014-03-06 5 views
0

Fragment에서 일종의 변환을 시도하고 있으며 FragmentActivity를 작성하기 위해 Eclipse에서 기본 애플리케이션 해골을 사용하고 있습니다. xml에서 사용자 지정 트랜지션 애니메이션을 지정하는 다른 게시물을 발견했지만 Transaction에서는이 작업이 수행되고 있으며 FragmentActivity를 사용하는 것은 없습니다. (btw 훨씬 쉬워집니다.)FragmentActivity 사용자 정의 단편 전환

FragmentActivity에서 사용자 지정 전환을 만드는 방법을 알고 싶습니다. 미리 감사드립니다.

편집 : F과 유사하지만 FragmentActivity와 같습니다.

MusicPlayerActivity.java

public class MusicPlayerActivity extends FragmentActivity { 

SectionsPagerAdapter mSectionsPagerAdapter; 

ViewPager mViewPager; 

    @Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // init pager and set its adapter 
    mSectionsPagerAdapter = new SectionsPagerAdapter(
      getSupportFragmentManager()); 
    mViewPager = (ViewPager) findViewById(R.id.pager); 
    mViewPager.setAdapter(mSectionsPagerAdapter); 

    //other init code ... 
} 

    public class SectionsPagerAdapter extends FragmentPagerAdapter { 

    public SectionsPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     switch (position) { 
     case 0: 
      return new MainFragment(); 
     case 1: 
      return new AllSongsFragment(); 
     case 2: 
      return new SettingsFragment(); 
     default: 
      return null; 
     } 
    } 

    @Override 
    public int getCount() { 
     // Show 3 total pages. 
     return 3; 
    } 

    /** 
    * Get title for supplied Fragment number. 
    */ 
    @Override 
    public CharSequence getPageTitle(int position) { 
     Locale l = Locale.getDefault(); 
     switch (position) { 
     case 0: 
      return getString(R.string.title_section1).toUpperCase(l); 
     case 1: 
      return getString(R.string.title_section2).toUpperCase(l); 
     case 2: 
      return getString(R.string.title_section3).toUpperCase(l); 
     } 
     return null; 
    } 
} 

    //other methods 

} 

activity_music_player.xml

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/drawer_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context=".MusicPlayerActivity$OptionsFragment" > 

<android.support.v4.view.ViewPager 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/pager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MusicPlayerActivity" > 

    <android.support.v4.view.PagerTitleStrip 
     android:id="@+id/pager_title_strip" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="top" 
     android:background="#33b5e5" 
     android:paddingBottom="4dp" 
     android:paddingTop="4dp" 
     android:textColor="#fff" /> 
</android.support.v4.view.ViewPager> 

<ListView 
    android:id="@+id/drawer" 
    android:layout_width="160dp" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    android:background="#333333" 
    android:choiceMode="singleChoice" /> 

+0

조각 사이에서 '전환'중이지만 이벤트에서 조각 트랜잭션을 사용하지 않는 경우, 이는 사용자가 'ViewPager'및 'FragmentAdapter'를 사용한다고 가정합니다. ? 일부 코드 + 레이아웃을 게시 할 수 있습니까 –

+0

그래, 난 ViewPager btw를 사용하고 있습니다. – Dejan

답변

1

귀하의 의견에 말씀 하셨듯이 ViewPager입니다. FragmentTransaction에서 애니메이션을 실행하는 것과 약간 다릅니다.

사용하려는 것은 ViewPager.PageTransformer입니다. 그 방법에 대한 몇 가지 세부 사항이 있습니다 here

+0

감사합니다. – Dejan

0

질문은 나에게 매우 명확하지 않다. 그러나 나는 이것이 당신의 목적에 도움이 될 수 있다고 생각합니다.

에서 : http://developer.android.com/reference/android/app/Activity.html#overridePendingTransition(int, int)를

공공 무효 overridePendingTransition (INT enterAnim, INT exitAnim)

추가 된 API 레벨 5 전화에 즉시 startActivity를 (의도) 또는 마무리의 맛 중 하나 (후) 다음에 수행 할 명시 적 전환 애니메이션을 지정합니다.

JELLY_BEAN에서 활동 시작과 함께 이것을 사용하는 대신 ActivityOptions 번들을 통해 원하는 애니메이션 정보를 제공하여 #startActivity (의도, 번들) 또는 관련 기능을 제공 할 수 있습니다. 이렇게하면 현재 맨 위 활동의 ​​컨텍스트 외부에서 활동을 시작할 때도 사용자 정의 애니메이션을 지정할 수 있습니다.

매개 변수 enterAnim 들어오는 작업에 사용할 애니메이션 리소스의 리소스 ID입니다. 애니메이션을 사용하지 않으려면 0을 사용하십시오. exitAnim 나가는 활동에 사용할 애니메이션 리소스의 리소스 ID입니다. 애니메이션을 사용하지 않으려면 0을 사용하십시오.

+0

그래, 그게 다른 모든 게시물은 분명히 내가 원하는 것을 말한 것입니다. 나는 FragmentActivity 안에 3 개의 Fragment를 가지고 있는데 그 사이의 Transitions을 바꾸고 싶습니다. 코드에서 트랜잭션이 없으며 모든 것이 FragmentActivity에 의해 관리됩니다. 시작 및 마무리 작업에서 애니메이션이 아닌 조각 사이의 전환을 애니메이션으로 만들고 싶습니다. – Dejan