Android图像视图缩放和翻译问题

Android图像视图缩放和翻译问题

我正在开发一个Android应用程序(API 194.4),我遇到了ImageViews的一些问题。我有一个SurfaceView,在其中我动态地添加了ImageViews,我想对触摸事件做出反应。到目前为止,我已经成功地使ImageView移动和缩放顺利,但我有一个恼人的行为。

当我缩小图像到一定的限制(我可以说是原始大小的一半),我试图移动它,图像闪烁。经过一个简短的分析,它似乎是对称地在屏幕上的手指周围切换它的位置,累积距离,最后离开视线(这一切发生得非常快(<1s)。我想我错过了一些东西,与ImageView/SurfaceView相比,触摸事件的相对价值,但我是个菜鸟,而且我被塞进了…

这是我的密码

public class MyImageView extends ImageView {private ScaleGestureDetector mScaleDetector ;
private static final int MAX_SIZE = 1024;private static final String TAG = "MyImageView";
PointF DownPT = new PointF(); // Record Mouse Position When Pressed DownPointF StartPT = new PointF();
 // Record Start Position of 'img'public MyImageView(Context context) {
    super(context);
    mScaleDetector = new ScaleGestureDetector(context,new MySimpleOnScaleGestureListener());
    setBackgroundColor(Color.RED);
    setScaleType(ScaleType.MATRIX);
    setAdjustViewBounds(true);
    RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
    RelativeLayout.LayoutParams.WRAP_CONTENT);

    lp.setMargins(-MAX_SIZE, -MAX_SIZE, -MAX_SIZE, -MAX_SIZE);
    this.setLayoutParams(lp);
    this.setX(MAX_SIZE);
    this.setY(MAX_SIZE);}int firstPointerID;boolean inScaling=false;@Overridepublic boolean onTouchEvent(MotionEvent event) {
    // get pointer index from the event object
    int pointerIndex = event.getActionIndex();
    // get pointer ID
    int pointerId = event.getPointerId(pointerIndex);
    //First send event to scale detector to find out, if it's a scale
    boolean res = mScaleDetector.onTouchEvent(event);

}

我还有另外一个关于轮调的问题。我应该如何实现这一点?我是否可以某种方式使用ScalegestureDetector,或者让我让它在视图触摸事件中工作呢?我希望能够以相同的姿态缩放和旋转(并在另一个手势中移动)。

谢谢你的帮助,我真的很感激!


心有法竹
浏览 550回答 3
3回答

MMMHUHU

