OnTap监听器实现

Rid*_*ani 3 android tap

我怀疑是在特定按钮或图像视图或视图上实现的点击监听器?因为我浏览的网站只显示整个布局,我希望我的动作可以在点击视图时执行.请帮忙.谢谢.

Ken*_*nny 9

可以使用onClickListener()视图类的一部分来设置任何视图.最简单的方法是在方法中设置对视图的引用onCreate().以下是图像视图的示例:

ImageView iv = (ImageView) findViewByID(R.id.example);
iv.setOnClickListener(new View.OnClickListener() {

    public void onClick(View v) {
        // Do what you need to do on click
        ....
    }
});
Run Code Online (Sandbox Code Playgroud)

更新:DOUBLE TAP

以下是在图像视图上实现基本双击检测的示例活动:

import android.app.Activity;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

public class DoubleTapActivity extends Activity {
    //Set the double tap delay in milliseconds
    protected static final long DOUBLE_CLICK_MAX_DELAY = 1000L;
    private ImageView iView;
    private long thisTime = 0;
    private long prevTime = 0;
    private boolean firstTap = true;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        iView = (ImageView)findViewById(R.id.iView);
        iView.setOnTouchListener( new View.OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // TODO Auto-generated method stub
                if(firstTap){
                    thisTime = SystemClock.uptimeMillis();
                    firstTap = false;
                }
                else
                {
                    prevTime = thisTime;
                    thisTime = SystemClock.uptimeMillis();

                    //Check that thisTime is greater than prevTime
                    //just incase system clock reset to zero
                    if(thisTime > prevTime){

                        //Check if times are within our max delay
                        if((thisTime - prevTime) <= DOUBLE_CLICK_MAX_DELAY){

                            //We have detected a double tap!
                            Toast.makeText(DoubleTapActivity.this, "DOUBLE TAP DETECTED!!!", Toast.LENGTH_LONG).show();
                            //PUT YOUR LOGIC HERE!!!!

                        }
                        else 
                        {
                            //Otherwise Reset firstTap
                            firstTap = true;
                        }
                    }
                    else 
                    {
                        firstTap = true;
                    }
                }
                return false;
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)


Bal*_*ake 2

主要是为了感测您必须GestureDetector.OnGestureListener在活动中实现的点击事件。您可以使用onSingleTapUp(MotionEvent e)的方法执行操作GestureDetector.OnGestureListener

一般对于Button控件,我们使用like

myButton.setOnClickListener(new OnClickListener() {});

或其他 clickListners 和点击事件用于 ImageView 或任何其他自定义视图。