Single Tap在其他设备上工作正常,但在使用android studio

时间:2015-12-10 07:41:09

标签: android ontouchevent

我正在开发一个项目,使用 onTouchEvent(MotionEvent事件)来处理单击事件,当我点击屏幕时它会隐藏一个按钮,当你再次点击时再次出现。我对android很新。该应用程序在我在Kitkat上运行的LG设备上工作正常但在我在棒棒糖上运行的三星上没有。我花了差不多2天研究这个但没有运气。我是怎么做到的......

@Override
public boolean onTouchEvent(MotionEvent event) {
    switch (event.getAction()) {

        case MotionEvent.ACTION_MOVE: {
            return false;
        }
        case MotionEvent.ACTION_DOWN: {
            x1 = event.getX();
            y1 = event.getY();
            break;
        }
        case MotionEvent.ACTION_UP: {
            x2 = event.getX();
            y2 = event.getY();

            diffx = x2 - x1;
            diffy = y2 - y1;

            boolean sameX = x2 + tolerance > event.getX() && x2 - tolerance < event.getX();
            boolean sameY = y2 + tolerance > event.getY() && y2 - tolerance < event.getY();
            if (sameX && sameY) {

                if (gone == false) {

                    pages.setVisibility(View.GONE);
                    lib.setVisibility(View.GONE);

                    final Animation slide_out_up = AnimationUtils.loadAnimation(this, R.anim.slide_out_up);
                    lib.startAnimation(slide_out_up);

                    final Animation slide_out_down = AnimationUtils.loadAnimation(this, R.anim.slide_out_down);
                    pages.startAnimation(slide_out_down);

                    gone = true;
                } else {

                    pages.setVisibility(View.VISIBLE);
                    lib.setVisibility(View.VISIBLE);

                    final Animation slide_in_down = AnimationUtils.loadAnimation(this, R.anim.slide_in_down);
                    lib.startAnimation(slide_in_down);

                    final Animation slide_in_up = AnimationUtils.loadAnimation(this, R.anim.slide_in_up);
                    pages.startAnimation(slide_in_up);
                    gone = false;
                }
            }
            break;
        }
    }
    return false;
    }

这是我的傻瓜......

apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion "23.0.1"

defaultConfig {
    applicationId "com.civitas.christian.fragments"
    minSdkVersion 17
    targetSdkVersion 22
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.1'}

我真的非常需要帮助..

1 个答案:

答案 0 :(得分:0)

您可以修改onTouchEvent以处理其他控件点击并触摸

public class MYTest extends FragmentActivity {
    Button btnShowHide;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);
        btnShowHide = (Button) findViewById(R.id.btnShowHide);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_UP) {
            //If you wants to use animation start animation here 
            // & you can show/hide object on end animation
            if (btnShowHide.getVisibility() == View.VISIBLE) {

                btnShowHide.setVisibility(View.GONE);
            } else {
                btnShowHide.setVisibility(View.VISIBLE);
            }
        }
        //// Based on the requirement you can give return boolean
        // to handle click & other controls touch event
        return super.onTouchEvent(event);
    }
}

动画开始&amp;结束回拨列表,请检查AnimationListener