精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

ViewRootImpl如何負責管理繪制視圖樹和刷新界面

開發 前端
mHandler是當前主線程的handler,當接收到onVsync信號的時候,將自己封裝到Message中,等到Looper處理,最后Looper處理消息的時候就會調用run方法最終從mCallbackQueues取回之前添加的任務再執行run方法,也就是TraservalRunnable的run方法。

ViewRootImpl位于視圖層次結構的頂部,負責View和WindowManager之間的通信。

  1. 視圖繪制:負責調用View樹的繪制流程,包括測量(measure)、布局(layout)和繪制(draw)等操作。監聽View樹的改變,并根據需要觸發相應的繪制操作,確保界面的及時更新。
  2. 事件分發:負責將輸入的各種事件(如觸摸事件、按鍵事件等)分發給正確的View處理。根據觸摸事件的位置信息,逐層遍歷View樹,找到最合適的View來處理事件。將處理結果返回給系統,以便進行后續的處理,如滾動、點擊等。
  3. 窗口管理:承擔Android窗口管理的一部分職責。負責創建和管理窗口,將窗口與ViewRootImpl進行綁定。當窗口需要顯示或隱藏時,ViewRootImpl會相應地調整界面的顯示狀態。

ViewRootImpl關聯了多個類和接口,IWindowSession、Choreographer及其FrameCallback接口等。IWindowSession用于客戶端和WindowManagerService之間進行窗口管理操作的接口,允許ViewRootImpl與WindowManagerService進行通信,執行如添加、刪除、更新窗口等操作。

scheduleTraversals

scheduleTraversals()方法負責將一次視圖遍歷(traversal)排期到其調度計劃中,但并不會立即執行遍歷操作。方法被許多操作所調用,比如當視圖的大小、位置等屬性發生變化時,或者當調用requestLayout()、invalidate()等方法時,都會觸發scheduleTraversals()。作用是將視圖的測量、布局和繪制操作(即遍歷操作)放入待執行隊列中,并注冊一個底層的刷新信號監聽器。

public void invalidate(boolean invalidateCache) {
    invalidateInternal(0, 0, mRight - mLeft, mBottom - mTop, invalidateCache, true);
}

void invalidateInternal(int l, int t, int r, int b, boolean invalidateCache, boolean fullInvalidate) {
    ...
    // Propagate the damage rectangle to the parent view.
    final AttachInfo ai = mAttachInfo;
    final ViewParent p = mParent;
    if (p != null && ai != null && l < r && t < b) {
        final Rect damage = ai.mTmpInvalRect;
        damage.set(l, t, r, b);
        //調用父容器的方法,向上傳遞事件
        p.invalidateChild(this, damage);
    }
    ...
}

public final void invalidateChild(View child, final Rect dirty) {
    .....
    ViewParent parent = this;
        do {
            View view = null;
            if (parent instanceof View) {
                view = (View) parent;
            }

            if (drawAnimation) {
                if (view != null) {
                    view.mPrivateFlags |= PFLAG_DRAW_ANIMATION;
                } else if (parent instanceof ViewRootImpl) {
                    ((ViewRootImpl) parent).mIsAnimating = true;
                }
            }

            // If the parent is dirty opaque or not dirty, mark it dirty with the opaque
            // flag coming from the child that initiated the invalidate
            if (view != null) {
                if ((view.mViewFlags & FADING_EDGE_MASK) != 0 && view.getSolidColor() == 0) {
                    opaqueFlag = PFLAG_DIRTY;
                }
                if ((view.mPrivateFlags & PFLAG_DIRTY_MASK) != PFLAG_DIRTY) {
                    view.mPrivateFlags = (view.mPrivateFlags & ~PFLAG_DIRTY_MASK) | opaqueFlag;
                }
            }
            //調用ViewGrup的invalidateChildInParent,如果已經達到最頂層view,則調用ViewRootImpl的invalidateChildInParent。
            parent = parent.invalidateChildInParent(location, dirty);
            if (view != null) {
                // Account for transform on current parent
                Matrix m = view.getMatrix();
                if (!m.isIdentity()) {
                    RectF boundingRect = attachInfo.mTmpTransformRect;
                    boundingRect.set(dirty);
                    m.mapRect(boundingRect);
                    dirty.set((int) Math.floor(boundingRect.left),
                              (int) Math.floor(boundingRect.top),
                              (int) Math.ceil(boundingRect.right),
                              (int) Math.ceil(boundingRect.bottom));
                }
            }
        } while (parent != null);
    }
}

