Photoview: ํ•œ ์†๊ฐ€๋ฝ ์คŒ(๋”๋ธ” ํƒญ)์„ ์‚ฌ์šฉํ•  ๋•Œ ์ด๋ฏธ์ง€๊ฐ€ ์„ธ๋กœ๋กœ ๋’ค์ง‘ํžˆ๋Š” ๊ฒฝ์šฐ

์— ๋งŒ๋“  2016๋…„ 09์›” 29์ผ  ยท  5์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: Baseflow/PhotoView

์ด๋ฏธ์ง€๋ฅผ ๋‘ ๋ฒˆ ํƒญํ•˜๊ณ  ์œ„์•„๋ž˜๋กœ ์Šคํฌ๋กคํ•˜๋ฉด ์ด๋ฏธ์ง€๊ฐ€ "๋’ค์ง‘์–ด์ง€๊ฑฐ๋‚˜" 90๋„ ํšŒ์ „๋ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ๋Š” ๊ฑฐ๊พธ๋กœ ๋œ ์ด๋ฏธ์ง€์ž…๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๋ฉด ์›๋ž˜ ์ƒํƒœ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.

๋‹น๋ถ„๊ฐ„ ์ด ํ•œ ์†๊ฐ€๋ฝ ์Šคํฌ๋กค์„ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?
๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ์ €๋Š” Picasso์˜ ์ „์ฒด ํ™”๋ฉด ํ™œ๋™์—์„œ PhotoView๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

        photoView = (PhotoView) findViewById(R.id.fullscreen_content);

        String imageUrl = getIntent().getStringExtra(EXTRA_IMAGE);
        attacher = new PhotoViewAttacher(photoView);
        Picasso.with(this).load(imageUrl).into(photoView, new Callback() {
            <strong i="9">@Override</strong>
            public void onSuccess() {
                attacher.update();
            }

            <strong i="10">@Override</strong>
            public void onError() {

            }
        });

๋‚ด๊ฐ€ ์ด๊ฒƒ์„ ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ์ด๋ฒคํŠธ๋ฅผ ์†Œ๋น„ํ•ด๋„ ๋‘ ๋ฒˆ ํƒญ ํ™•๋Œ€/์ถ•์†Œ๊ฐ€ ๋น„ํ™œ์„ฑํ™”๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

        photoView.setOnDoubleTapListener(new GestureDetector.OnDoubleTapListener() {
            <strong i="14">@Override</strong>
            public boolean onSingleTapConfirmed(MotionEvent e) {
                return true;
            }

            <strong i="15">@Override</strong>
            public boolean onDoubleTap(MotionEvent e) {
                return true;
            }

            <strong i="16">@Override</strong>
            public boolean onDoubleTapEvent(MotionEvent e) {
                return true;
            }
        });

https://goo.gl/photos/uLZbtDebGJMfA2aj9

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

ScaleGestureDetector๊ฐ€ Nougat์—์„œ ์ด๋Ÿฌํ•œ ํ˜•ํƒœ์˜ ํฌ๊ธฐ ์กฐ์ • ์ œ์Šค์ฒ˜๋ฅผ ์ค‘๋‹จํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. https://code.google.com/p/android/issues/detail?id=230118 ์—์„œ ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•œ ๊ฐ€์ง€ ๊ฐ€๋Šฅ์„ฑ์€ Nougat ์žฅ์น˜์—์„œ ์‹คํ–‰ ์ค‘์ธ ๊ฒฝ์šฐ FroyoGestureDetector.java ์—์„œ ScaleGestureDetectorCompat.setQuickScaleEnabled(mDetector, false) ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  5 ๋Œ“๊ธ€

ScaleGestureDetector๊ฐ€ Nougat์—์„œ ์ด๋Ÿฌํ•œ ํ˜•ํƒœ์˜ ํฌ๊ธฐ ์กฐ์ • ์ œ์Šค์ฒ˜๋ฅผ ์ค‘๋‹จํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. https://code.google.com/p/android/issues/detail?id=230118 ์—์„œ ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•œ ๊ฐ€์ง€ ๊ฐ€๋Šฅ์„ฑ์€ Nougat ์žฅ์น˜์—์„œ ์‹คํ–‰ ์ค‘์ธ ๊ฒฝ์šฐ FroyoGestureDetector.java ์—์„œ ScaleGestureDetectorCompat.setQuickScaleEnabled(mDetector, false) ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฐ™์€ ๋ฌธ์ œ์— ์ง๋ฉดํ•ด ์žˆ์Šต๋‹ˆ๋‹ค. ์•„์ง ๊ณ ์ณ์ง€์ง€ ์•Š์•˜๋‚˜์š”?

์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜์‹ญ์‹œ์˜ค.

๋‚˜๋Š” '2.1.3' ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ ์ด์ œ '2.3.0' ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”
์–ด๋–ค ๋ฒ„์ „์—์„œ ์ˆ˜์ •๋˜์—ˆ๋‚˜์š”?

์—ฌ๊ธฐ์—์„œ ์ˆ˜์ •: https://github.com/chrisbanes/PhotoView/pull/667 ๊ทธ๋ž˜์„œ 2.3.0๋ถ€ํ„ฐ

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