2016-03-29 6 views
3

Я пытаюсь прокрутить компонент в файле макета. Я пытаюсь сделать это по-разному. Но это dosen't работа для меня Вот некоторые вещи я делал это,Как пронести компонент слева направо в android

LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

LinearLayout options_layout = (LinearLayout) findViewById(R.id.linearLayout); 
for(int i=0;i<5;i++){ 
    View to_add = inflater.inflate(R.layout.layout_grid_01,options_layout,false); 

    TextView text = (TextView) to_add.findViewById(R.id.txtView1); 
    text.setText("Print - " + i); 

    for(int j=0;j<5;j++){ 
     final View add=inflater.inflate(R.layout.layout_grid_02, (ViewGroup) to_add,false); 

     TextView text1 = (TextView) add.findViewById(R.id.txtView2); 
     text1.setText("Print double - " + j); 

     add.setOnTouchListener(new OnSwipeTouchListener(MainActivity.this){ 
       public void onSwipeLeft() { 
       } 

       public void onSwipeTop() { 
       } 

       public void onSwipeBottom() { 
       } 
       @Override 
       public void onSwipeRight() { 
        overridePendingTransition(R.anim.animation,R.anim.animation_2); 
       } 
     }); 

     ((ViewGroup) to_add).addView(add); 
    } 
    options_layout.addView(to_add); 
} 

OnSwipeTouchListener.java

import android.content.Context; 
import android.view.GestureDetector; 
import android.view.GestureDetector.SimpleOnGestureListener; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.View.OnTouchListener; 

public class OnSwipeTouchListener implements OnTouchListener { 

    private final GestureDetector gestureDetector; 

    public OnSwipeTouchListener (Context ctx){ 
     gestureDetector = new GestureDetector(ctx, new GestureListener()); 
    } 

    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     return gestureDetector.onTouchEvent(event); 
    } 

    private final class GestureListener extends SimpleOnGestureListener { 

     private static final int SWIPE_THRESHOLD = 100; 
     private static final int SWIPE_VELOCITY_THRESHOLD = 100; 

     @Override 
     public boolean onDown(MotionEvent e) { 
      return true; 
     } 

     @Override 
     public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
      boolean result = false; 
      try { 
       float diffY = e2.getY() - e1.getY(); 
       float diffX = e2.getX() - e1.getX(); 
       if (Math.abs(diffX) > Math.abs(diffY)) { 
        if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) { 
         if (diffX > 0) { 
          onSwipeRight(); 
         } else { 
          onSwipeLeft(); 
         } 
        } 
        result = true; 
       } 
       else if (Math.abs(diffY) > SWIPE_THRESHOLD && Math.abs(velocityY) > SWIPE_VELOCITY_THRESHOLD) { 
        if (diffY > 0) { 
         onSwipeBottom(); 
        } else { 
         onSwipeTop(); 
        } 
       } 
       result = true; 

      } catch (Exception exception) { 
       exception.printStackTrace(); 
      } 
      return result; 
     } 
    } 

    public void onSwipeRight() { 
    } 

    public void onSwipeLeft() { 
    } 

    public void onSwipeTop() { 
    } 

    public void onSwipeBottom() { 
    } 
} 

animation.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shareInterpolator="false"> 
    <translate android:fromXDelta="-100%" android:toXDelta="0%" 
       android:fromYDelta="0%" android:toYDelta="0%" 
       android:duration="700"/> 
</set> 

animation_2.xaml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shareInterpolator="false"> 
    <translate android:fromXDelta="0%" 
       android:toXDelta="100%" 
       android:fromYDelta="0%" 
       android:toYDelta="0%" 
       android:duration="700" /> 
</set> 

Это код, который я пытался сделать выше. У вас есть идеи?

спасибо.

+0

Вы связали использовать ViewPager? –

+0

Нет, я не знаю. Я хочу сделать это выше. – Barrier

ответ

0

Добавить следующие файлы в папке res/anim: slide_in_left.xml:

<?xml version="1.0" encoding="utf-8"?> 
     <set xmlns:android="http://schemas.android.com/apk/res/android" 
      android:shareInterpolator="true"> 
      <translate android:fromXDelta="-100%" 
       android:toXDelta="0%" android:fromYDelta="0%" 
       android:toYDelta="0%" android:duration="300"> 
      </translate> 
    </set> 

slide_in_right.xml:

<?xml version="1.0" encoding="utf-8"?> 
    <set xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shareInterpolator="true"> 
     <translate android:fromXDelta="-100%" 
      android:toXDelta="0%" android:fromYDelta="0%" 
      android:toYDelta="0%" android:duration="300"> 
     </translate> 
    </set> 

slide_out_left:

<?xml version="1.0" encoding="utf-8"?> 
    <set xmlns:android="http://schemas.android.com/apk/res/android"> 
     <translate android:fromXDelta="0" android:toXDelta="-50%p" 
       android:duration="@android:integer/config_mediumAnimTime"/> 
     <alpha android:fromAlpha="1.0" android:toAlpha="0.0" 
       android:duration="@android:integer/config_mediumAnimTime" /> 
    </set> 

slide_out_right:

<?xml version="1.0" encoding="utf-8"?> 
    <set xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shareInterpolator="false"> 
     <translate android:fromXDelta="0%" android:toXDelta="100%" 
      android:fromYDelta="0%" android:toYDelta="0%" 
      android:duration="0"> 
     </translate> 
    </set> 

После этого вы можете использовать эти анимации для откатных слева направо и справа налево, как:

overridePendingTransition(R.anim.slide_in_left,R.anim.slide_out_right); 

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

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