當VSYNC信號到來時(VSYNC信號是Android系統中用于同步屏幕刷新的信號),系統會從待執行隊列中取出對應的scheduleTraversals()操作,并將其加入到主線程的消息隊列中。然后,主線程會從消息隊列中取出并執行這個操作,進而觸發視圖的測量、布局和繪制流程。

private void scheduleFrameLocked(long now) {
    if (!mFrameScheduled) {
        mFrameScheduled = true;
        if (USE_VSYNC) {
            //這里判斷,當前執行的線程是否是創建該Choreographer的線程,如果是直接執行。否則通過handler 發送到 創建該Choreographer的線程去執行。
            if (isRunningOnLooperThreadLocked()) {
                scheduleVsyncLocked();
            } else {
                //這條message 最后處理還是調用到了scheduleVsyncLocked方法
                Message msg = mHandler.obtainMessage(MSG_DO_SCHEDULE_VSYNC);
                msg.setAsynchronous(true);
                mHandler.sendMessageAtFrontOfQueue(msg);
            }
        } else {
            final long nextFrameTime = Math.max(
                    mLastFrameTimeNanos / TimeUtils.NANOS_PER_MS + sFrameDelay, now);
            if (DEBUG_FRAMES) {
                Log.d(TAG, "Scheduling next frame in " + (nextFrameTime - now) + " ms.");
            }
            Message msg = mHandler.obtainMessage(MSG_DO_FRAME);
            msg.setAsynchronous(true);
            mHandler.sendMessageAtTime(msg, nextFrameTime);
        }
    }
}

private void scheduleVsyncLocked() {
    mDisplayEventReceiver.scheduleVsync();
}

public void scheduleVsync() {
    if (mReceiverPtr == 0) {
        Log.w(TAG, "Attempted to schedule a vertical sync pulse but the display event " + "receiver has already been disposed.");
    } else {
        nativeScheduleVsync(mReceiverPtr);
    }
}

在這個過程中,performTraversals()方法會被調用。方法會執行實際的測量、布局和繪制操作。首先會調用measureHierarchy()方法進行測量,然后調用performLayout()方法進行布局,最后調用draw()方法進行繪制。這些操作會按照順序執行,以確保視圖能夠正確地顯示在屏幕上。最終通過nativeScheduleVsync()原生方法通知屏幕進行繪制。

performTraversals

performTraversals()方法負責啟動視圖的測量(measure)、布局(layout)和繪制(draw)流程。當需要創建視圖、視圖參數改變或界面需要刷新時,可能會從根視圖DecorView開始重新進行測量、布局和繪制,這時就會調用到performTraversals()方法。

private void performTraversals() {
    ...
    performMeasure(childWidthMeasureSpec, childHeightMeasureSpec);
    ...
    performLayout(lp, desiredWindowWidth, desiredWindowHeight);
    ... 
    performDraw();
}

void doTraversal() {
      //防止重入
    if (mTraversalScheduled) {
        mTraversalScheduled = false;
        //移除同步屏障
        mHandler.getLooper().getQueue()
                    .removeSyncBarrier(mTraversalBarrier);
        performTraversals();
    }
}

圖片圖片

  1. 「測量(Measure)」:在這個階段,系統會遍歷整個視圖樹,計算每個視圖的大小。這個過程中會用到MeasureSpec,每個MeasureSpec都包含了一個測量模式和測量大小,測量模式主要有三種:EXACTLY(父視圖已經確定了子視圖的確切大小)、AT_MOST(子視圖的大小有一個最大值限制)和UNSPECIFIED(父視圖對子視圖的大小沒有要求)。
  2. 「布局(Layout)」:在測量完成后,系統會為每個視圖確定其在屏幕上的精確位置。這個過程中,父視圖會根據測量階段得到的子視圖大小以及自身的布局參數,計算出子視圖應該放置的位置。
  3. 「繪制(Draw)」:系統會遍歷整個視圖樹,根據每個視圖的繪制參數(如顏色、形狀等)將其繪制到屏幕上。這個過程中,視圖會按照其在視圖樹中的層次順序進行繪制,先繪制父視圖,再繪制子視圖。
