2015-05-28 4 views
0

У меня есть общий фрагмент с 2 TextView внутри:Перемещение текста с ViewPager.PageTransformer - не удалось

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <ImageView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:id="@+id/background_image"/>  

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_marginBottom="150dp"> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center" 
      android:id="@+id/title" 
      style="@style/IntroTitle" 
      android:text="TITLE" 
      android:layout_marginLeft="30dp" 
      android:layout_marginRight="30dp"/> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center" 
      android:id="@+id/description" 
      style="@style/IntroDescription" 
      android:text="Description" 
      android:layout_marginTop="8dp" 
      android:layout_marginLeft="30dp" 
      android:layout_marginRight="30dp"/> 

    </LinearLayout> 

</RelativeLayout> 

Этот формат используется IntroFragment и этот класс инстанциирован 5 раз в моей ViewPager (PageAdapter):

 @Override 
     public Fragment getItem(int position) { 
      Fragment fragment = null; 
      Bundle bundle = new Bundle(); 
      switch (position) { 
       case 0: 
        fragment = IntroFragment.newInstance(getString(R.string.intro_title_screen_1), 
          getString(R.string.intro_desc_screen_1)); 
        break; 
       case 1: 
        fragment = IntroFragment.newInstance(getString(R.string.intro_title_screen_2), 
          getString(R.string.intro_desc_screen_2)); 
        break; 
       case 2: 
... 

в моей PageTransformer, я хочу сделать перевод на X для названия и для описания, но поведение этого кода является сумасшедшим:

mViewPager.setPageTransformer(true, new ViewPager.PageTransformer() { 
      @Override 
      public void transformPage(View view, float position) { 
       int pageWidth = view.getWidth(); 

       if (position <= -1) { // [-Infinity,-1) 
        // This page is way off-screen to the left. 
       } else if (position <= 1) { // [-1,1] 

        TextView textview = (TextView) view.findViewById(R.id.description); 
        textview.setTranslationX((float) (-(1 - position) * 1.2 * pageWidth)); 

        textview = (TextView) view.findViewById(R.id.title); 
        textview.setTranslationX((float) (-(1 - position) * 1.2 * pageWidth)); 

       } else { // (1,+Infinity] 
        // This page is way off-screen to the right. 
       } 
      } 
     }); 

Возможно ли использовать общий фрагмент, подобный этому, и использовать файл PageTransformer для определенного виджета внутри (например, в моем случае Title и Description textview)?

Я просто хочу сделать перевод X быстрее (справа или слева зависит слайд-путь) по тексту и описанию текста.

Спасибо за помощь, ребята!

ответ

0

Я просто хочу, чтобы сделать X перевод быстрее (справа или слева зависит скользящий путь) на название и описание TextView.

да можно. position больше, чем ноль, когда вы двигаетесь справа, и меньше нуля, когда вы двигаетесь слева. В вашем коде коэффициент скорости является жестко запрограммированным (1.2). Вы должны найти математическую функцию или набор значений, которые соответствуют вашим потребностям.

+0

Благодарим за это указание. Но возможно ли найти представление по id с тем же идентификатором в этих 5 фрагментах? Потому что я использую тот же фрагмент 5 раз, чтобы заполнить мой ViewPager. – anthony

+0

вид, который вы получаете как параметр, - это тот же вид, который вы возвращаете в onCreateView, – Blackbelt

 Смежные вопросы

  • Нет связанных вопросов^_^