1

我得到了一个启动新活动的图像视图。

//Mainactivity
imageView.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            // start your activity...
            Intent i = new Intent( MainActivity.this, FullActivity.class);
            startActivity(i);
            return false;
        }
    });

我更喜欢仍然将手指放在屏幕上,如果我松开手指,我会回到我的 MainActivity。我用 ontouchlistener 尝试了它,但它没有识别出在新活动开始后我仍然拿着屏幕。

//Fullactivity
imageViewFull.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if(event.getAction()== MotionEvent.ACTION_UP){

                finish();
            }
            return true;
        }
    });

如何集成该功能?

4

1 回答 1

0

我遇到了同样的问题,我找到的唯一解决方案是按住按钮并查看上一个活动 3 秒钟。我是这样做的:假设 MainActivity 中的 button1 将您发送到 SecondActivity,通过在 SecondActivity 中按住 button2,您可以在 MainActivity 上偷看几秒钟。因此,在 MainActivity 中,我们为 button1 分配了一个 setOnClickListener:

button1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // start SecondActivity for result
        Intent intent = new Intent(MainActivity.this, SecondActivity.class);
        intent.putExtra("string", string); // variables you want to pass
        startActivityForResult(intent, REQUEST_CODE); // REQUEST_CODE = 1 (declared above onCreate)
    }
});

在 SecondActivity 中,我们将setOnClickListener和分配setOnLongClickListener给 button2:

button2.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent resultIntent = getIntent();
        resultIntent.putExtra("peek", "false");
        setResult(Activity.RESULT_OK, resultIntent);
        finish();
    }
});

button2.setOnLongClickListener(new View.OnLongClickListener() {
    @Override
    public boolean onLongClick(View v) {
        Intent resultIntent = getIntent();
        resultIntent.putExtra("peek", "true");
        setResult(Activity.RESULT_OK, resultIntent);
        finish();
        return true;
    }
});

我们传递字符串“peek”,以便在 MainActivity 中了解我们是要查看还是完全返回。最后,我们必须在 MainActivity 中实现 onActivityResult:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    try {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == REQUEST_CODE  && resultCode  == RESULT_OK)
        {
            String peek = data.getStringExtra("peek");
            if(peek.equals("false")) //we dont return to SecondActivity
            {
                //your code
            }
            else { 
                //we stay on MainActivity for 3 seconds and return to SecondActivity
                //your code

                Handler handler = new Handler();
                handler.postDelayed(new Runnable() {
                    public void run() {
                        Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                        intent.putExtra("string", string); // variables you want to pass
                        startActivityForResult(intent, REQUEST_CODE);
                    }
                }, 3000); //time in milliseconds 
            }
        }
    } catch (Exception ex) {
        //nothing
    }

}

嗯,就是这样!我希望这是有用的:D

于 2021-06-05T14:04:02.933 回答