final TraversalRunnable mTraversalRunnable = new TraversalRunnable();

void scheduleTraversals() {
    if (!mTraversalScheduled) {
        //移除同步屏障
        mTraversalBarrier = mHandler.getLooper().getQueue().postSyncBarrier();
        mChoreographer.postCallback(
                Choreographer.CALLBACK_TRAVERSAL, mTraversalRunnable, null);
           
    }
}

void unscheduleTraversals() {
    mChoreographer.removeCallbacks(
                    Choreographer.CALLBACK_TRAVERSAL, mTraversalRunnable, null);
    }
}

public void postCallback(int callbackType, Runnable action, Object token) {
    postCallbackDelayed(callbackType, action, token, 0);
}

public void postCallbackDelayed(int callbackType,
    Runnable action, Object token, long delayMillis) {
    ...
    postCallbackDelayedInternal(callbackType, action, token, delayMillis);
}

private void postCallbackDelayedInternal(int callbackType,
    Object action, Object token, long delayMillis) {
    ....
    synchronized (mLock) {
        final long now = SystemClock.uptimeMillis();
        final long dueTime = now + delayMillis;
        //把 任務添加到了mCallbackQueues 回調里面去,等待回調執行。
        mCallbackQueues[callbackType].addCallbackLocked(dueTime, action, token);
            
        //now=0 ,走進scheduleFrameLocked()方法內
        if (dueTime <= now) {
            scheduleFrameLocked(now);
        } else {
            Message msg = mHandler.obtainMessage(MSG_DO_SCHEDULE_CALLBACK, action);
            msg.arg1 = callbackType;
            msg.setAsynchronous(true);
            mHandler.sendMessageAtTime(msg, dueTime);
        }
    }
}

//Choreographer內部類DisplayEventReceiver,重寫了onVsync方法
@Override
public void onVsync(long timestampNanos, int builtInDisplayId, int frame) {
    mTimestampNanos = timestampNanos;
    mFrame = frame;
    Message msg = Message.obtain(mHandler, this);
    // 設置成異步消息
    msg.setAsynchronous(true);
    mHandler.sendMessageAtTime(msg, timestampNanos / TimeUtils.NANOS_PER_MS);
}

public void run() {
    mHavePendingVsync = false;
    doFrame(mTimestampNanos, mFrame);
}

// Choreographer
void doFrame(long frameTimeNanos, int frame) {
    ...
    doCallbacks(Choreographer.CALLBACK_TRAVERSAL, frameTimeNanos);
}

void doCallbacks(int callbackType, long frameTimeNanos) {
    CallbackRecord callbacks;
    // 從mCallbackQueues取出
    callbacks = mCallbackQueues[callbackType].extractDueCallbacksLocked(now / TimeUtils.NANOS_PER_MS);
    for (CallbackRecord c = callbacks; c != null; c = c.next) {
         c.run(frameTimeNanos);
    }
}
// CallbackRecord
public void run(long frameTimeNanos) {
    if (token == FRAME_CALLBACK_TOKEN) {
        ((FrameCallback)action).doFrame(frameTimeNanos);
    } else {
        // 這里也即是調用了TraservalRunnable的run方法,也即是三個繪制流程
        ((Runnable)action).run();
    }
}

mHandler是當前主線程的handler,當接收到onVsync信號的時候,將自己封裝到Message中,等到Looper處理,最后Looper處理消息的時候就會調用run方法最終從mCallbackQueues取回之前添加的任務再執行run方法,也就是TraservalRunnable的run方法。最終觸發performTraversals方法進行界面刷新。

責任編輯:武曉燕 來源: 沐雨花飛蝶
相關推薦

2009-12-25 18:06:11

WPF刷新界面

2009-08-31 09:13:00

UbuntuNetBook Rem界面

2012-07-17 09:53:02

2025-01-07 15:23:47

iOS 18iOS 19蘋果

2009-07-10 08:50:35

微軟Windows 7界面

2011-12-29 10:13:48

FirefoxAndroid版

2012-06-18 10:57:25

Windows 8操作系統

2010-04-15 09:47:02

2017-05-12 09:29:42

操作系統Windows 10 win 10 NEON

2010-08-05 09:17:17

MeeGo界面

2011-04-14 13:30:55

webOS 3.0webOS惠普

2009-12-23 20:45:09

Firefox全新界面

2012-05-11 16:11:50

Visual Stud

2022-07-06 09:54:46

微軟Windows 11

2009-02-12 15:18:59

2023-05-04 06:31:45

OneDrive微軟

2023-05-04 09:44:17

開源FydeOS

2011-08-18 09:30:39

金山Kingsoft Of

2012-03-26 11:00:10

Visual Stud微軟開發

2012-08-15 09:26:30

SkyDriveOutlook.com
點贊
收藏

51CTO技術棧公眾號

91精品一区国产高清在线gif| 波多野结衣在线观看| 日韩1区2区日韩1区2区| 在线亚洲欧美视频| 亚洲女人在线观看| 女海盗2成人h版中文字幕| 国产婷婷色一区二区三区四区| 国产在线高清精品| 日韩免费视频网站| 日本不卡二三区| 亚洲国产另类 国产精品国产免费| 欧美aⅴ在线观看| av网站大全在线| 91美女在线视频| 亚洲自拍中文字幕| 高潮毛片又色又爽免费| 欧美久色视频| 日韩成人中文电影| 黑人性生活视频| 不卡av影片| 亚洲一级在线观看| 亚洲国产精品123| 欧美一级淫片aaaaaa| 欧美aaaaaa午夜精品| 久久人人爽人人爽人人片av高请| 在线免费观看视频| 欧美激情影院| 精品乱人伦小说| 日本超碰在线观看| 成人爱爱网址| 午夜精品福利视频网站| 麻豆一区二区三区在线观看| 成年在线电影| 久久这里只精品最新地址| 91精品免费| 91资源在线视频| 首页国产欧美久久| 日本久久久久亚洲中字幕| 国产无套粉嫩白浆内谢| 伊人久久大香线蕉综合四虎小说 | 亚洲欧美另类小说| 日本一区二区三区视频在线观看 | 亚洲在线精品视频| 久久综合亚州| 欧美在线观看网址综合| 日韩人妻无码一区二区三区99| 亚洲激情五月| 久久中文字幕视频| 日日操免费视频| 欧美色女视频| 尤物yw午夜国产精品视频| 亚洲天堂视频一区| 国产一区二区欧美| 亚洲免费一在线| 性色av蜜臀av色欲av| 日本午夜精品久久久| 亚洲国产精品久久久久| 污污免费在线观看| 懂色av一区二区| 日韩精品电影网| 在线观看国产精品一区| 精品国产一区二区三区小蝌蚪| 亚洲免费av网址| 熟女俱乐部一区二区| 精品一区二区三| 最近更新的2019中文字幕| 婷婷丁香综合网| 亚洲国产成人精品女人| 久久69精品久久久久久国产越南| 在线免费日韩av| 亚洲精品女人| 国产不卡视频在线| 一区二区三区精彩视频| 国产在线国偷精品免费看| 亚洲iv一区二区三区| 懂色av蜜臀av粉嫩av分享吧| fc2成人免费人成在线观看播放| 久久久久久一区| freemovies性欧美| 亚洲免费av网站| 18禁免费观看网站| 日本成人伦理电影| 日韩午夜激情视频| 51调教丨国产调教视频| 日韩欧美高清| 欧美激情乱人伦一区| 欧美a视频在线观看| 麻豆高清免费国产一区| 成人免费视频网站入口| 日本护士...精品国| 中文字幕成人av| www.成年人视频| 天天免费亚洲黑人免费| 91精品国产综合久久小美女| 亚洲精品第二页| 成人羞羞动漫| 欧美国产精品人人做人人爱| 精品人妻一区二区三区潮喷在线| 精品综合免费视频观看| 精品国产一区二区三区免费| 午夜视频在线免费观看| 亚洲永久免费视频| 三上悠亚在线一区二区| 久久久久久毛片免费看| 精品久久国产精品| 天天干天天干天天干天天| 精品在线一区二区三区| 九色91国产| 中文在线字幕免费观看| 色噜噜夜夜夜综合网| 麻豆av免费看| 久久人人99| 日本不卡视频在线播放| 不卡视频免费在线观看| 中文字幕不卡的av| 成人综合视频在线| 538任你躁精品视频网免费| 中文字幕在线亚洲| 日日摸天天添天天添破| 成人永久看片免费视频天堂| 一区二区三区四区视频在线| 午夜日韩成人影院| 亚洲第一色在线| 国产精品 欧美激情| 视频在线观看一区| 久草一区二区| 1024在线看片你懂得| 欧美一级精品在线| 在线观看天堂av| 爽好多水快深点欧美视频| 精品视频第一区| 2018av在线| 欧美成人性福生活免费看| 少妇视频一区二区| 免费久久精品视频| 神马影院一区二区三区| 免费电影日韩网站| 日韩av影视综合网| 亚洲国产成人精品激情在线| 国产成人8x视频一区二区 | 女~淫辱の触手3d动漫| 亚洲精品乱码| 精品蜜桃一区二区三区| av男人的天堂在线观看| 亚洲精品国产精品自产a区红杏吧 亚洲精品国产精品乱码不99按摩 亚洲精品国产精品久久清纯直播 亚洲精品国产精品国自产在线 | 国产精品久久久午夜夜伦鲁鲁| 久久精品一区二区| 久久精品网站视频| 精品国产一区探花在线观看 | 国产主播第一页| www日韩大片| 成人一级片网站| 欧美人与牛zoz0性行为| 日本久久亚洲电影| 电影在线一区| 678五月天丁香亚洲综合网| 99久久婷婷国产综合| 国产一区二区三区在线看麻豆 | 一二三区精品| 免费成人深夜夜行视频| 日韩精品影院| 日韩在线视频国产| 国产av精国产传媒| 午夜视频在线观看一区二区| 久久久久成人精品无码中文字幕| 午夜综合激情| 视频一区二区三| 日韩成人在线电影| 色综合久久88| 午夜影院免费视频| 欧美亚洲国产bt| 91传媒免费观看| 成人精品国产福利| 国产亚洲天堂网| 久久精品av| 成人动漫视频在线观看完整版 | 国产综合视频在线观看| 最新日本在线观看| 亚洲美女视频网| 欧美高清69hd| 亚洲亚洲人成综合网络| 熟女俱乐部一区二区| 国产在线观看免费一区| 国产v片免费观看| 日韩片欧美片| 成人欧美一区二区三区视频xxx | 18成人在线| 欧美a级在线观看| 日韩小视频在线| 欧美自拍第一页| 欧美在线999| 麻豆疯狂做受xxxx高潮视频| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 尤物精品在线| 亚洲国产精品123| 97久久亚洲| 国产精品亚洲自拍| av中文在线资源库| 久久精品国产欧美激情| 欧美一区二区少妇| 日韩精品一区在线| 进去里视频在线观看| 午夜影院久久久| 国产喷水在线观看| 99久久综合99久久综合网站| 日本中文字幕观看| 免费日韩av| 国产毛片久久久久久国产毛片| 欧美色图一区| 久久99精品久久久久子伦| 九色精品蝌蚪| 国产精品欧美一区二区三区奶水| 毛片在线网站| 欧美精品videos性欧美| 国产原厂视频在线观看| 亚洲亚裔videos黑人hd| 色哟哟国产精品色哟哟| 欧美一区在线视频| 一区二区视频网站| 日本韩国欧美一区二区三区| 日本一区二区网站| 亚洲精品中文字幕在线观看| 秋霞网一区二区三区| 久久久久亚洲蜜桃| 欧美做受喷浆在线观看| 成人av免费在线| 少妇丰满尤物大尺度写真| 久久99久久精品| 天天干天天草天天| 日韩电影一二三区| 99视频在线免费| 亚洲欧美成人| www国产黄色| 99日韩精品| 女人天堂av手机在线| 亚洲国产网站| 和岳每晚弄的高潮嗷嗷叫视频| 99热国内精品| 亚洲精品一区二区三区樱花 | 亚洲色无码播放| 日本一级在线观看| 亚洲免费一在线| 国产特黄在线| 中文字幕国产亚洲2019| av网站在线免费播放| 伊人久久久久久久久久| 成年在线电影| www.久久色.com| av网站网址在线观看| 欧美精品一区二区免费| 日韩免费影院| 午夜精品久久久久久99热| 国产精品国精产品一二| 91国产精品91| 超碰一区二区| 在线亚洲高清视频| 亚洲不卡一卡2卡三卡4卡5卡精品| 一区二区三区欧洲区| 豆国产97在线| 欧美一性一交| 日韩精品一区二区三区丰满 | 亚洲欧美日本精品| 国产粉嫩一区二区三区在线观看 | 欧美一卡二卡在线观看| www.精品久久| 亚洲国产精品久久| 黄色大片在线看| 色妞欧美日韩在线| a视频在线播放| 欧美极品美女电影一区| 竹内纱里奈兽皇系列在线观看| 91av福利视频| 精品久久毛片| 国产福利久久| 国产一区二区三区四区五区传媒| 亚洲在线色站| 一区精品久久| 亚洲国产精品毛片av不卡在线| 国产精品xxx在线观看| 欧美极品色图| 亚洲精品成人| 精品少妇人妻av免费久久洗澡| 久久天天综合| 韩国三级丰满少妇高潮| wwwwxxxxx欧美| 免费一级suv好看的国产网站| 亚洲午夜一区二区三区| 无码人妻丰满熟妇区五十路| 7777精品伊人久久久大香线蕉| 天堂成人在线观看| 日韩在线视频国产| 在线播放高清视频www| 国产在线视频91| 天海翼精品一区二区三区| 日本福利视频导航| 国产精品久久久久毛片大屁完整版| 日日噜噜夜夜狠狠| www.一区二区| 精品人妻伦九区久久aaa片| 福利微拍一区二区| 国产精品一级二级| 亚洲免费av电影| 牛牛电影国产一区二区| 国产精品久久不能| 精品福利网址导航| 99视频精品全部免费看| 狂野欧美性猛交xxxx巴西| 丰满熟女人妻一区二区三区| 欧美激情资源网| 日本熟女毛茸茸| 正在播放亚洲一区| av网站在线免费观看| 8050国产精品久久久久久| 久久视频免费| 亚洲二区自拍| 久久精品观看| 成人在线电影网站| 亚洲伦在线观看| 在线观看黄色网| 亚洲男女自偷自拍图片另类| 久草在线新免费首页资源站| 91久久在线视频| 成人看的羞羞网站| 日韩免费高清在线| 91小视频免费观看| 日本在线观看中文字幕| 欧美不卡一区二区三区四区| 免费日本一区二区三区视频| 国产精品精品一区二区三区午夜版 | 国产精品加勒比| 一区二区电影| 一级 黄 色 片一| 专区另类欧美日韩| 伊人网视频在线| 中文字幕久久久av一区| 欧美一级二级视频| 任我爽在线视频精品一| 国产亚洲福利| 久久午夜夜伦鲁鲁片| 亚洲3atv精品一区二区三区| 亚洲av无码国产精品久久不卡| 久久精品电影网| 亚洲欧美专区| 日韩第一页在线观看| 激情伊人五月天久久综合| 国产美女网站视频| 91精品国产一区二区三区香蕉| 亚洲免费视频一区二区三区| 国产精品青草久久久久福利99| 精品国产乱码久久久久久1区2匹| 无码少妇一区二区三区芒果| 国产亚洲精品aa| 中文文字幕一区二区三三| 在线观看久久久久久| 国产精品第一| 日本免费在线视频观看| 国产美女在线观看一区| 久久免费黄色网址| 亚洲第一页自拍| 亚洲最大网站| 亚洲欧洲日本国产| 国产在线精品视频| 在线看成人av| 亚洲欧美成人一区二区在线电影| 在线日本欧美| 自拍偷拍一区二区三区| 国产精品99久久久久| 久久精品一级片| 日韩麻豆第一页| 91天天综合| 中文字幕第50页| av高清久久久| 无码人妻丰满熟妇精品区| 日韩在线观看免费高清完整版| 国产精品麻豆| 国产精品沙发午睡系列| 国产精品精品国产色婷婷| 国产国语亲子伦亲子| 亚洲97在线观看| 精品国产导航| 五月婷婷之婷婷| 午夜精品福利一区二区三区av| 毛片网站在线| 444亚洲人体| 久久成人免费| 中文字幕手机在线观看| 日韩av网址在线观看| 91亚洲精品在看在线观看高清| 欧美 日韩 亚洲 一区| 国产精品青草综合久久久久99| 国内爆初菊对白视频| 国产精品av电影| 欧美激情成人在线| 播金莲一级淫片aaaaaaa| 欧美日韩国产成人在线91| 俺来也官网欧美久久精品| 欧美欧美一区二区| 国产一区不卡精品| 最近中文字幕免费观看| 欧美劲爆第一页|