Dynamic view with swiping horizontally and vertica

2019-02-05 07:53发布

问题:

Please check above view

I have to create a view accordingly, where when we slide left to right images will come same as right to left. When I slide top to bottom a web view will come and sliding bottom to top images will come. All the data like images and web url will be dynamic and data will come from server. Also I have to apply pull to refresh concept in it.

I have gone through this link and successfully implemented it but its not accordingly and it have many limitations.

Please let me know that if this kind of view is possible or not.

回答1:

There is a way to do this with out using any lib.

In your xml file design another layout and put all the widget which you want to show at the time of sliding after that apply sliding animation like left to right and up to down as you want. After that with the help of gesture detector you can get the event of sliding, and perform your task.

Here is my code

Animation Left slide
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="500"
    android:fromXDelta="100%"
    android:toXDelta="0%" >
</translate>

Animation Right slide
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="500"
    android:fromXDelta="-100%"
    android:toXDelta="0%" >
</translate>

Animation Slide up
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="500"
    android:fromYDelta="100%"
    android:toYDelta="0%" >
</translate>

Animation Slide Down
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="500"
    android:fromYDelta="-100%"
    android:toYDelta="0%" >
</translate>

Code used in class file for animation

case SimpleGestureFilter.SWIPE_RIGHT:
    ScreenAnimation.setVisibility(View.VISIBLE);
    ScreenAnimation.startAnimation(RightSwipe);

    break;
case SimpleGestureFilter.SWIPE_LEFT:
    ScreenAnimation.setVisibility(View.VISIBLE);
    break;
case SimpleGestureFilter.SWIPE_DOWN:
    ScreenAnimation.setVisibility(View.VISIBLE);
    ScreenAnimation.startAnimation(DownSwipe);
    break;
case SimpleGestureFilter.SWIPE_UP:
    ScreenAnimation.setVisibility(View.VISIBLE);
    ScreenAnimation.startAnimation(UpSwipe);
    break;


回答2:

There's an open source component called TwoWayGridView. It provides both horizontal and vertical scrolling. Maybe you can customize it to fit your needs.

The other way is to use GestureDetector and do the track yourself. There's also a sample project on Android developer site, go to Training→Best Practices for User Input→Using Touch Gestures (I can't post more than two links). It looks complicated at first, but then you can customize each gesture so you can differentiate between swipe up and down, for instance.