Перетащите кнопку под названием вид что не так и как это решить - PullRequest
0 голосов
/ 25 июня 2018

Привет, ребята, пожалуйста, помогите мне в этом случае, я хочу перетащить кнопку с названием view, я настроил код, как вы видите там, но я все еще не могу его перетащить, вы можете дать мне неуверенные решения, plz сХорошее объяснение

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;
                    }
                });

Мне нужны хорошие объяснения, ребята, потому что мне нужно понять проблему, спасибо, что нашли время помочь мне!и мне нужно знать, какое другое решение, чтобы исправить эту проблему, ребята

1 Ответ

0 голосов
/ 25 июня 2018

Реализуйте это вне метода 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 ().Надеюсь, это поможет.

...