拖动名为查看错误的按钮以及如何解决它

Drag button called view whats wrong and how to solve it

在这种情况下,大家好,请帮助我 我想拖动一个名为 view 的按钮, 我设置了代码,就像你在下面看到的那样,但我仍然不能拖动它,你能给我一个很好的解释的困难解决方案

public class MainActivity extends Activity {

    private Timer _timer = new Timer();

    private LinearLayout linear1;
    private Button view;
    private Button btn2;
    private Button widgets;
    private TextView textview1;

    private TimerTask mm;
    @Override
    protected void onCreate(Bundle _savedInstanceState) {
        super.onCreate(_savedInstanceState);
        setContentView(R.layout.main);
        initialize();
        initializeLogic();
    }

    private void initialize() {

        linear1 = (LinearLayout) findViewById(R.id.linear1);
        view = (Button) findViewById(R.id.view);
        btn2 = (Button) findViewById(R.id.btn2);
        widgets = (Button) findViewById(R.id.widgets);
        textview1 = (TextView) findViewById(R.id.textview1);

        view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                view.setOnDragListener( new View.OnDragListener() {
                    PointF DownPT = new PointF();
                    PointF StartPT = new PointF();
                    @Override public boolean onDrag(View v, android.view.DragEvent event) {
                        int dragEvent = event.getAction();
                        switch (dragEvent) {
                            case android.view.DragEvent.ACTION_DRAG_STARTED :
                            DownPT.x = event.getX();
                            DownPT.y = event.getY();
                            StartPT = new PointF( view.getX(), view.getY() ); break;

                            case android.view.DragEvent.ACTION_DRAG_LOCATION :
                            PointF mv = new PointF( event.getX() - DownPT.x, event.getY() - DownPT.y);
                            view.setX((int)(StartPT.x+mv.x)); view.setY((int)(StartPT.y+mv.y));
                            StartPT = new PointF( view.getX(), view.getY() ); break;

                            case android.view.DragEvent.ACTION_DRAG_ENTERED :

                            case android.view.DragEvent.ACTION_DRAG_EXITED :
                            break;
                            case android.view.DragEvent.ACTION_DROP : break;
                            default : break;
                        }
                        return true;
                    }
                });

我需要一个很好的解释伙计们,因为我需要理解这个问题,谢谢你花时间帮助我! 我需要知道有什么不同 解决这个问题的方法

在 onClick 方法之外实现:-

  view.setOnDragListener( new View.OnDragListener() {
                PointF DownPT = new PointF();
                PointF StartPT = new PointF();
                @Override public boolean onDrag(View v, android.view.DragEvent event) {
                    int dragEvent = event.getAction();
                    switch (dragEvent) {
                        case android.view.DragEvent.ACTION_DRAG_STARTED :
                        DownPT.x = event.getX();
                        DownPT.y = event.getY();
                        StartPT = new PointF( view.getX(), view.getY() ); break;

                        case android.view.DragEvent.ACTION_DRAG_LOCATION :
                        PointF mv = new PointF( event.getX() - DownPT.x, event.getY() - DownPT.y);
                        view.setX((int)(StartPT.x+mv.x)); view.setY((int)(StartPT.y+mv.y));
                        StartPT = new PointF( view.getX(), view.getY() ); break;

                        case android.view.DragEvent.ACTION_DRAG_ENTERED :

                        case android.view.DragEvent.ACTION_DRAG_EXITED :
                        break;
                        case android.view.DragEvent.ACTION_DROP : break;
                        default : break;
                    }
                    return true;
                }
            });

不在 onClick() 内。希望这有帮助。