如果拖动到某个区域之外,则取消按钮操作

时间:2019-06-16 10:49:37

标签: java android

我的应用程序中有一个麦克风按钮,用户可以通过该按钮输入语音。它使用OnTouchListener来检测用户是否按下按钮。如果他们按住按钮但将手指拖到按钮外,即使它们不触摸屏幕,MotionEvent仍将动作视为“ ACTION_DOWN”,即使它们触摸屏幕边缘附近也是如此。我们需要进行更改,因此,如果用户将手指从按钮上移开,MotionEvent将变为“ ACTION_UP”。

recordBtn.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View view, MotionEvent motionEvent) {
        switch (motionEvent.getAction()) {

        //User stops touching the button.
        case MotionEvent.ACTION_UP:
            if(isRecording) {
                stopRecording();
                isRecording = false;
            }
            break;

        //User touches the button.
        case MotionEvent.ACTION_DOWN:
            if(!isRecording) {
                startRecording();
                isRecording = true;
            }
            break;

        }
        return false;
    }
});

XML:

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:layout_marginBottom="8dp"
    android:layout_marginEnd="8dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.5"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.9">

    <TextView
        android:id="@+id/recordText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/custom_button"
        android:layout_centerHorizontal="true"
        android:layout_marginStart="8dp"
        android:layout_marginTop="195dp"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="8dp"
        android:gravity="center"
        android:fontFamily="sans-serif"
        android:text="@string/hold_the_mic_and_record"
        android:textColor="@color/white"
        android:textSize="20sp"/>

    <Button
        android:id="@+id/custom_button"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_centerHorizontal="true"
        android:layout_marginStart="8dp"
        android:layout_marginEnd="8dp"
        android:background="@drawable/microphone" />
</RelativeLayout>

0 个答案:

没有答案