Как сделать специальную зону для вызова на сенсорном событии? - PullRequest
1 голос
/ 28 мая 2011

В моей программе есть следующий пользовательский интерфейс: ui . Я хочу обработать событие касания пальцем на множестве кнопок, конечно, не теряя возможности нажимать на кнопку. Как это сделать?

1 Ответ

1 голос
/ 29 мая 2011

Вы говорите о кнопках внизу экрана?

Вот пример 3 кнопок, выровненных по горизонтали, где можно провести и щелкнуть. Обработка щелчков в «onSingleTapUp» и пролистывания в «onFling ()».

public class SwipeExample extends Activity implements OnTouchListener {

    private static final String TAG = SwipeExample.class.getName();

    private int mOnTouchId;

    private GestureDetector mGestureDetector;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);      

        mGestureDetector = new GestureDetector(new MyGestureDetector());

        Button one = (Button) findViewById(R.id.button_one);        
        one.setOnTouchListener(this);
        Button two = (Button) findViewById(R.id.button_two);
        two.setOnTouchListener(this);   
        Button three = (Button) findViewById(R.id.button_three);
        three.setOnTouchListener(this);     
    }   

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        mOnTouchId = v.getId();
        if (mGestureDetector.onTouchEvent(event)) {                 
            Log.d(TAG, "onTouchEvent");
        }
        return false;
    }

    private class MyGestureDetector extends SimpleOnGestureListener {
        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 
                float velocityY) {          
            Log.d(TAG, "onFling() - MyGestureDetector");
            return true;
        }
        @Override
        public boolean onDown(MotionEvent e) {
            Log.d(TAG, "onDown() - MyGestureDetector");
            return true;
        }

        @Override
        public boolean onSingleTapUp(MotionEvent e) {
            Log.d(TAG, "onSingleTapUp() - MyGestureDetector");
            if (mOnTouchId == R.id.button_one) {
                Log.d(TAG, "Button one");
            } else if (mOnTouchId == R.id.button_two) {
                Log.d(TAG, "Button two");
            } else if (mOnTouchId == R.id.button_three) {
                Log.d(TAG, "Button three");
            }
            return true;
        }       
    }   
}

main.xml

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="horizontal" android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:id="@+id/LinearLayout"
        android:background="#348282">
        <Button android:id="@+id/button_one" android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:text="Button one" />
        <Button android:id="@+id/button_two" android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:text="Button two" />
        <Button android:id="@+id/button_three" android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:text="Button three" />
    </LinearLayout>
...