Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过拖动增加/减少值_Java_Android - Fatal编程技术网

Java 通过拖动增加/减少值

Java 通过拖动增加/减少值,java,android,Java,Android,我希望在我的应用程序中有这样一个警告:当用户在屏幕上向上向下拖动手指时,一些参数会减少,当向下拖动到上时,参数会增加。我将使用is来动态更改已绘制元素的长度。你能告诉我怎么写这样的东西吗 编辑: 更准确地说。我想我应该使用MotionEvent.ACTION\u MOVE。但我不知道怎么做,比如:根据移动Y的长度,我加上或减去比例值。你能帮我吗?我找不到我的解决方案(),但以下是我今天所做的: package com.example.test1; import android.os.Bundl

我希望在我的应用程序中有这样一个警告:当用户在屏幕上向上向下拖动手指时,一些参数会减少,当向下拖动到上时,参数会增加。我将使用is来动态更改已绘制元素的长度。你能告诉我怎么写这样的东西吗

编辑:
更准确地说。我想我应该使用MotionEvent.ACTION\u MOVE。但我不知道怎么做,比如:根据移动Y的长度,我加上或减去比例值。你能帮我吗?

我找不到我的解决方案(),但以下是我今天所做的:

package com.example.test1;

import android.os.Bundle;
import android.app.Activity;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.Menu;
import android.view.MotionEvent;
import android.widget.TextView;

public class MainActivity extends Activity implements OnGestureListener {

    private TextView TextView01;
    private TextView TextView02;
    private TextView TextView03;
    private TextView TextView04;

    private GestureDetector gestureScanner;

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

        TextView01 = (TextView)findViewById(R.id.TextView01);
        TextView02 = (TextView)findViewById(R.id.TextView02);
        TextView03 = (TextView)findViewById(R.id.TextView03);
        TextView04 = (TextView)findViewById(R.id.TextView04);



        gestureScanner = new GestureDetector(this);

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    int whereIsFirstX = 0;
    int whereIsFirstY = 0;
    int diffrenceBetweenFirstAndCurrentTouchPositionX = 0;
    int diffrenceBetweenFirstAndCurrentTouchPositionY = 0;

    int changeInHorizontal  = 0;
    int changeInVertical    = 0;



    public boolean onTouchEvent(MotionEvent event) {

        int eventaction = event.getAction(); 

        int X = (int)event.getX(); 
        int Y = (int)event.getY();

        if (eventaction == MotionEvent.ACTION_DOWN) {   
            whereIsFirstX = X;
            whereIsFirstY = Y;
        }

        if (eventaction==MotionEvent.ACTION_MOVE){
            diffrenceBetweenFirstAndCurrentTouchPositionX = X - whereIsFirstX;
            diffrenceBetweenFirstAndCurrentTouchPositionY = whereIsFirstY - Y;


        }

        // FINAL RESULT TO USE IN YOUR APP; I USED IT IN VERTICAL DIRECTION TO CHANGE SPEED IN GAME
        //Here the difference is also divided by 10 to depress the influence of change into result value:
        changeInHorizontal  = changeInHorizontal + diffrenceBetweenFirstAndCurrentTouchPositionX/10;
        changeInVertical    = changeInVertical + diffrenceBetweenFirstAndCurrentTouchPositionY/10;

        TextView03.setText("Simple Horizontal: " + Integer.toString(changeInHorizontal));
        TextView04.setText("SimpleVertical: " + Integer.toString(changeInVertical));

        try {  // quiet screen 
            Thread.sleep(100);
        } catch (Exception e) {

        }

        //Note that onTouchEvent function has to return it for onScroll method:
        return gestureScanner.onTouchEvent(event);


    }

    public boolean onDown(MotionEvent arg0) {
        // TODO Auto-generated method stub
        return false;
    }

    public boolean onFling(MotionEvent arg0, MotionEvent arg1, float arg2,
            float arg3) {
        // TODO Auto-generated method stub
        return false;
    }

    public void onLongPress(MotionEvent arg0) {
        // TODO Auto-generated method stub

    }

    public void onShowPress(MotionEvent arg0) {
        // TODO Auto-generated method stub

    }

    public boolean onSingleTapUp(MotionEvent arg0) {
        // TODO Auto-generated method stub
        return false;
    }

    int changeInHorizontalScroll;
    int changeInVerticalScroll;

    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
            float distanceY) {
        changeInHorizontalScroll = (int)(changeInHorizontalScroll - distanceX);
        changeInVerticalScroll = (int)(changeInVerticalScroll + distanceY);
        TextView01.setText("onScroll Horizontal: " + Integer.toString(changeInHorizontalScroll));
        TextView02.setText("onScroll Vertical: " + Integer.toString(changeInVerticalScroll));
        return false;
    }

}
活动必须具有TextView01、TextView02、TextView03和TextView04

01和02使用手势
onScroll
方法显示增加/减少的值。我今天第一次用它。只有
gesturedector(此)
constructor有问题。它已经被弃用了,你应该找到如何用现代版本替换它(应该不难,但我用Android做了一些事情已经很久了,我今天没有时间做了,我的朋友拿着威士忌等待:D)

我试着在Scroll上提到
onScroll
,因为我记不起以前是如何通过简单的触摸事件实现的。所提出的在03和04文本视图上显示结果的方法是正确的,但仅当用户不进行“返回移动”时。正确的操作只有当手指触碰屏幕,在水平或垂直方向上移动,并返回直到停止触摸屏幕。这是因为移动值总是添加到结果中,而不检查它是变大还是变小。我在二月份通过添加更多的代码实现了这一目标,但谁知道现在是怎么做到的;P


请考虑我是完全NOOB,可能还有其他更有效的方法,但希望它有帮助:

我想实现同样的功能,最后做了什么?嗨,JunEd,你还需要这个吗?对不起,我这么晚才写信。我甚至不记得我在哪个项目中使用过它,但如果你不能解决你的问题,我可以在我的Android工作区中挖掘并寻找它。我不能保证我会找到它(我甚至卸载了Android SDK),但如果你仍然需要的话,我可以付出一些努力。谢谢@bLAZY,如果你能帮我找到它就太好了。如果你能找到,我会很幸运的。谢谢