OnTouchListener () / Переместить событие запаздывает - PullRequest
0 голосов
/ 26 октября 2018

Я создал класс объекта с именем draggable в моем приложении, когда из этого класса вызывается функция createObject, он создает объект и затем устанавливает ontouchlistener.Мне удалось создать код, который делает объект перетаскиваемым, но он запаздывает, я подумал, сработает ли его перенос в новый поток, но это не та вещь, которая вызывается снова и снова или длительный процесс.Я задавался вопросом, может ли кто-нибудь дать предложение сделать его менее запаздывающим.

@SuppressLint("ClickableViewAccessibility")
public void createObj(){
    Toast.makeText(Game.getInstance(), "Creating Object", Toast.LENGTH_LONG).show();
    ImageView imageView = new ImageView(Game.getInstance());
    final RelativeLayout layout = Game.getInstance().findViewById(R.id.layout1);
    layout.addView(imageView);
    imageView.setImageResource(R.drawable.wordfile);
    imageView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            final int X = (int) event.getRawX();
            final int Y = (int) event.getRawY();
            switch (event.getAction() & MotionEvent.ACTION_MASK){
                case MotionEvent.ACTION_DOWN:
                    RelativeLayout.LayoutParams lparams = (RelativeLayout.LayoutParams) v.getLayoutParams();
                    _xDelta = X - lparams.leftMargin;
                    _ydelta = Y - lparams.topMargin;
                    break;
                case MotionEvent.ACTION_UP:
                    break;
                case MotionEvent.ACTION_POINTER_DOWN:
                    break;
                case MotionEvent.ACTION_POINTER_UP:
                    break;
                case MotionEvent.ACTION_MOVE:
                    RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) v.getLayoutParams();
                    layoutParams.leftMargin = X - _xDelta;
                    layoutParams.topMargin = Y - _ydelta;
                    layoutParams.rightMargin = -250;
                    layoutParams.bottomMargin = -250;
                    v.setLayoutParams((layoutParams));
                    break;
            }
            return true;
        }
    });
}

код, с которого его вызов в данный момент находится в onCreate, так что его не называют много.остальная часть приложения очень медвежья, так что не может быть, что либо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...