Масштабирование и получение размеров из плавающего окна - PullRequest
0 голосов
/ 15 октября 2018

У меня плавающие окна с VideoView.Я пытаюсь масштабировать его, перетаскивая его из одного правого края и перемещая его, касаясь его в любой другой части и перетаскивая его.

Часть "переместить его" у меня все хорошо,но когда я масштабирую его, размер videoView изменяется, но ширина и высота остаются прежними.

Я знаю, что "setScale" отображает его только на экране, но как я сделал полный вид с правильным размером, чтобыпродолжить работу с плавающим окном (масштабировать и перетаскивать).

вот мой код:

private WindowManager windowManager;
private VideoView video;

@Override
public void onCreate() {
    super.onCreate();
    windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);

    video = new VideoView(this);
    Uri uri = Uri.parse("http://184.72.239.149/vod/smil:BigBuckBunny.smil/playlist.m3u8");
    video.setVideoURI(uri);
    video.start();

    final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.TYPE_PHONE,
            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
            PixelFormat.TRANSLUCENT);

    params.gravity = Gravity.TOP | Gravity.LEFT;
    params.x = 0;
    params.y = 0;
    windowManager.addView(video, params);


    try {
        video.setOnTouchListener(new View.OnTouchListener() {
            private WindowManager.LayoutParams paramsF = params;
            private int W;
            private int H;
            private int initialX;
            private int initialY;
            private float viewX;
            private float viewY;
            private float initialTouchX;
            private float initialTouchY;
            private float scaleFactor;

            boolean rightDown = false;
            boolean rightUp = false;



            @Override
            public boolean onTouch(View v, MotionEvent event) {

                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:

                        W = video.getWidth();
                        H = video.getHeight();

                        initialX = paramsF.x;
                        initialY = paramsF.y;

                        initialTouchX = event.getRawX();
                        initialTouchY = event.getRawY();

                        viewX = event.getX();
                        viewY = event.getY();

                        if (viewX > (W / 4) * 3 && viewY < H / 3) {
                            rightUp = true;
                            video.setPivotY(H);
                            video.setPivotX(0);

                        } else if (viewY > H / 3 * 2 && viewX > (W / 4) * 3) {
                            rightDown = true;
                            video.setPivotY(0);
                            video.setPivotX(0);
                        }


                        break;

                    case MotionEvent.ACTION_UP:
                        rightDown = false;
                        rightUp = false;

                        break;
                    case MotionEvent.ACTION_MOVE:
                        if (rightDown || rightUp) {
                            scaleFactor = event.getRawX() / initialTouchX;
                            video.setScaleX(scaleFactor);
                            video.setScaleY(scaleFactor);

                        }else {
                            paramsF.x = initialX + (int) (event.getRawX() - initialTouchX);
                            paramsF.y = initialY + (int) (event.getRawY() - initialTouchY);
                            windowManager.updateViewLayout(video, paramsF);
                        }
                        break;
                }
                return false;
            }
        });
    } catch (Exception e) {
        // TODO: handle exception
    }

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