我试着用矩阵实现多点触摸视图而不是位图,现在我成功了。现在,我认为这将有助于您为多个形象的个人手势。试试看,它对我最有效。public&nbsp;class&nbsp;MultiTouchImageView&nbsp;extends&nbsp;ImageView&nbsp;implements&nbsp;OnTouchListener{float[]&nbsp;lastEvent&nbsp;=&nbsp;null;float&nbsp;d&nbsp;=&nbsp;0f;float&nbsp;newRot&nbsp;=&nbsp;0f; public&nbsp;static&nbsp;String&nbsp;fileNAME;public&nbsp;static&nbsp;int&nbsp;framePos&nbsp;=&nbsp;0;//private&nbsp;ImageView&nbsp;view;private&nbsp;boolean&nbsp;isZoomAndRotate; private&nbsp;boolean&nbsp;isOutSide;//&nbsp;We&nbsp;can&nbsp;be&nbsp;in&nbsp;one&nbsp;of&nbsp;these&nbsp;3&nbsp;statesprivate&nbsp;static&nbsp;final&nbsp;int&nbsp;NONE&nbsp;=&nbsp;0; private&nbsp;static&nbsp;final&nbsp;int&nbsp;DRAG&nbsp;=&nbsp;1;private&nbsp;static&nbsp;final&nbsp;int&nbsp;ZOOM&nbsp;=&nbsp;2;private&nbsp;int&nbsp;mode&nbsp;=&nbsp;NONE; private&nbsp;PointF&nbsp;start&nbsp;=&nbsp;new&nbsp;PointF();private&nbsp;PointF&nbsp;mid&nbsp;=&nbsp;new&nbsp;PointF();float&nbsp;oldDist&nbsp;=&nbsp;1f;public&nbsp;MultiTouchImageView(Context&nbsp;context)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;super(context);}public&nbsp;MultiTouchImageView(Context&nbsp;context,&nbsp;AttributeSet&nbsp;attrs,&nbsp;int&nbsp;defStyle)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;super(context,&nbsp;attrs,&nbsp;defStyle);}public&nbsp;MultiTouchImageView(Context&nbsp;context,&nbsp;AttributeSet&nbsp;attrs)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;super(context,&nbsp;attrs);}@SuppressWarnings("deprecation")@Overridepublic&nbsp;boolean&nbsp;onTouch(View&nbsp;v,&nbsp;MotionEvent&nbsp;event)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;//view&nbsp;=&nbsp;(ImageView)&nbsp;v; &nbsp;&nbsp;&nbsp;&nbsp;bringToFront(); &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Handle&nbsp;touch&nbsp;events&nbsp;here... &nbsp;&nbsp;&nbsp;&nbsp;switch&nbsp;(event.getAction()&nbsp;&&nbsp;MotionEvent.ACTION_MASK)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MotionEvent.ACTION_DOWN: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//savedMatrix.set(matrix); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;start.set(event.getX(),&nbsp;event.getY()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mode&nbsp;=&nbsp;DRAG; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lastEvent&nbsp;=&nbsp;null; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MotionEvent.ACTION_POINTER_DOWN: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oldDist&nbsp;=&nbsp;spacing(event); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(oldDist&nbsp;>&nbsp;10f)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;midPoint(mid,&nbsp;event); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mode&nbsp;=&nbsp;ZOOM; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lastEvent&nbsp;=&nbsp;new&nbsp;float[4]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lastEvent[0]&nbsp;=&nbsp;event.getX(0); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lastEvent[1]&nbsp;=&nbsp;event.getX(1); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lastEvent[2]&nbsp;=&nbsp;event.getY(0); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lastEvent[3]&nbsp;=&nbsp;event.getY(1); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d&nbsp;=&nbsp;&nbsp;rotation(event); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MotionEvent.ACTION_UP: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isZoomAndRotate&nbsp;=&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MotionEvent.ACTION_OUTSIDE: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isOutSide&nbsp;=&nbsp;true; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mode&nbsp;=&nbsp;NONE; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lastEvent&nbsp;=&nbsp;null; &nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MotionEvent.ACTION_POINTER_UP: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mode&nbsp;=&nbsp;NONE; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lastEvent&nbsp;=&nbsp;null; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;MotionEvent.ACTION_MOVE: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!isOutSide){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(mode&nbsp;==&nbsp;DRAG&nbsp;&&&nbsp;!isZoomAndRotate)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isZoomAndRotate&nbsp;=&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setTranslationX((event.getX()&nbsp;-&nbsp;start.x)&nbsp;+&nbsp;getTranslationX()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setTranslationY((event.getY()&nbsp;-&nbsp;start.y)&nbsp;+&nbsp;getTranslationY()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;if&nbsp;(mode&nbsp;==&nbsp;ZOOM&nbsp;&&&nbsp;event.getPointerCount()&nbsp;==&nbsp;2)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isZoomAndRotate&nbsp;=&nbsp;true; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;boolean&nbsp;isZoom&nbsp;=&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!isRotate(event)){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float&nbsp;newDist&nbsp;=&nbsp;spacing(event); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(newDist&nbsp;>&nbsp;10f)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float&nbsp;scale&nbsp;=&nbsp;newDist&nbsp;/&nbsp;oldDist&nbsp;*&nbsp;getScaleX(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setScaleX(scale); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setScaleY(scale); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isZoom&nbsp;=&nbsp;true; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if(!isZoom){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newRot&nbsp;=&nbsp;rotation(event); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setRotation((float)(getRotation()&nbsp;+&nbsp;(newRot&nbsp;-&nbsp;d))); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;GestureDetector(new&nbsp;MyGestureDectore()); &nbsp;&nbsp;&nbsp;&nbsp;Constants.currentSticker&nbsp;=&nbsp;this; &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;}private&nbsp;class&nbsp;MyGestureDectore&nbsp;extends&nbsp;GestureDetector.SimpleOnGestureListener{ &nbsp;&nbsp;&nbsp;&nbsp;@Override &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;boolean&nbsp;onDoubleTap(MotionEvent&nbsp;e)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bringToFront(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;@Override &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;boolean&nbsp;onDoubleTapEvent(MotionEvent&nbsp;e)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;}}private&nbsp;float&nbsp;rotation(MotionEvent&nbsp;event)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;double&nbsp;delta_x&nbsp;=&nbsp;(event.getX(0)&nbsp;-&nbsp;event.getX(1)); &nbsp;&nbsp;&nbsp;&nbsp;double&nbsp;delta_y&nbsp;=&nbsp;(event.getY(0)&nbsp;-&nbsp;event.getY(1)); &nbsp;&nbsp;&nbsp;&nbsp;double&nbsp;radians&nbsp;=&nbsp;Math.atan2(delta_y,&nbsp;delta_x); &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(float)&nbsp;Math.toDegrees(radians);}private&nbsp;float&nbsp;spacing(MotionEvent&nbsp;event)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;float&nbsp;x&nbsp;=&nbsp;event.getX(0)&nbsp;-&nbsp;event.getX(1); &nbsp;&nbsp;&nbsp;&nbsp;float&nbsp;y&nbsp;=&nbsp;event.getY(0)&nbsp;-&nbsp;event.getY(1); &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;FloatMath.sqrt(x&nbsp;*&nbsp;x&nbsp;+&nbsp;y&nbsp;*&nbsp;y);}private&nbsp;void&nbsp;midPoint(PointF&nbsp;point,&nbsp;MotionEvent&nbsp;event)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;float&nbsp;x&nbsp;=&nbsp;event.getX(0)&nbsp;+&nbsp;event.getX(1); &nbsp;&nbsp;&nbsp;&nbsp;float&nbsp;y&nbsp;=&nbsp;event.getY(0)&nbsp;+&nbsp;event.getY(1); &nbsp;&nbsp;&nbsp;&nbsp;point.set(x&nbsp;/&nbsp;2,&nbsp;y&nbsp;/&nbsp;2);}private&nbsp;boolean&nbsp;isRotate(MotionEvent&nbsp;event){ &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;dx1&nbsp;=&nbsp;(int)&nbsp;(event.getX(0)&nbsp;-&nbsp;lastEvent[0]); &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;dy1&nbsp;=&nbsp;(int)&nbsp;(event.getY(0)&nbsp;-&nbsp;lastEvent[2]); &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;dx2&nbsp;=&nbsp;(int)&nbsp;(event.getX(1)&nbsp;-&nbsp;lastEvent[1]); &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;dy2&nbsp;=&nbsp;(int)&nbsp;(event.getY(1)&nbsp;-&nbsp;lastEvent[3]); &nbsp;&nbsp;&nbsp;&nbsp;Log.d("dx1&nbsp;",&nbsp;""+&nbsp;dx1); &nbsp;&nbsp;&nbsp;&nbsp;Log.d("dx2&nbsp;",&nbsp;""&nbsp;+&nbsp;dx2); &nbsp;&nbsp;&nbsp;&nbsp;Log.d("dy1&nbsp;",&nbsp;""&nbsp;+&nbsp;dy1); &nbsp;&nbsp;&nbsp;&nbsp;Log.d("dy2&nbsp;",&nbsp;""&nbsp;+&nbsp;dy2); &nbsp;&nbsp;&nbsp;&nbsp;//pointer&nbsp;1 &nbsp;&nbsp;&nbsp;&nbsp;if(Math.abs(dx1)&nbsp;>&nbsp;Math.abs(dy1)&nbsp;&&&nbsp;Math.abs(dx2)&nbsp;>&nbsp;Math.abs(dy2))&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(dx1&nbsp;>=&nbsp;2.0&nbsp;&&&nbsp;dx2&nbsp;<=&nbsp;&nbsp;-2.0){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Log.d("first&nbsp;pointer&nbsp;",&nbsp;"right"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if(dx1&nbsp;<=&nbsp;-2.0&nbsp;&&&nbsp;dx2&nbsp;>=&nbsp;2.0){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Log.d("first&nbsp;pointer&nbsp;",&nbsp;"left"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(dy1&nbsp;>=&nbsp;2.0&nbsp;&&&nbsp;dy2&nbsp;<=&nbsp;&nbsp;-2.0){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Log.d("seccond&nbsp;pointer&nbsp;",&nbsp;"top"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if(dy1&nbsp;<=&nbsp;-2.0&nbsp;&&&nbsp;dy2&nbsp;>=&nbsp;2.0){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Log.d("second&nbsp;pointer&nbsp;",&nbsp;"bottom"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;true;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;}}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android
Java