【问题标题】:Drag button called view whats wrong and how to solve it拖动按钮称为查看什么是错的以及如何解决它
【发布时间】:2018-12-03 13:23:37
【问题描述】:

大家好,请在这种情况下帮助我 我想拖动一个名为 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;
                    }
                });

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

【问题讨论】:

    标签: java android android-studio drag-and-drop draggable


    【解决方案1】:

    在 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() 内部。希望这会有所帮助。

    【讨论】:

    • 求你的帮助,我可以问你其他问题吗
    • 除了放在外面
    • 是的,您可以使用 onTouchListener 并尝试它的工作。
    • 求您的帮助
    • 你必须把它放在外面,因为它只有在你点击它时才会起作用,然后它才会开始移动。如果你把它放在外面,那么你可以很容易地拖动按钮。
    猜你喜欢
    • 2012-05-20
    • 1970-01-01
    • 1970-01-01
    • 2010-11-22
    • 1970-01-01
    • 1970-01-01
    • 2020-10-08
    • 2021-07-02
    • 1970-01-01
    相关资源
    最近更新 更多