Advertisement
Guest User

Untitled

a guest
Sep 15th, 2017
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 1.95 KB | None | 0 0
  1. package com.givenjazz.android;
  2.  
  3. import android.content.Context;
  4. import android.hardware.SensorManager;
  5. import android.util.AttributeSet;
  6. import android.view.MotionEvent;
  7. import android.view.ViewConfiguration;
  8. import android.widget.Gallery;
  9.  
  10. public class OneFlingGallery extends Gallery {
  11.     private float mDeceleration;
  12.     private float mDistanceX;
  13.  
  14.     public OneFlingGallery(Context context) {
  15.     this(context, null);
  16.     }
  17.  
  18.     public OneFlingGallery(Context context, AttributeSet attrs) {
  19.     super(context, attrs);
  20.     float ppi = context.getResources().getDisplayMetrics().density * 160.0f;
  21.     mDeceleration = SensorManager.GRAVITY_EARTH // g (m/s^2)
  22.         * 39.37f // inch/meter
  23.         * ppi // pixels per inch
  24.         * ViewConfiguration.getScrollFriction();
  25.     }
  26.    
  27.     public OneFlingGallery(Context context, AttributeSet attrs, int defStyle) {
  28.     super(context, attrs, defStyle);
  29.     float ppi = context.getResources().getDisplayMetrics().density * 160.0f;
  30.     mDeceleration = SensorManager.GRAVITY_EARTH // g (m/s^2)
  31.         * 39.37f // inch/meter
  32.         * ppi // pixels per inch
  33.         * ViewConfiguration.getScrollFriction();
  34.     }
  35.    
  36.     @Override
  37.     public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
  38.         float velocityY) {
  39.  
  40.     float toMoveDistance = getWidth() - Math.abs(mDistanceX);
  41.     float maxVelocity = (float) Math.sqrt(toMoveDistance * mDeceleration
  42.         * 2);
  43.     float revisedVelocityX = 0;
  44.  
  45.     if (velocityX > 0) {
  46.         revisedVelocityX = Math.min(velocityX, maxVelocity);
  47.     } else {
  48.         revisedVelocityX = Math.max(velocityX, -maxVelocity);
  49.     }
  50.  
  51.     return super.onFling(e1, e2, revisedVelocityX, velocityY);
  52.     }
  53.  
  54.     @Override
  55.     public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
  56.         float distanceY) {
  57.     mDistanceX += distanceX;
  58.     return super.onScroll(e1, e2, distanceX, distanceY);
  59.     }
  60.  
  61.     @Override
  62.     public boolean onTouchEvent(MotionEvent event) {
  63.     if (event.getAction() == MotionEvent.ACTION_DOWN) {
  64.         mDistanceX = 0;
  65.     }
  66.     return super.onTouchEvent(event);
  67.     }
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement