触摸侦听器上的文本视图

大卫·维托里(David Vittori):

我想用android手势识别器缩放textView,我插入了带有活动处理的ontouchlistener的textview。我工作得很好,但是有时候手机发送的坐标彼此相距遥远,从而导致奇怪的行为。

et.setOnTouchListener(this);

@Override
public boolean onTouch(View view, MotionEvent event) {
    Log.d("vieww", view.toString() + event.toString());
    return mDetector.onTouchEvent(event, view);
}

在错误中,我们可以看到它如何在x [1]坐标系中从0.2跳到29,并且偶尔会用遥远的距离发生。

2019-11-29 11:42:12.001 24190-24190/com.puzio.fantamaster D/vieww: com.puzio.fantamaster.stories.CustomTextView{c403026 V.ED..... ........ 363,1009-717,1151}MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=388.7553, y[0]=67.06885, toolType[0]=TOOL_TYPE_FINGER, id[1]=1, x[1]=-0.9180603, y[1]=64.4707, toolType[1]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=2, historySize=1, eventTime=185339115, downTime=185338000, deviceId=4, source=0x1002 }
2019-11-29 11:42:12.018 24190-24190/com.puzio.fantamaster D/vieww: com.puzio.fantamaster.stories.CustomTextView{c403026 V.ED..... ........ 363,1009-717,1151}MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=389.37167, y[0]=67.037476, toolType[0]=TOOL_TYPE_FINGER, id[1]=1, x[1]=-0.5545349, y[1]=64.32861, toolType[1]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=2, historySize=1, eventTime=185339131, downTime=185338000, deviceId=4, source=0x1002 }
2019-11-29 11:42:12.035 24190-24190/com.puzio.fantamaster D/vieww: com.puzio.fantamaster.stories.CustomTextView{c403026 V.ED..... ........ 363,1009-717,1151}MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=389.8729, y[0]=67.28259, toolType[0]=TOOL_TYPE_FINGER, id[1]=1, x[1]=-0.06616211, y[1]=63.908325, toolType[1]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=2, historySize=1, eventTime=185339148, downTime=185338000, deviceId=4, source=0x1002 }
2019-11-29 11:42:12.051 24190-24190/com.puzio.fantamaster D/vieww: com.puzio.fantamaster.stories.CustomTextView{c403026 V.ED..... ........ 363,1009-717,1151}MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=390.5043, y[0]=67.229004, toolType[0]=TOOL_TYPE_FINGER, id[1]=1, x[1]=0.2909851, y[1]=63.786743, toolType[1]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=2, historySize=1, eventTime=185339164, downTime=185338000, deviceId=4, source=0x1002 }
2019-11-29 11:42:12.052 24190-24190/com.puzio.fantamaster D/CustomTextViewww: [{overlay_type=t, overlay_color=FFFFFFFF, overlay_content=abueloooo, overlay_rotation=65.892624, overlay_width=113.86625, overlay_height=23.015692, overlay_x=-6.9331245, overlay_y=41.589497, overlay_background=FFFFFFFF}]
2019-11-29 11:42:12.068 24190-24190/com.puzio.fantamaster D/vieww: com.puzio.fantamaster.stories.CustomTextView{c403026 V.ED..... ........ 363,1009-717,1151}MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=355.4997, y[0]=69.382324, toolType[0]=TOOL_TYPE_FINGER, id[1]=1, x[1]=29.689026, y[1]=63.908936, toolType[1]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=2, historySize=1, eventTime=185339181, downTime=185338000, deviceId=4, source=0x1002 }
2019-11-29 11:42:12.070 24190-24190/com.puzio.fantamaster D/CustomTextViewww: [{overlay_type=t, overlay_color=FFFFFFFF, overlay_content=abueloooo, overlay_rotation=65.89123, overlay_width=137.12038, overlay_height=27.968573, overlay_x=-18.560186, overlay_y=39.113056, overlay_background=FFFFFFFF}]
2019-11-29 11:42:12.085 24190-24190/com.puzio.fantamaster D/vieww: com.puzio.fantamaster.stories.CustomTextView{c403026 V.ED..... ........ 363,1009-717,1151}MotionEvent { action=ACTION_MOVE, actionButton=0, id[0]=0, x[0]=400.99493, y[0]=68.80994, toolType[0]=TOOL_TYPE_FINGER, id[1]=1, x[1]=-7.1364136, y[1]=61.94348, toolType[1]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=2, historySize=1, eventTime=185339198, downTime=185338000, deviceId=4, source=0x1002 }
阿维纳什·蒂瓦里(Avinash Tiwari):

请这样做或您可以使用

https://github.com/nomanr/ZoomTextView

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

    <TextView
    android:id="@+id/mytv"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:text="This is my sample text for pinch zoom demo, you can zoom in and out 
using pinch zoom, thanks" />

 </RelativeLayout>



import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.TextView;

public class TextViewPinchZoom extends Activity implements OnTouchListener {

final static float STEP = 200;
TextView mytv;
float mRatio = 1.0f;
int mBaseDist;
float mBaseRatio;
float fontsize = 13;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mytv = (TextView) findViewById(R.id.mytv);
    mytv.setTextSize(mRatio + 13);
   }

  public boolean onTouchEvent(MotionEvent event) {
    if (event.getPointerCount() == 2) {
        int action = event.getAction();
        int pureaction = action & MotionEvent.ACTION_MASK;
        if (pureaction == MotionEvent.ACTION_POINTER_DOWN) {
            mBaseDist = getDistance(event);
            mBaseRatio = mRatio;
        } else {
            float delta = (getDistance(event) - mBaseDist) / STEP;
            float multi = (float) Math.pow(2, delta);
            mRatio = Math.min(1024.0f, Math.max(0.1f, mBaseRatio * multi));
            mytv.setTextSize(mRatio + 13);
        }
    }
    return true;
    }

    int getDistance(MotionEvent event) {
    int dx = (int) (event.getX(0) - event.getX(1));
    int dy = (int) (event.getY(0) - event.getY(1));
    return (int) (Math.sqrt(dx * dx + dy * dy));
   }

  public boolean onTouch(View v, MotionEvent event) {
    return false;
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章