Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ais.mobilelife.appstore1.views;
- import android.content.Context;
- import android.util.AttributeSet;
- import android.util.Log;
- import android.view.GestureDetector;
- import android.view.MotionEvent;
- import android.view.View;
- import android.widget.HorizontalScrollView;
- import android.widget.ImageView;
- import android.widget.LinearLayout;
- import com.squareup.picasso.Picasso;
- import java.util.ArrayList;
- import ais.mobilelife.appstore1.R;
- import ais.mobilelife.appstore1.utils.UiHelper;
- /**
- * Created by apichais on 11/24/14 AD.
- */
- public class ScreenShotSlider extends HorizontalScrollView {
- private static final int SWIPE_MIN_DISTANCE = 5;
- private static final int SWIPE_THRESHOLD_VELOCITY = 300;
- private ArrayList mItems = null;
- private GestureDetector mGestureDetector;
- private int mActiveFeature = 0;
- public ScreenShotSlider(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- }
- public ScreenShotSlider(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
- public ScreenShotSlider(Context context) {
- super(context);
- }
- public void setScreenshots(ArrayList items) {
- LinearLayout internalWrapper = new LinearLayout(getContext());
- internalWrapper.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
- internalWrapper.setOrientation(LinearLayout.HORIZONTAL);
- addView(internalWrapper);
- this.mItems = items;
- for (int i = 0; i < items.size(); i++) {
- ImageView imageView = new ImageView(getContext());
- LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.MATCH_PARENT);
- imageView.setLayoutParams(params);
- imageView.setAdjustViewBounds(true);
- if(i < items.size() - 1) {
- imageView.setPadding(0, 0, (int) UiHelper.convertDpToPixel(5, getContext()), 0);
- }
- Picasso.with(getContext()).load(mItems.get(i).toString()).into(imageView);
- internalWrapper.addView(imageView);
- imageView.setOnTouchListener(new OnTouchListener() {
- @Override
- public boolean onTouch(View view, MotionEvent motionEvent) {
- featureWidth = view.getMeasuredWidth();
- return false;
- }
- });
- }
- setOnTouchListener(new View.OnTouchListener() {
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- //If the user swipes
- if (mGestureDetector.onTouchEvent(event)) {
- return true;
- } else if (event.getAction() == MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL) {
- // Log.e("alsklsaklassa", "asdasdadsasdasdasd ");
- int scrollX = getScrollX();
- // int featureWidth = v.getMeasuredWidth();
- mActiveFeature = ((scrollX + (featureWidth / 2)) / featureWidth);
- int scrollTo = mActiveFeature * featureWidth;
- smoothScrollTo(scrollTo, 0);
- return true;
- } else {
- return false;
- }
- }
- });
- mGestureDetector = new GestureDetector(getContext(), new MyGestureDetector());
- }
- private int featureWidth;
- class MyGestureDetector extends GestureDetector.SimpleOnGestureListener {
- @Override
- public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
- try {
- //right to left
- if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
- // int featureWidth = getMeasuredWidth();
- mActiveFeature = (mActiveFeature < (mItems.size() - 2)) ? mActiveFeature + 1 : mItems.size() - 2;
- smoothScrollTo(mActiveFeature * featureWidth, 0);
- return true;
- }
- //left to right
- else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
- // int featureWidth = getMeasuredWidth();
- mActiveFeature = (mActiveFeature > 0) ? mActiveFeature - 1 : 0;
- smoothScrollTo(mActiveFeature * featureWidth, 0);
- return true;
- }
- } catch (Exception e) {
- Log.e("Fling", "There was an error processing the Fling event:" + e.getMessage());
- }
- return false;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement