日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

XCoreRedux框架:Android UI组件化与Redux实践

發(fā)布時間:2023/11/29 66 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XCoreRedux框架:Android UI组件化与Redux实践 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

XCoreRedux框架:Android UI組件化與Redux實踐

@author: 莫川 https://github.com/nuptboyzhb/

XCoreRedux源碼+Demo:https://github.com/nuptboyzhb/XCoreRedux

使用android studio打開該項目。

目錄結(jié)構(gòu)

  • demo

    基于xcore框架寫的一個小demo
  • xcore

    XCoreRedux核心代碼庫
  • pics

    文檔的pic資源

前言

  • Android開發(fā)當(dāng)中的Code Architecture思考

    最近看了很多前端的框架,React、Flux、Redux等,React和Redux都是前端比較流行的框架。而android方面,Google官方貌似不太Care此事,業(yè)內(nèi)也沒有公認的優(yōu)秀Architecture。與前端類似,在Android開發(fā)中,同樣也面臨著復(fù)雜的數(shù)據(jù)state管理的問題。在理解Store、Reducer和Action的基礎(chǔ)上,最終,基于Redux+React的思想,提出了一個基于Android平臺Redux框架,我給它起名叫作:XCoreRedux。本倉庫就是XCoreRedux+UIComponent框架的實現(xiàn)。它表達的是一種思想,希望大家能夠提出更好的意見。

XCoreRedux框架介紹

與前端的Redux框架類似,XCoreRedux框架的圖示如下:

Action

Action 是把數(shù)據(jù)傳到 store 的有效載體。它是store的唯一數(shù)據(jù)來源。我們一般是通過 store.dispatch()將action傳到store中。Action一般需要兩個參數(shù):type類型和data數(shù)據(jù)。在XCoreRedux框架下,我們定義Action如下:

public class XCoreAction {//Action的類型public final String type;//Action攜帶的value,可為空public final Object value;public XCoreAction(String type, Object value) {this.type = type;this.value = value;}public XCoreAction(String type) {this(type, null);}@Overridepublic boolean equals(Object object) {...}@Overridepublic int hashCode() {...} }

為了統(tǒng)一的管理Action,你可以實現(xiàn)一個ActionCreator,比如,demo中創(chuàng)建了一個聯(lián)系人業(yè)務(wù)的Creator:

/*** @version mochuan.zhb on 16/9/28.* @Author Zheng Haibo* @Blog github.com/nuptboyzhb* @Company Alibaba Group* @Description 聯(lián)系人 ActionCreator*/ public class ContactsActionCreator {public static final String ADD_ITEM = "AddContacts";public static final String ADD_TITLE = "addCategory";public static final String DELETE_LAST = "deleteLast";public static final String CHECK_BOX = "contactsCheck";public static XCoreAction addContacts(Contacts contacts) {return new XCoreAction(ADD_ITEM, contacts);}public static XCoreAction addCategory(Title title) {return new XCoreAction(ADD_TITLE, title);}public static XCoreAction deleteLast() {return new XCoreAction(DELETE_LAST);}public static XCoreAction checkBoxClick(ContactsWrapper contactsWrapper) {return new XCoreAction(CHECK_BOX, contactsWrapper);} }

Action的概念比較好理解,下面我們看一下Reducer

Reducer

reducer的字面意思就是“減速器”。Action描述了事件,Reducer是決定如何根據(jù)Action更新狀態(tài)(state),而這正是reducer要做的事情。Reducer的接口定義如下:

public interface IXCoreReducer<State> {State reduce(State state, XCoreAction xcoreAction); }

就是根據(jù)輸入的Action和當(dāng)前的state,處理得到新的state。

(previousState, action) => newState

說的更直白一點,Reducer就是一些列 純函數(shù) 的集合。如Demo中的項目所示:

public class ContactsReducer implements IXCoreReducer<List<XCoreRecyclerAdapter.IDataWrapper>> {/*** 添加聯(lián)系人** @param contactsWrappers* @param contacts* @return*/private List<XCoreRecyclerAdapter.IDataWrapper> addOneContacts(List<XCoreRecyclerAdapter.IDataWrapper> contactsWrappers, Contacts contacts) {......return wrappers;}/*** 添加標題** @param contactsWrappers* @param value* @return*/private List<XCoreRecyclerAdapter.IDataWrapper> addOneTitle(List<XCoreRecyclerAdapter.IDataWrapper> contactsWrappers, Title value) {......return wrappers;}/*** 刪除最后一個** @param contactsWrappers* @return*/private List<XCoreRecyclerAdapter.IDataWrapper> deleteLast(List<XCoreRecyclerAdapter.IDataWrapper> contactsWrappers) {List<XCoreRecyclerAdapter.IDataWrapper> wrappers = new ArrayList<>(contactsWrappers);if (wrappers.size() > 0) {wrappers.remove(wrappers.size() - 1);}return wrappers;}/*** 設(shè)置選擇狀態(tài)** @param contactsWrappers* @param value* @return*/private List<XCoreRecyclerAdapter.IDataWrapper> changeCheckBoxStatus(List<XCoreRecyclerAdapter.IDataWrapper> contactsWrappers, ContactsWrapper value) {value.isChecked = !value.isChecked;return contactsWrappers;}@Overridepublic List<XCoreRecyclerAdapter.IDataWrapper> reduce(List<XCoreRecyclerAdapter.IDataWrapper> contactsWrappers, XCoreAction xcoreAction) {switch (xcoreAction.type) {case ContactsActionCreator.ADD_ITEM:return addOneContacts(contactsWrappers, (Contacts) xcoreAction.value);case ContactsActionCreator.ADD_TITLE:return addOneTitle(contactsWrappers, (Title) xcoreAction.value);case ContactsActionCreator.DELETE_LAST:return deleteLast(contactsWrappers);case ContactsActionCreator.CHECK_BOX:return changeCheckBoxStatus(contactsWrappers, (ContactsWrapper) xcoreAction.value);...}return contactsWrappers;} }

通過上面的Reducer實現(xiàn),我們可以看出,Reducer就是一些列函數(shù)的集合,其中一個關(guān)鍵函數(shù)reduce,它按照action的不同type執(zhí)行不同的方法處理。

Store

store字面意思是存儲。在Redux框架下,Store和DataBase,File沒有關(guān)系,它可不是持久化存儲的意思。Store是負責(zé)管理數(shù)據(jù)源的狀態(tài),負責(zé)把Action和Reducer聯(lián)系到一起。Store的職責(zé)為:

  • 1.保存數(shù)據(jù)源的當(dāng)前狀態(tài)state
  • 2.對外提供dispatch方法,更新state
  • 3.通過subscribe注冊監(jiān)聽器,當(dāng)state變化時,通知觀察者
  • 4.提供getState方法,獲取當(dāng)前的state

Store的Java實現(xiàn):

public class XCoreStore<State> {private final IXCoreReducer<State> mIXCoreReducer;//數(shù)據(jù)處理器-reducerprivate final List<IStateChangeListener<State>> listeners = new ArrayList<>();//觀察者private volatile State state;//Store存儲的數(shù)據(jù)private XCoreStore(IXCoreReducer<State> mIXCoreReducer, State state) {this.mIXCoreReducer = mIXCoreReducer;this.state = state;}/*** 內(nèi)部dispatch** @param xCoreAction*/private void dispatchAction(final XCoreAction xCoreAction) throws Throwable {synchronized (this) {state = mIXCoreReducer.reduce(state, xCoreAction);}for (IStateChangeListener<State> listener : listeners) {listener.onStateChanged(state);}}/*** 創(chuàng)建Store** @param reducer* @param initialState* @param <S>* @return*/public static <S> XCoreStore<S> create(IXCoreReducer<S> reducer, S initialState) {return new XCoreStore<>(reducer, initialState);}public State getState() {return state;}public void dispatch(final XCoreAction action) {try {dispatchAction(action);} catch (Throwable e) {e.printStackTrace();}}/*** 注冊接口;添加觀察者,當(dāng)state改變時,通知觀察者** @param listener*/public void subscribe(final IStateChangeListener<State> listener) {listeners.add(listener);}/*** 注銷** @param listener*/public void unSubscribe(final IStateChangeListener<State> listener) {listeners.remove(listener);}/*** 狀態(tài)改變的回調(diào)接口** @param <S> 狀態(tài)*/public interface IStateChangeListener<S> {void onStateChanged(S state);}}

在Android中,一個Redux頁面(Fragment或者Activity) 只有一個單一的 store。當(dāng)需要拆分數(shù)據(jù)處理邏輯時,應(yīng)該使用 reducer組合,而不是創(chuàng)建多個Store。

搭配UIComponent

與前端的Redux搭配React類似,XCoreRedux搭配UIComponent。

UI組件化(UIComponent)

在前段的React框架下,我們常常聽說組件的概念:‘UI組件’。那么什么是UI組件呢?以下圖為例:


紅色的區(qū)域為“普通組件”,綠色的區(qū)域為兩種不同類型的“Item組件”。因此,在UIComponent里,組件分兩種:普通組件和item組件(或稱為cell組件)。

普通組件

  • 單組件,比如一個自定義的Widget,就是一樣View。比如自定義的CircleImageView等。
  • 容器組件,由ViewGroup派生出的組件。有FrameLayout、LinearLayout、RelativeLayout等。還有些常見的列表組件,比如ListView或者RecyclerView的組件等。

普通組件在XCore中是以FrameLayout的形式封裝的,編寫一個普通組件只需要實現(xiàn)如下方法:

  • 1.public int getLayoutResId()

    返回組件的布局資源Id
  • 2.public void onViewCreated(View view)

    View初始化
  • 3.實現(xiàn)XCoreStore中的IStateChangeListener接口,在onStateChanged中做數(shù)據(jù)綁定

    為了使UI組件能夠與Store進行關(guān)聯(lián),UI組件可以實現(xiàn)IStateChangeListener接口,然后作為觀察者,觀察Store的state變化。然后在onStateChanged方法中做數(shù)據(jù)綁定。

Item組件(Cell組件)

對于前端來說,item組件和普通組件并沒有什么不同。但是對于Android或者iOS而言,item組件和普通組件是有本質(zhì)區(qū)別的。以ReyclerView為例,Item組件在同一種類型下是會復(fù)用的。在XCoreRedux框架中,定義Item組件,需要繼承自XCoreItemUIComponent,它本身并不是一個View。它只需要實現(xiàn)的方法有:

  • View onCreateView(LayoutInflater inflater,ViewGroup container);
    與Fragment的onCreateView類似,它負責(zé)創(chuàng)建item的布局View
  • void onViewCreated(View view);
    與Fragment的onViewCreated類似,在此寫View的初始化
  • public String getViewType();
    Item組件對于數(shù)據(jù)源的類型
  • public void bindView(IXCoreComponent coreComponent,
    XCoreRecyclerAdapter coreRecyclerAdapter,
    XCoreRecyclerAdapter.IDataWrapper data,
    int pos);
    數(shù)據(jù)綁定,當(dāng)Adapter調(diào)用bindViewHolder時,會回調(diào)bindView方法。

Item組件需要通過Adapter,與對應(yīng)的列表組件聯(lián)系起來。針對Android常用的RecyclerView,XCoreRedux提供了插件式的通用XCoreRecyclerAdapter。

含列表組件下的XCoreRedux框架圖

與之前的不同之處在于,這里把整個列表封裝成一個列表組件,對外提供注冊Item,比如XCoreRecyclerViewComponent組件源碼。

public class XCoreRecyclerViewComponent extends XCoreUIBaseComponent implements XCoreStore.IStateChangeListener<List<XCoreRecyclerAdapter.IDataWrapper>> {private SwipeRefreshLayout mSwipeRefreshLayout;private RecyclerView mRecyclerView;private RecyclerView.LayoutManager mLayoutManager;private XCoreRecyclerAdapter mXCoreRecyclerAdapter;public XCoreRecyclerViewComponent(Context context) {super(context);}public XCoreRecyclerViewComponent(Context context, AttributeSet attrs) {super(context, attrs);}public XCoreRecyclerViewComponent(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);}@Overridepublic final int getLayoutResId() {return R.layout.xcore_recyclerview_component;}@Overridepublic void onViewCreated(View view) {//初始化ViewmSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.xcore_refresh_layout);mSwipeRefreshLayout.setEnabled(false);mRecyclerView = (RecyclerView) findViewById(R.id.xcore_rv);//初始化RecyclerViewmLayoutManager = new LinearLayoutManager(getContext());mRecyclerView.setLayoutManager(mLayoutManager);mXCoreRecyclerAdapter = new XCoreRecyclerAdapter(this);mRecyclerView.setAdapter(mXCoreRecyclerAdapter);}public SwipeRefreshLayout getSwipeRefreshLayout() {return mSwipeRefreshLayout;}public RecyclerView getRecyclerView() {return mRecyclerView;}public RecyclerView.LayoutManager getLayoutManager() {return mLayoutManager;}public XCoreRecyclerAdapter getXCoreRecyclerAdapter() {return mXCoreRecyclerAdapter;}/*** 當(dāng)狀態(tài)發(fā)生變化時,自動通知** @param status*/@Overridepublic void onStateChanged(List<XCoreRecyclerAdapter.IDataWrapper> status) {mXCoreRecyclerAdapter.setDataSet(status);mXCoreRecyclerAdapter.notifyDataSetChanged();}/*** 對外提供item組件的注冊** @param xCoreItemUIComponent* @return*/public XCoreRecyclerViewComponent registerItemComponent(XCoreItemUIComponent xCoreItemUIComponent) {mXCoreRecyclerAdapter.registerItemUIComponent(xCoreItemUIComponent);return this;}public void setRefreshEnable(boolean enable) {mSwipeRefreshLayout.setEnabled(enable);} }

我們在使用該組件時,只需要:

1.在XML中添加組件

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><!-- 頭部組件--><com.example.haibozheng.myapplication.components.container.HeaderComponentandroid:id="@+id/recycler_view_header_component"android:layout_width="match_parent"android:layout_height="wrap_content" /><!-- 列表組件--><com.github.nuptboyzhb.xcore.components.impl.XCoreRecyclerViewComponentandroid:id="@+id/recycler_view_component"android:layout_width="match_parent"android:layout_height="match_parent" /> </LinearLayout>

2.初始化

...//創(chuàng)建數(shù)據(jù)源的storemContactsListXCoreStore = XCoreStore.create(new ContactsReducer(), new ArrayList<XCoreRecyclerAdapter.IDataWrapper>());//創(chuàng)建RecyclerView的UI組件mXCoreRecyclerViewComponent = (XCoreRecyclerViewComponent) findViewById(R.id.recycler_view_component);//注冊item組件模板mXCoreRecyclerViewComponent.registerItemComponent(new TextItemComponent()).registerItemComponent(new ImageItemComponent());//創(chuàng)建頭部組件mHeaderComponent = (HeaderComponent) findViewById(R.id.recycler_view_header_component);//添加觀察者mContactsListXCoreStore.subscribe(mXCoreRecyclerViewComponent);mContactsListXCoreStore.subscribe(mHeaderComponent);...

組件之間通信

Item組件與列表組件及普通組件之間的通信。在本Demo中使用的EventBus是輕量級的otto。每一個繼承自XCoreUIBaseComponent的組件,都已經(jīng)在onCreate和onDestroy中分別進行了注冊和反注冊。使用時,只需要使用@Subscribe 注解來指定訂閱方法。因此,在任意地方都可以調(diào)用:

XCoreBus.getInstance().post(action);

小優(yōu)化

對于數(shù)據(jù)綁定方面,做了兩個優(yōu)化:
1.把數(shù)據(jù)通過Wrapper包裝
2.使用UIBinderHelper做流式綁定,比如:

public class ImageItemComponent extends XCoreItemUIComponent implements View.OnClickListener {private UIBinderHelperImpl mUIBinderHelperImpl;...@Overridepublic void bindView(IXCoreComponent coreComponent,XCoreRecyclerAdapter coreRecyclerAdapter,XCoreRecyclerAdapter.IDataWrapper data,int pos) {mContactsWrapper = (ContactsWrapper) data;mUIBinderHelperImpl.from(R.id.item_content_tv).setText(mContactsWrapper.bindContentText()).from(R.id.item_pic_iv).setImageUrl(mContactsWrapper.getAvatarUrl()).from(R.id.item_title_tv).setText(mContactsWrapper.bindItemTitle()).from(R.id.checkbox).setButtonDrawable(mContactsWrapper.isChecked ? R.mipmap.checkbox_checked : R.mipmap.checkbox_normal).setOnClickListener(this);}... }

后續(xù)

  • 1.異步
  • 2.Middleware中間件
  • 3.與Rx結(jié)合

參考文獻

  • Redux中文文檔
  • Flux and Android
  • AndroidFlux一覽

總結(jié)

以上是生活随笔為你收集整理的XCoreRedux框架:Android UI组件化与Redux实践的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

日本黄色免费看 | 国产精彩在线视频 | 丝袜美女在线观看 | 91精品免费看 | 天天射天天爱天天干 | 亚洲精品视频在线免费 | 国产精品久久久久av免费 | 久久不卡免费视频 | 麻豆91在线观看 | 亚洲成人精品在线观看 | www免费网站在线观看 | 久久夜靖品 | 中文字幕在线观看第三页 | 中文字幕在线专区 | 悠悠av资源片 | 国产精品国产自产拍高清av | 亚洲精品视频在线免费 | 丁香午夜婷婷 | 成人午夜影院 | 日韩高清免费观看 | 91禁在线看| 午夜视频一区二区三区 | 久久99精品久久久久蜜臀 | 69国产盗摄一区二区三区五区 | 国产精品美女久久久久久免费 | 国产精品毛片一区视频播不卡 | 国产麻豆视频在线观看 | 在线看日韩 | 免费在线观看成人小视频 | 玖玖视频网 | 久久精品视频播放 | av成人免费网站 | 欧美日韩高清免费 | 亚洲精品福利视频 | 免费亚洲精品 | 精品资源在线 | 99视频在线精品免费观看2 | 天天天干 | 五月天六月婷婷 | 午夜精品区| 伊人五月婷 | 丁香五婷 | 色综合久久中文字幕综合网 | 天天操一操 | 精品国偷自产在线 | 探花视频免费观看高清视频 | 二区三区在线 | 超碰夜夜 | 亚州国产精品视频 | 亚洲人成人天堂h久久 | 激情五月六月婷婷 | 久久精品高清 | 亚洲婷婷伊人 | av激情五月 | 九九热av| 97伊人网| 欧美人牲 | 免费成人黄色 | 国产91影院| 色就是色综合 | 婷婷在线色 | 九九爱免费视频在线观看 | av888.com| 日本精品免费看 | 日韩在线免费观看视频 | 免费视频国产 | 久久精品—区二区三区 | 国产97视频在线 | 成人在线观看你懂的 | 久久国产亚洲 | 日韩欧美高清免费 | 亚洲最大av在线播放 | 97在线观看免费观看 | 久久综合久色欧美综合狠狠 | 丝袜美腿亚洲 | 久久成人国产精品一区二区 | 国产又粗又猛又爽又黄的视频先 | 久久久久综合 | 91黄色在线观看 | 99中文在线 | 久久夜色精品国产欧美一区麻豆 | 日韩美女av在线 | 91自拍91| 永久av免费在线观看 | 欧美日韩不卡在线视频 | 国产亚洲精品久久久久久久久久久久 | 97精品久久人人爽人人爽 | 欧美精品一区二区在线播放 | 激情综合五月婷婷 | 99精品黄色片免费大全 | 天天干夜夜爱 | 欧美俄罗斯性视频 | 91粉色视频| 国产成人精品999在线观看 | 色综合色综合久久综合频道88 | 91一区啪爱嗯打偷拍欧美 | 91天堂素人约啪 | 免费在线观看视频a | 99色资源 | 亚洲性xxxx | 五月婷婷中文 | 人人躁 | 六月丁香在线视频 | 五月激情在线 | 亚洲精品看片 | 日韩一级片观看 | 亚洲少妇天堂 | 97超视频免费观看 | 激情网婷婷 | 久久精品国产精品 | 日本aaaa级毛片在线看 | 日韩视 | 国产一区二区高清视频 | 欧美一级艳片视频免费观看 | 日韩黄色一级电影 | 国产精品av免费在线观看 | 91日韩国产| 九九九热精品 | 天天操天天摸天天干 | 99久久夜色精品国产亚洲 | 国产不卡在线观看 | 在线а√天堂中文官网 | 99一区二区三区 | 国产91免费在线 | 在线国产99 | 久久www免费视频 | 奇米网444| 超碰免费观看 | 国产精品理论在线观看 | 91激情视频在线 | 久久在线免费 | 日本中文字幕视频 | 久久精品网址 | 国产精品久久久久影院 | www.久久色 | 成人av高清在线观看 | 97偷拍在线视频 | 久久久久久久久久久免费 | 成人蜜桃视频 | 日韩视频a| 欧美日韩高清在线 | 亚洲电影自拍 | 国产高清无av久久 | 久久综合久久伊人 | 精品婷婷 | 精品国内自产拍在线观看视频 | 一区中文字幕电影 | 黄色三级免费看 | 亚洲黄色小说网址 | 国产高清视频免费在线观看 | 欧美另类美少妇69xxxx | 成人一级| 久久久国产精品视频 | 国产精品久久久久高潮 | 狠狠干夜夜操 | 久久69精品久久久久久久电影好 | 在线观看午夜 | 8090yy亚洲精品久久 | 激情综合站 | 国产精品久久久毛片 | 亚洲春色综合另类校园电影 | 婷婷成人亚洲综合国产xv88 | 免费在线观看亚洲视频 | 在线视频免费观看 | 久久久免费精品视频 | 亚洲视频高清 | 99久久精品费精品 | 久久久精品 | 婷婷色 亚洲| 久久久久久久99精品免费观看 | 日韩亚洲国产中文字幕 | 成人中心免费视频 | 婷婷六月色 | 亚洲精品黄色在线观看 | 亚洲精品看片 | av在线播放快速免费阴 | 中文字幕免费一区 | 不卡av电影在线 | 日韩毛片精品 | 99精品视频一区二区 | 日韩天堂网 | 欧美日韩免费观看一区=区三区 | 国产精品1区 | 视频一区二区国产 | 国产精品一区二区三区在线看 | 精品一区电影国产 | 亚州欧美视频 | a级片网站| 免费精品国产va自在自线 | 丰满少妇在线观看网站 | 欧美成人91| 亚洲黄色网络 | 超碰97在线资源 | 天堂网一区二区三区 | 91爱看片 | 国产九色视频在线观看 | 久久图| 久久天堂网站 | 久久久久高清毛片一级 | 992tv在线成人免费观看 | 2024国产精品视频 | 国产精品国产三级国产不产一地 | 日本黄区免费视频观看 | 99成人在线视频 | 亚洲精品综合在线 | 国产精品一区二区免费在线观看 | 不卡电影一区二区三区 | 国产女人免费看a级丨片 | 黄色的网站在线 | 欧美久久久久久久久久久 | 国产一区二区高清 | 久草免费在线视频 | 99久久久久成人国产免费 | 国产中出在线观看 | 中文字幕乱码亚洲精品一区 | 亚洲电影在线看 | 色婷婷导航 | 欧美日韩中文国产一区发布 | 欧美精品免费视频 | 5月丁香婷婷综合 | 久久99精品久久久久久久久久久久 | 色综合久久中文字幕综合网 | 成人精品久久久 | 久久精品欧美 | 99精品视频免费在线观看 | 黄色av一区二区三区 | 超碰国产在线观看 | 亚洲va欧美va人人爽春色影视 | 干干操操 | av成人在线电影 | 中文字幕 国产专区 | 国产在线理论片 | 偷拍视频一区 | 亚洲精品视频在线观看视频 | 日韩欧美一区二区三区视频 | 日韩v欧美v日本v亚洲v国产v | 国产流白浆高潮在线观看 | 免费看污在线观看 | 国产成人在线精品 | 国产又粗又猛又色又黄视频 | 午夜视频在线观看网站 | 久久婷婷国产色一区二区三区 | 亚洲天堂精品视频 | 亚洲激情视频在线 | 久久久久久久影视 | 天天综合天天做天天综合 | 国产精品99久久久精品免费观看 | 六月婷操 | 精品久久亚洲 | 中文字幕资源网在线观看 | 欧美日韩亚洲在线观看 | 四虎永久免费在线观看 | 91精品国产综合久久福利不卡 | 五月天国产精品 | 免费黄色一区 | 99视频免费看 | zzijzzij亚洲成熟少妇 | 欧美日韩18 | 久热电影| 欧美a级在线 | 狠狠色丁香久久婷婷综合五月 | 免费av在 | 91av电影在线 | 99热手机在线观看 | 欧美小视频在线观看 | 97超碰在线久草超碰在线观看 | 999久久久久 | 婷婷国产v亚洲v欧美久久 | av免费试看 | 国产伦理一区二区 | 久久99最新地址 | 怡红院久久 | 欧美另类高潮 | 亚洲欧美国产精品久久久久 | 久久久国产精品一区二区三区 | 久久免费视频在线观看 | 国产精品videoxxxx | av手机版| 国产视频在线观看一区 | 成人网页在线免费观看 | 91麻豆精品91久久久久同性 | 国产在线观看你懂得 | 97成人精品区在线播放 | 国产麻豆精品久久一二三 | 免费看特级毛片 | 美女视频永久黄网站免费观看国产 | 99在线视频网站 | 五月婷婷另类国产 | 国产精品爽爽久久久久久蜜臀 | 97国产精品亚洲精品 | 日韩精品在线视频免费观看 | 免费在线黄网 | 黄a网站| 91成品人影院 | 中文字幕黄色网 | 六月色播 | 国产主播大尺度精品福利免费 | 嫩草av影院 | 黄色三级免费 | 亚洲区视频在线观看 | 亚州黄色一级 | 91av亚洲| 麻豆影视在线播放 | 中文字幕国产精品一区二区 | 色综合中文综合网 | 久久精品91视频 | 国产免费又爽又刺激在线观看 | 欧美日韩一区久久 | 99精品国产在热久久 | 天天插综合 | 青青草国产精品 | 久久久午夜电影 | 国产精品色在线 | 免费中文字幕在线观看 | 国产综合激情 | 久久综合久久久 | 国内久久久久久 | 久草www| 精品在线免费观看 | 国内精品视频在线播放 | 久久久免费视频播放 | 超碰在线网 | 日韩一区二区三区在线观看 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 久久久久国产精品一区 | 91精品久久久久久综合乱菊 | 日韩三级视频在线观看 | 高清不卡毛片 | 欧美男同视频网站 | 日韩黄色av网站 | 婷婷国产一区二区三区 | 99精品偷拍视频一区二区三区 | 香蕉视频在线免费 | 中文字幕网站视频在线 | 91精品国自产在线观看 | 国产黄色观看 | 中文字幕国产精品 | 最新日本中文字幕 | 国产亚洲aⅴaaaaaa毛片 | 久久久久久久久久久免费 | 91av在线免费播放 | 亚洲妇女av| 欧美日韩一区二区三区在线观看视频 | 国产99久久久国产精品成人免费 | 亚洲干视频在线观看 | 日黄网站| 国产黄在线播放 | 蜜臀久久99精品久久久无需会员 | 色综合欧洲 | 中文字幕91 | 亚洲网久久 | 亚洲精品在线视频网站 | 五月激情片 | 日本三级久久久 | 99久久精品午夜一区二区小说 | 人人添人人澡人人澡人人人爽 | 免费毛片一区二区三区久久久 | 最近乱久中文字幕 | 国产丝袜高跟 | 久久精品精品 | 日韩动漫免费观看高清完整版在线观看 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 亚州av成人 | 日本最新高清不卡中文字幕 | 69精品| 国产精品久久久久久一二三四五 | 国产成人三级在线观看 | 天天看天天干天天操 | 久久精品久久精品久久 | 2022国产精品视频 | 九色porny真实丨国产18 | av一区在线 | 青青河边草免费直播 | 国产一级二级av | 久久这里只精品 | 亚洲天堂精品视频 | 日韩色一区二区三区 | 亚洲精品综合一二三区在线观看 | 在线韩国电影免费观影完整版 | 亚洲人在线7777777精品 | 在线视频观看91 | 在线视频一区观看 | 久久99久久99精品 | 成人免费观看电影 | 欧美日韩另类在线 | 亚洲狠狠操 | 久久久穴 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 国产高清一级 | 久久伊人精品一区二区三区 | 在线免费av电影 | 九九热只有这里有精品 | 天堂av免费在线 | 97视频在线| 久久久久久久久久久久亚洲 | 亚洲精品视频网 | 亚洲另类在线视频 | 99久久日韩精品免费热麻豆美女 | 成人一级视频在线观看 | 丁香九月婷婷综合 | 中文字幕在线观看的网站 | av看片在线观看 | 丁香花中文字幕 | 在线观看色网 | 中文字幕视频观看 | 国产免费人成xvideos视频 | 狠狠五月天 | 成人免费视频视频在线观看 免费 | 欧美激情视频一区二区三区 | 亚洲精品美女在线观看播放 | 超碰97免费| 国产一区二区三区免费在线观看 | 精品国产免费人成在线观看 | 婷婷激情综合网 | 人人超碰在线 | 狠狠操夜夜 | 国产精品18久久久久久久久久久久 | 免费精品在线 | 视频直播国产精品 | 狠狠色狠狠色综合日日92 | 成人黄色毛片 | 九草视频在线观看 | 日日躁你夜夜躁你av蜜 | 中文字幕久久精品亚洲乱码 | 久草资源在线 | 久久久久免费看 | 国色天香av | av福利在线播放 | 免费观看av网站 | 免费看的黄色 | 五月婷婷操| 丰满少妇一级 | 在线中文字幕电影 | 五月天.com | 高清av在线免费观看 | 欧美成人亚洲 | 在线中文字幕一区二区 | 欧美激情精品久久久 | 中文av一区二区 | 国产精品不卡在线 | 午夜精品一区二区国产 | 亚洲精品国产自产拍在线观看 | 99精品免费网 | 亚洲日本三级 | 欧美va天堂在线电影 | 国产高清视频在线观看 | 国产精品一区专区欧美日韩 | 精品免费久久 | 免费视频成人 | 欧美日韩国产高清视频 | 久久视频这里有久久精品视频11 | 日韩视频中文 | 精品久久久久一区二区国产 | 午夜精品视频一区二区三区在线看 | 在线看片视频 | 日本公妇色中文字幕 | 亚洲天堂va | 中文字幕在线观看网址 | 国产黄色精品网站 | 国产美女免费 | 日韩欧美国产精品 | 日韩在线视频一区 | 日本黄色大片免费看 | 久久99精品久久久久久三级 | 亚洲精品综合欧美二区变态 | 国产精品久久久久久麻豆一区 | 国产精品久久久久久69 | 国产精品毛片网 | 九九热re| 婷婷中文字幕在线观看 | 国产999精品久久久久久 | 91看片成人 | 欧美久久久久久久久中文字幕 | 欧美极品裸体 | 综合久久网站 | 香蕉久久久久久久 | 在线看国产一区 | 香蕉91视频| 人人干人人添 | 日韩av男人的天堂 | 国产视频日韩视频欧美视频 | 91在线91拍拍在线91 | 激情五月播播久久久精品 | 亚洲精品美女在线观看播放 | 成年人电影免费看 | 国产高清在线不卡 | 欧美夫妻生活视频 | 日本中文字幕在线免费观看 | 国内精品久久久久久久久久久久 | 久久综合成人网 | 日韩一区二区三区高清免费看看 | 少妇bbbb | 亚洲精品视频二区 | 亚洲午夜久久久久久久久电影网 | 黄色片软件网站 | 四虎在线永久免费观看 | 在线国产日本 | 欧美久久久久久久久久久 | 一级c片| 日韩精品电影在线播放 | 国产一二三区av | 九九九九九九精品任你躁 | 久久精品日产第一区二区三区乱码 | 日韩亚洲欧美中文字幕 | 国产一区二区三区在线免费观看 | 美女又爽又黄 | 黄色av电影网 | 国产一区二三区好的 | 国产97在线观看 | 91av视频在线观看 | 国产美女精品久久久 | 97超碰人人澡人人 | 91精品国产乱码 | 午夜黄色大片 | 91人人澡人人爽 | 久久精品男人的天堂 | 国产男女无遮挡猛进猛出在线观看 | 福利网址在线观看 | 超碰人人99| 亚洲国产一区二区精品专区 | 免费观看国产精品 | 亚洲在线精品视频 | 日韩色一区二区三区 | 国产九九精品 | 三级免费黄 | 久草在线播放视频 | 亚洲日本在线一区 | 国产精品一区二区三区在线播放 | 久久久久久久久久久久av | 日韩精品你懂的 | 国产精品嫩草影院123 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 亚洲国产精品va在线看黑人动漫 | 国产一线在线 | 人人舔人人爱 | 久久久免费看 | av黄色在线播放 | 久草视频在线免费播放 | 特级a老妇做爰全过程 | 国产精品一区二区中文字幕 | 国产成人精品免高潮在线观看 | 国产精品精品久久久久久 | 草久久影院 | 91久久精品一区二区三区 | 久久成人综合 | 久久久久国产精品厨房 | 综合网中文字幕 | 97人人艹| 在线成人免费 | 欧美成人视 | 狠狠色噜噜狠狠狠合久 | 五月天综合色 | 五月婷香蕉久色在线看 | 国产一级高清 | 国产丝袜美腿在线 | 久久国产精品久久w女人spa | 亚洲在线国产 | 欧美日本高清视频 | 亚洲va欧美va人人爽春色影视 | 国产亚洲精品中文字幕 | 狠狠的操狠狠的干 | 深夜免费小视频 | 久热爱 | 色婷婷成人网 | 国产无套视频 | 欧美成人91 | av高清网站在线观看 | 久久手机免费观看 | se婷婷 | 91av视频在线播放 | www婷婷 | 一级黄色网址 | 日本激情视频中文字幕 | 国产日韩欧美在线观看视频 | 亚洲在线视频网站 | 在线观看韩日电影免费 | 亚洲成色| 亚洲国产成人久久综合 | 久久经典视频 | 国产精品午夜8888 | 精品久久久久久亚洲综合网站 | 成人免费大片黄在线播放 | 日韩va在线观看 | 91超在线| 成年人网站免费在线观看 | 成人黄色电影视频 | av免费试看 | 国产精品com | 婷婷在线五月 | 午夜视频在线观看一区二区三区 | 99精品国自产在线 | 成人在线免费看 | 人人干狠狠干 | 婷婷国产在线观看 | 日韩午夜剧场 | 99在线观看精品 | 欧美日韩网址 | 婷婷av在线 | 中文字幕制服丝袜av久久 | 国产不卡一| 91激情视频在线 | 在线黄av| 亚洲国产色一区 | 国产精品福利一区 | 日韩在线二区 | 久久99国产精品自在自在app | 九九免费视频 | 国产日韩欧美在线观看 | 日韩啪视频 | 91精品久| 久久久国产精华液 | 69av国产 | 亚洲精品乱码久久久久久9色 | 国产免费人成xvideos视频 | 国产精品毛片久久蜜 | 黄污网 | 天天操夜夜操国产精品 | 91人人爱 | 国产午夜在线观看 | 亚洲精品日韩一区二区电影 | 久久网站最新地址 | 色综合狠狠干 | 日韩黄色软件 | 欧美va在线观看 | 久久怡红院| 亚洲精品一区二区三区在线观看 | 久草在线电影网 | 97在线播放视频 | 国产精品一区二区久久久久 | 美女在线免费观看视频 | 免费高清无人区完整版 | 精品福利在线观看 | 97超碰在线资源 | 亚洲欧美国产精品va在线观看 | 五月天欧美精品 | 91丨九色丨首页 | 日韩欧美高清在线观看 | 久久国产精品免费看 | 成人av免费| 在线观看视频国产一区 | 中文字幕在线国产精品 | 91香蕉视频 mp4 | 久久久久久久久久久国产精品 | 五月婷婷久久综合 | www.天天射.com| 永久av免费在线观看 | 久久国产精品久久精品国产演员表 | 欧美日韩免费一区二区 | 欧美视频国产视频 | 欧美日韩在线观看一区二区三区 | 亚洲欧洲xxxx | 一级一片免费视频 | 丝袜美腿在线播放 | 国产成人久久精品77777综合 | 久久精品国产精品亚洲精品 | 免费看一及片 | 五月天精品视频 | 啪嗒啪嗒免费观看完整版 | 亚洲视频电影在线 | www.亚洲精品视频 | 日韩av电影中文字幕在线观看 | 久久热首页 | 亚洲精品理论片 | 伊人资源站 | av免费电影在线 | 日韩动漫免费观看高清完整版在线观看 | 在线亚洲精品 | 久久69精品久久久久久久电影好 | 国内久久精品视频 | 91亚洲精品国偷拍自产在线观看 | 午夜精品久久久久久久99热影院 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 狠狠夜夜| 色无五月| 欧美日韩不卡在线观看 | 成人av资源网 | 欧美亚洲免费在线一区 | 97视频总站 | 992tv在线观看网站 | 日本久久久亚洲精品 | 最近字幕在线观看第一季 | 午夜精品久久久久久99热明星 | 亚洲九九九在线观看 | 色视频在线免费观看 | 99精品久久久久 | 国产成人精品一区二区三区在线观看 | 欧美日韩国产一区二区三区 | 黄色一级免费网站 | 国产精品毛片一区二区三区 | 日韩欧美国产精品 | 狠狠色丁香婷婷综合久久片 | 91欧美视频网站 | 国产v在线播放 | 人人干人人超 | 欧美91精品久久久久国产性生爱 | 射久久久 | 日韩va欧美va亚洲va久久 | 在线观看日本高清mv视频 | 久久久久久久久久久精 | 这里只有精品视频在线 | 日韩乱码中文字幕 | 日日夜夜狠狠操 | 国产色在线观看 | 九九免费观看全部免费视频 | bayu135国产精品视频 | 欧美国产视频在线 | 国产精品综合久久久久 | 日韩欧美高清一区二区三区 | 亚洲国产综合在线 | 美女视频一区 | 久久久www成人免费毛片麻豆 | 四虎影视成人精品 | 国产网红在线观看 | 国产91在线播放 | 国产成人黄色片 | 999久久国产精品免费观看网站 | 91精品国产一区二区三区 | 去干成人网 | av免费网站观看 | 天天干天天天天 | 国产精品99久久久久久久久 | 亚洲电影自拍 | 成在人线av | 毛片网站在线看 | 亚洲激情国产精品 | 一区二区视频免费在线观看 | 成人免费xxxxxx视频 | 欧美a级片免费看 | 色综合五月 | 日本h视频在线观看 | 国产精品影音先锋 | 国产视频久久久 | 亚洲精品国内 | 91九色国产| 日韩免费专区 | 最新日本中文字幕 | 久久天堂亚洲 | 91丝袜美腿| 五月婷婷一区二区三区 | 九九热免费在线观看 | 日韩中文字幕在线不卡 | 日韩在线免费观看视频 | 国产99区 | 日日夜夜添 | 亚洲精品字幕 | 黄色在线观看免费 | 99在线精品视频 | 国产小视频免费在线网址 | 97激情影院 | 人人玩人人添人人澡97 | 久久艹欧美 | av成人亚洲 | 久久久这里有精品 | 国产精品一区在线 | 伊人伊成久久人综合网小说 | 日本三级久久久 | 国产九九九精品视频 | 四虎国产精品免费观看视频优播 | 97成人精品视频在线观看 | 93久久精品日日躁夜夜躁欧美 | 超碰伊人网 | 免费看久久久 | 成人动态视频 | av网址aaa | 亚洲成 人精品 | 午夜精品福利一区二区三区蜜桃 | 国产97碰免费视频 | 日本久久中文字幕 | 91免费高清在线观看 | 一区二区三区在线免费观看视频 | 激情影音先锋 | 亚洲精品tv久久久久久久久久 | 亚洲精品在线观 | 黄色成人在线观看 | 免费网站看v片在线a | 国产一区黄色 | www.狠狠操.com| 日日天天 | 不卡视频国产 | 欧美91精品久久久久国产性生爱 | 欧美坐爱视频 | 免费在线国产视频 | 天海冀一区二区三区 | 欧美日韩在线看 | 日韩高清不卡在线 | www.亚洲精品视频 | 一区二区激情 | 91色蜜桃 | 国产91aaa| 午夜久久网 | 麻豆国产露脸在线观看 | av免费电影网站 | 亚洲电影图片小说 | 五月天激情电影 | 成人av网页 | 亚洲日本一区二区在线 | 97精品视频在线 | 久久毛片高清国产 | 探花视频在线观看免费版 | 欧美日韩国产一区二区三区在线观看 | 在线中文字幕一区二区 | 激情网在线观看 | 成年人免费看av | 日韩美女免费线视频 | 国语精品免费视频 | 免费福利在线视频 | 久久久蜜桃一区二区 | 精品国产伦一区二区三区观看说明 | 亚洲精品免费视频 | 性色av一区二区三区在线观看 | 毛片网在线播放 | 国产中文字幕免费 | 免费在线色| 欧美日韩a视频 | 色网址99 | 中文字幕免费高清av | 中文字幕精品一区二区精品 | 日韩一区二区三区免费视频 | 亚洲成年人在线播放 | 日韩精品91偷拍在线观看 | 人人澡视频 | 国产成本人视频在线观看 | 91视频三区| 日韩av中文字幕在线免费观看 | 亚洲精品综合一二三区在线观看 | 91精品老司机久久一区啪 | 伊人亚洲精品 | 97在线观看免费 | 国产精品久久久久久久妇 | 久草免费色站 | 九九免费在线看完整版 | 日日日日| 黄免费网站| 人人爽人人插 | 久久激情小视频 | 国产精品成人在线 | 69性欧美| 欧美激情va永久在线播放 | 亚洲成人免费在线观看 | 美女在线观看网站 | 激情五月网站 | 国产一区二区三区 在线 | 成人国产一区二区 | 亚洲精品一区二区三区高潮 | 精品极品在线 | 在线观看第一页 | 国产三级精品三级在线观看 | 天堂网一区二区 | 久久久午夜精品理论片中文字幕 | 免费日韩 精品中文字幕视频在线 | 国产99在线 | 天天干天天操天天爱 | 操天天操 | 亚洲成人免费观看 | 91女子私密保健养生少妇 | av中文字幕在线看 | 国产一区二区三精品久久久无广告 | 色黄视频免费观看 | 九九欧美| 免费看91的网站 | 精品国产亚洲一区二区麻豆 | 成人午夜电影免费在线观看 | 最新真实国产在线视频 | 欧美日韩国产精品一区二区三区 | 国产成人综合在线观看 | 成人精品一区二区三区电影免费 | 国产高清在线a视频大全 | 色综合网| 日韩美女一级片 | 国内亚洲精品 | 欧美日韩精品免费观看 | 欧美乱码精品一区 | 天天天天综合 | 亚洲1区在线 | 黄色一级大片在线免费看产 | 99久久国产免费,99久久国产免费大片 | 久久综合九色综合97_ 久久久 | 免费91麻豆精品国产自产在线观看 | 国产一区二区久久久久 | 日韩精品视频在线观看免费 | 在线午夜| 欧美日本高清视频 | 国产成人精品一区二区在线 | 男女全黄一级一级高潮免费看 | 91麻豆精品国产91久久久无限制版 | 久久黄色免费观看 | 成人综合免费 | 日日干 天天干 | 免费黄色在线网址 | 久久久久区 | 精品夜夜嗨av一区二区三区 | 亚洲婷婷丁香 | 色偷偷网站视频 | 涩涩资源网 | 久久兔费看a级 | 黄色成人毛片 | 中文字幕色婷婷在线视频 | 欧美午夜a| 一本大道久久精品懂色aⅴ 五月婷社区 | 国产午夜在线观看 | 黄色毛片视频 | 成人av日韩| 玖草在线观看 | 欧美激情va永久在线播放 | av噜噜噜在线播放 | 免费看的黄色网 | 亚洲成人一区 | 91网站观看 | 在线免费中文字幕 | 最新av在线网站 | 日本黄色免费网站 | 精品视频免费在线 | www久久国产 | 国产二区av| 国产剧情av在线播放 | 人人射人人 | 奇米网777 | 97超碰伊人 | 久久久久久久国产精品 | 亚洲国产精久久久久久久 | 国产精品日韩在线观看 | 国产日产精品一区二区三区四区的观看方式 | 麻豆视频一区 | av免费网页 | 91最新中文字幕 | 韩国一区二区av | 久久久精品欧美 | 久久久久电影网站 | 全久久久久久久久久久电影 | 99久久精品国产系列 | 五月婷婷色综合 | 国产免费黄色 | av一级在线 | 99理论片 | 欧美成年网站 | 四虎影视成人 | 999热视频| 精品一区二区久久久久久久网站 | 日本精品一区二区三区在线播放视频 | 日韩免费成人av | 亚洲另类视频在线观看 | 99热最新 | 99久久精品午夜一区二区小说 | 香蕉在线观看 | 久久久精选| 久久精品高清 | 欧美日韩免费在线观看视频 | 91在线免费公开视频 | 亚洲一区二区天堂 | 欧美一级欧美一级 | 五月天久久久久久 | 久久久性 | 中国一级特黄毛片大片久久 | 国产精品完整版 | 欧美日韩三级在线观看 | 国产精品九九九九九九 | 综合色婷婷 | 五月婷婷天堂 | 天天操天天干天天摸 | 久久免费电影 | 91精品在线免费视频 | 91污污| 一级性视频 | 久久久不卡影院 | 国产日本亚洲 | 中文字幕乱码亚洲精品一区 | 久青草视频在线观看 | av成人免费在线看 | 国产精品九九久久久久久久 | 亚洲精品乱码久久久久久蜜桃91 | 亚洲japanese制服美女 | 亚洲aaa毛片| 99精品国产免费久久久久久下载 | 精品国产乱码一区二区三区在线 | av中文字幕在线观看网站 | 亚洲综合色视频 | 99久久精品久久久久久清纯 | 手机在线观看国产精品 | 91视频在线观看免费 | 久久久久综合精品福利啪啪 | 亚洲综合最新在线 | 美女黄频在线观看 | 国产99久久久欧美黑人 | www黄色大片 | 亚洲精品视频在线观看免费视频 | 一本一本久久a久久精品牛牛影视 | 成人国产精品免费观看 | 国产高清视频在线观看 | 成人h在线观看 | 一区 二区电影免费在线观看 | 亚洲精品一区二区久 | 激情xxxx| 亚洲男人天堂2018 | 精品一区精品二区高清 | 狠狠躁日日躁狂躁夜夜躁 | 色天天综合久久久久综合片 | 天天做日日做天天爽视频免费 | 欧美美女一级片 |