99久久久久久久久96久久,青青操在线视频免费播放,亚洲黄色天堂视频网,91国产原创精品人妻,2020亚洲欧美国产日韩,亚洲三级免费观看网址,免费女人高潮又粗肛交毛片,啊啊啊嗯呢啊啊啊官网首页,免费av三级在线观看

聯(lián)系我們 - 廣告服務(wù) - 聯(lián)系電話:
您的當(dāng)前位置: > 關(guān)注 > > 正文

Android應(yīng)用Preference相關(guān)及源碼淺析 Preference相關(guān)基礎(chǔ)概念

來源:CSDN 時間:2022-12-20 15:03:50

1 前言


(資料圖)

前一篇(點我閱讀前一篇《Android應(yīng)用Preference相關(guān)及源碼淺析(SharePreferences篇)》)我們討論分析使用了Android的SharePreferences,相信看過的朋友都有了自己的感悟與理解,這一篇我們繼續(xù)乘熱打鐵來說說SharePreferences的衍生品—-Preference組件。

其實Preference組件大家一定不陌生,因為android系統(tǒng)的Setting應(yīng)用及我們市面上一些符合Android設(shè)計思想的應(yīng)用的設(shè)置界面一般都會用它來實現(xiàn),而且Google原生Android代碼中大量的使用了Preference組件。

簡單說,Preference組件其實就是Android常見UI組件與SharePreferences的組合封裝實現(xiàn)。

2 Preference組件家族基礎(chǔ)

2-1 Preference相關(guān)基礎(chǔ)概念

既然要先說說Preference組件家族基礎(chǔ),那不得不先簡單說說這些Preference組件間的關(guān)系,如下一張圖是基于API 22繪制的一副Preference組件繼承關(guān)系圖:

怎么樣?相比以前低版本的API來說,谷歌官方又增加了一些實用的Preference組件,不過遺憾的是這里面有些是被hide掉的,有些是在com.android.internal.preference包下的,所以這些hide和com.android.internal.preference包的preference我們應(yīng)用層是不能直接使用的。

到此你指定會說,這些組件和我們平時用的EditText等組件很類似,而我們平時用的EditText等組件顯示是依賴于Activity和Fragment的,那么這里的Preference組件是怎么顯示的呢?

答案就是Preference組件也有自己依賴顯示的框架,最常見的就像PreferenceActivity等,具體看代碼我們會發(fā)現(xiàn)如下:

public abstract class PreferenceActivity extends ListActivity implements        PreferenceManager.OnPreferenceTreeClickListener,        PreferenceFragment.OnPreferenceStartFragmentCallback {......}public abstract class PreferenceFragment extends Fragment implements        PreferenceManager.OnPreferenceTreeClickListener {......}12345678

嘿嘿,明白了吧?其實Preference組件的使用及展示到Window的原理和普通EditText控件展示使用是類似的,因為Preference組件的顯示框架PreferenceActivity及PreferenceFragment都是從基本的Activity及Fragment繼承而來,只是針對Preference進(jìn)行了二次封裝而已。

到此對Preference組件已經(jīng)有一個基本的概念認(rèn)識了,接下來我們就一步一步往下看。

2-2 常用Preference相關(guān)基礎(chǔ)組件屬性說明

我們可以發(fā)現(xiàn),Preference組件家族的控件還是比較豐富的,這里肯定不能一一介紹,所以還是代表性的說幾個使用頻率最高作為指引就行了,其他的用到時參考相關(guān)官方API或者源碼即可。

2-2-1 獨立控件Preference

所有Preference組件的基類,類似常見控件的TextView,一個單純的item,用于通過SharePreferences存儲操作的設(shè)置值,具體翻墻點我。

如下是基類Preference的相關(guān)屬性介紹:

attrdescription

android:defaultValue默認(rèn)值。

android:dependency設(shè)置此元素附屬于另一個元素,依賴的可用則當(dāng)前元素也可用(enable),反之。

android:enabled設(shè)置是否可用。

android:fragment指定fragment。

android:icon指定左側(cè)的圖標(biāo)。

android:key選項的名稱,也是用來存儲時唯一的key。

android:layout給當(dāng)前元素指定一個自定義布局。

android:order偏好的順序。如果不指定,默認(rèn)的順序?qū)⒆帜浮?/p>

android:persistent是否將其值存儲到共享SharePreferences。

android:selectable設(shè)置是否可以選擇操作。

android:shouldDisableView當(dāng)enabled設(shè)置為false變暗,同時此屬性設(shè)置為false時disable但不變暗。

android:summary摘要,配置的簡要說明,顯示在標(biāo)題下面。

android:title選項的標(biāo)題,當(dāng)沒有設(shè)置summary時自動垂直居中顯示。

android:widgetLayout控件可調(diào)小部件的布局。是為一個優(yōu)先選擇的布局,比如一個復(fù)選框選擇要指定一個自定義布局(注意:包括的只是復(fù)選框)在這里。

關(guān)于基類Preference提供的方法這里就不再詳細(xì)列出了,如需查看,具體翻墻點我。

2-2-2 獨立控件CheckPreference

CheckPreference類似常見控件的CheckBox,一個item,右側(cè)有一個CheckBox,用于通過SharePreferences存儲操作的設(shè)置值,具體翻墻點我。

如下是CheckPreference的相關(guān)屬性介紹:

attrdescription

android:disableDependentsState與android:dependency相反;B可用,則A不可用;B不可用,則A可用。

android:summaryOff選項未選中時顯示的摘要。

android:summaryOn選項被選中時顯示的摘要。

2-2-3 獨立控件EditTextPreference

EditTextPreference類似常見控件的EditText,一個item,點擊彈出一個EditText的對話框,用于通過SharePreferences存儲操作的設(shè)置值,具體翻墻點我。

該控件無自有屬性。具體不再介紹,相關(guān)方法查看官方API。

2-2-4 獨立控件ListPreference

ListPreference類似常見控件的ListView,一個item,點擊彈出一個ListView的Dialog,用于通過SharePreferences存儲操作的設(shè)置值,具體翻墻點我。

如下是ListPreference的相關(guān)屬性介紹:

attrdescription

android:entrieslist要顯示的item數(shù)組名字。

android:entryValueslist要顯示的item數(shù)組值。

2-2-5 獨立控件MultiSelectListPreference

MultiSelectListPreference類似常見控件的ListView,一個item,點擊彈出一個多選的ListView的Dialog,用于通過SharePreferences存儲操作的設(shè)置值,具體翻墻點我。

MultiSelectListPreference的相關(guān)屬性同上ListPreference。

2-2-6 獨立控件SwitchPreference

SwitchPreference類似常見控件的Switch,一個item,右側(cè)有一個Switch控件,用于通過SharePreferences存儲操作的設(shè)置值,具體翻墻點我。

如下是SwitchPreference的相關(guān)屬性介紹:

attrdescription

android:disableDependentsState與android:dependency相反;B可用,則A不可用;B不可用,則A可用。

android:summaryOff選項未選中時顯示的摘要。

android:summaryOn選項被選中時顯示的摘要。

android:switchTextOff關(guān)閉狀態(tài)的文字提示。

android:switchTextOn打開狀態(tài)的文字提示。

2-2-7 獨立控件RingtonePreference

RingtonePreference就是一個鈴聲選擇item,點擊彈出鈴聲選擇list的dialog,用于通過SharePreferences存儲操作的設(shè)置值,具體翻墻點我。

如下是RingtonePreference的相關(guān)屬性介紹:

attrdescription

android:ringtoneType鈴聲類型。ringtone/notification/alarm/all

android:showDefault選項中默認(rèn)的鈴聲。

android:showSilent是否顯示靜音項。

2-2-8 組合控件PreferenceScreen

PreferenceScreen就Preference hierarchy的root節(jié)點,實例化他可以使用createPreferenceScreen(Context)方法;這個類可以依附于兩個地方,當(dāng)一個preferenceactivity指向他時用來作為根布局顯示偏好,當(dāng)他嵌套出現(xiàn)在另一個Preference hierarchy內(nèi)部時他會啟動一個新的界面來顯示子項Preference或者設(shè)置的intent;綜上也就是說它不僅可以作為設(shè)置界面顯示,而且還能夠啟動activity,具體翻墻點我。

如下展示了作為根布局及子布局的兩種情況:

<--!>... other preferences here ...123456789101112131415

<--!>1234567

2-2-9 組合控件PreferenceCategory

PreferenceCategory類似于LinearLayout,用于組合一組可設(shè)置標(biāo)題的Preference,使布局更具備層次感,具體翻墻點我。

這個類也沒有啥特殊的東西介紹,詳細(xì)參考API。

到此常用的Preference組件xml屬性介紹完畢,對應(yīng)的Java方法就不再說明了,還有就是他們的protect方法也不再詳細(xì)介紹,具體參見API。

2-3 新增Headers相關(guān)基礎(chǔ)組件屬性說明

上面我們簡單介紹了PreferenceScreen相關(guān)xml的屬性,這些其實是老版本的處理方式;自從Android 3.0引入Fragment之后,Preference相關(guān)的控件也有了變化。

由于PreferenceActivity在3.0開始也需要能夠處理多屏幕碎片化問題,所以Android 3.0之前采用PreferenceScreen嵌套的方法來跳轉(zhuǎn)分類細(xì)則,而Android 3.0及之后使用了Preference Headers的方法來適配多屏幕碎片化問題。

他的核心就是在主屏中通過headers的xml布局列出所有的主題設(shè)置項,每個主題設(shè)置的詳細(xì)設(shè)置由各自指定的PreferenceFragment負(fù)責(zé),而各自的PreferenceFragment可以如傳統(tǒng)的PreferenceActivity 一樣布局自身的PreferenceScreen。

preference-headers就是他們的root,既然這樣,那我們就來看看Headers相關(guān)的組件及方法吧。

2-3-1 PreferenceActivity.Header相關(guān)屬性方法使用基礎(chǔ)

點我翻墻查看。Header繼承自O(shè)bject,實現(xiàn)了Parcelable,用來展示一個item的header。

相關(guān)屬性如下:

attrdescription

android:icon

android:breadCrumbShortTitle在fragment顯示的短標(biāo)題文字。

android:breadCrumbTitle在fragment顯示的標(biāo)題文字。

android:fragment當(dāng)選擇該頭文件時,將顯示該fragment的全名稱。

android:id唯一識別id。

android:summaryitem描述信息。

android:titleitem頭名稱。

如下是一個簡單展示:

......          ......    節(jié)點,類似extra,此處省略 -->123456

關(guān)于Header的用法下面會詳細(xì)演示,基本情況就介紹到這里。

2-4 Preference相關(guān)組件顯示操作控制API解釋

有了上面Preference組件基本概念及屬性介紹以后就相當(dāng)于我們有了磚瓦,接下來就是咋蓋房子了,也就是如何組合這些組件顯示在屏幕上,我們現(xiàn)在就來看看這些常用的操作。

2-4-1 PreferenceActivity相關(guān)屬性方法使用基礎(chǔ)

翻墻點我查看。PreferenceActivity繼承自ListActivity,這個類是Preference相關(guān)控件展示的基類,在Android 3.0以前推薦直接使用,3.0以后推薦和preferencefragment一起使用,所以你可以看見PreferenceActivity中有些方法現(xiàn)在已經(jīng)是過時的了。

首先看下PreferenceActivity加載xml目錄下的文件使用的方法,如下:

public class DemoActivity extends PreferenceActivity {@Override    public void onBuildHeaders(List target) {        super.onBuildHeaders(target);        //當(dāng)大于等于3.0版本時推薦重寫該方法加載xml,headers+fragments模式        loadHeadersFromResource(R.xml.preference_header, target);    }    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {            //當(dāng)小于3.0版本時推薦重寫該方法加載xml,當(dāng)然大于時也可以用,只是不推薦而已            addPreferencesFromResource(R.xml.preference);        }    }}1234567891011121314

如下我們來看看PreferenceActivity相關(guān)的常用方法:

methoddescription

public void addPreferencesFromIntent(Intent intent)@deprecated,添加一個匹配intent的preferences activity。

public void addPreferencesFromResource(int preferencesResId)@deprecated,添加一個xml到activity。

public Preference findPreference(CharSequence key)@deprecated,查找一個指定key的Preference。

public void finishPreferencePanel(Fragment caller, int resultCode, Intent resultData)結(jié)束指定的fragment,參數(shù)返回類似activity。

public PreferenceManager getPreferenceManager()@deprecated,獲取activity使用的PreferenceManager實例。

public PreferenceScreen getPreferenceScreen()@deprecated,獲取當(dāng)前activity的根布局視圖。

public boolean hasHeaders()返回當(dāng)前activity是否顯示了header list。

public void invalidateHeaders()刷新已經(jīng)顯示的header list,會重新回調(diào)onBuildHeaders()。

public boolean isMultiPane()是否同時顯示headers和fragment。

public void loadHeadersFromResource(int resid, List target)解析一個headers的xml然后添加到target列表里。

public void onBuildHeaders(List target)一般需要重寫,注意!這個函數(shù)可能不是總會被調(diào)用,例如,如果該Activity已被要求顯示一個特定的Fragment而不需要頭文件,就不需要構(gòu)建Headers,所以不調(diào)運。

public Intent onBuildStartFragmentIntent(String fragmentName, Bundle args, int titleRes, int shortTitleRes)構(gòu)造一個顯示Fragment的Intent對象。

public void onContentChanged()當(dāng)界面發(fā)生變化時回調(diào)。

public void onHeaderClick(PreferenceActivity.Header header, int position)當(dāng)選擇Headers列表項時調(diào)用,默認(rèn)實現(xiàn)調(diào)用startwithfragment或switchtoheader。

public boolean onIsMultiPane()大屏下默認(rèn)實現(xiàn)是true。

public boolean onPreferenceStartFragment(PreferenceFragment caller, Preference pref)當(dāng)單擊某個具有與它相關(guān)聯(lián)的gragment類名稱時調(diào)用。

public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference)@deprecated,當(dāng)Preference控件被點擊時,觸發(fā)該方法。參數(shù)preference為點擊的對象,返回值true代表點擊事件已成功捕捉,無須執(zhí)行默認(rèn)動作或者返回上層調(diào)用,例如,不跳轉(zhuǎn)至默認(rèn)Intent。

public void setListFooter(View view)給Headers list設(shè)置foot view。

public void startPreferenceFragment(Fragment fragment, boolean push)起一個fragment,push決定是否入棧。

public void startPreferencePanel(String fragmentClass, Bundle args, int titleRes, CharSequence titleText, Fragment resultTo, int resultRequestCode)依據(jù)是否multi-pane模式啟動一個preference的fragment(如果是小屏?xí)貑⒁粋€activity顯示)。

public void startWithFragment(……)啟動一個新的fragment。

public void switchToHeader(……)在大屏multi-pane模式下切換到fragment顯示給定參數(shù)的fragment。

2-4-2 PreferenceFragment相關(guān)屬性方法使用基礎(chǔ)

翻墻點我查看。PreferenceFragment繼承自Fragment,這個類是3.0以后推薦使用的,用來處理碎片化問題。

該類的常用方法和上面PreferenceActivity的介紹差不多,這里不再詳細(xì)說明,只是PreferenceActivity的@deprecated方法在PreferenceFragment中不是@deprecated的而已。

2-4-3 PreferenceManager相關(guān)方法使用基礎(chǔ)

翻墻點我查看。PreferenceManager繼承自O(shè)bject,這個類其實我們前一篇《Android應(yīng)用Preference相關(guān)及源碼淺析(SharePreferences篇)》獲取Preference實例就該說明的,這里才說而已。

Android中得到SharedPreference的方式有四種:

ContextWrapper.getSharedPreferences(String name, int mode) 可以自己設(shè)置SharedPreference的名字與模式。

Activity.getPreferences(int mode) name是Activity名字,不能設(shè)置。

PreferenceManager.getSharedPreferences() 通過PreferenceManager維護(hù)一個SharedPreference,我們可以調(diào)用PreferenceManager的API來設(shè)置name和mode,并且最終也是調(diào)用到ContextWrapper的getSharedPreferences。

PreferenceManager.getDefaultSharedPreferences(Context context) 得到的SharedPreference是某個包名下共享私有的,不能讓其他的包訪問,而且name和mode不能設(shè)置,最終也會調(diào)用到ContextWrapper的getSharedPreferences。

接下來簡單看下PreferenceManager相關(guān)方法,如下:

methoddescription

PreferenceManager.OnActivityDestroyListener當(dāng)所依賴的activity銷毀時回調(diào)接口。

PreferenceManager.OnActivityResultListener當(dāng)所依賴的activity得到返回result時回調(diào)接口。

PreferenceManager.OnActivityStopListener當(dāng)所依賴的activity停止時回調(diào)接口。

public Preference findPreference(CharSequence key)通過key找到Preference。

public static SharedPreferences getDefaultSharedPreferences(Context context)每個應(yīng)用有一個默認(rèn)的preferences文件,通過該方法獲取。

public SharedPreferences getSharedPreferences()通過PreferenceManager維護(hù)一個SharedPreference,可以調(diào)用PreferenceManager的API來設(shè)置name和mode。

public int getSharedPreferencesMode()獲取當(dāng)前的mode。

public String getSharedPreferencesName()獲取當(dāng)前的name。

public static void setDefaultValues(Context context, String sharedPreferencesName, int sharedPreferencesMode, int resId, boolean readAgain)更加靈活的設(shè)置默認(rèn)值,注意readAgain參數(shù)。

public static void setDefaultValues(Context context, int resId, boolean readAgain)設(shè)置默認(rèn)值,注意readAgain參數(shù)。

public void setSharedPreferencesMode(int sharedPreferencesMode)設(shè)置當(dāng)前的mode。

public void setSharedPreferencesName(String sharedPreferencesName)設(shè)置當(dāng)前的name。

可以看見,這個類其實也沒啥介紹的,重點關(guān)注下setDefaultValues的幾個核心參數(shù)就行。如果我們的設(shè)置項很多,而且每項在代碼中都需要設(shè)置默認(rèn)缺省值,那就推薦使用setDefaultValues方法。在應(yīng)用第一次運行時,從preference的xml中獲取缺省值,并生成文件保存(如果已經(jīng)有一個SharedPrefferences對象,也會進(jìn)行更新,就像下面代碼中三四行對調(diào));不是第一運行就不會改現(xiàn)有保存值。

protected void onCreate(Bundle savedInstanceState) {    ......    PreferenceManager.setDefaultValues(this, R.xml.default_value, false);    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);     String option = prefs.getString("key", null); }12345

好了,控件使用就到這里了。

2-5 Preference控件家族實例

關(guān)于Preference控件家族的使用比較簡單,自定義網(wǎng)上也一大把,所以不再給出例子。如果你想看例子可以參考如下:

官方Settings設(shè)計原理。

Settings源碼。

其他的相關(guān)用法參考API及網(wǎng)絡(luò)例子。

【工匠若水 http://blog.csdn.net/yanbober 轉(zhuǎn)載請注明出處。點我開始Android技術(shù)交流】

3 Preference組件源碼設(shè)計簡單分析

扯蛋了這么多,唉,嘆個氣繼續(xù)吧,接下來就到了有意思的環(huán)節(jié),源碼結(jié)構(gòu)簡介。這里只是針對Preference控件特性介紹分析,不會過多追究View及Activity和Fragment細(xì)節(jié),具體View及Activity和Fragment細(xì)節(jié)后面會寫文章分析的。

3-1 PreferenceFragment源碼淺析

首先還記得上面基礎(chǔ)說了,PreferenceFragment使用第一步就是使用其內(nèi)部方法addPreferencesFromResource或者addPreferencesFromIntent設(shè)置源。所以這里我們以addPreferencesFromResource為例來說明,如下源碼:

//PreferenceFragment的方法public void addPreferencesFromResource(int preferencesResId) {    //判斷異常說明了該方法至少得在super.onCreate方法之后調(diào)運,以便初始化PreferenceManager    requirePreferenceManager();    //這個前面也介紹過的,設(shè)置根布局PreferenceScreen    setPreferenceScreen(mPreferenceManager.inflateFromResource(getActivity(),            preferencesResId, getPreferenceScreen()));}1234567

接著我們看下setPreferenceScreen方法源碼,如下:

public void setPreferenceScreen(PreferenceScreen preferenceScreen) {    //設(shè)置根布局到PreferenceManager里    if (mPreferenceManager.setPreferences(preferenceScreen) && preferenceScreen != null) {        //空方法        onUnbindPreferences();        //設(shè)置標(biāo)記,在onActivityCreated方法中有用        mHavePrefs = true;        //決定是否重設(shè)bind布局,核心都是為了執(zhí)行bindPreferences方法        if (mInitDone) {            postBindPreferences();        }    }}123456789

到此接下來就是bind了,至于在這里通過Handler發(fā)消息bindPreferences還是在onActivityCreated自動調(diào)bindPreferences方法取決于你把a(bǔ)ddPreferencesFromResource方法寫在那個生命周期方法里。如下我們直接來看bindPreferences方法,如下源碼:

//這個方法是搭建顯示的核心方法?。。。。。。。?!private void bindPreferences() {    //拿到PreferenceManager中存的根視圖PreferenceScreen    final PreferenceScreen preferenceScreen = getPreferenceScreen();    if (preferenceScreen != null) {        //傳遞當(dāng)前ListView到preferenceScreen的bind方法        preferenceScreen.bind(getListView());    }    //PreferenceFragment的空方法    onBindPreferences();}12345

到此可以看見PreferenceFragment里bind最終是交給了PreferenceScreen的bind來關(guān)聯(lián)PreferenceFragment的ListView與PreferenceScreen的ListAdapter。我們現(xiàn)在就來看下PreferenceScreen的bind源碼,如下:

//PreferenceScreen類的方法public void bind(ListView listView) {    //設(shè)置listview的item監(jiān)聽    listView.setOnItemClickListener(this);    //PreferenceScreen中bind的重點核心!?。。。。。。。。。。。〗olistview設(shè)置adapter    listView.setAdapter(getRootAdapter());    //一些register操作,忽略    onAttachedToActivity();}123456

好了,我們還是來關(guān)注這個adapter咋來的吧,如下就是getRootAdapter方法源碼:

public ListAdapter getRootAdapter() {    if (mRootAdapter == null) {        mRootAdapter = onCreateRootAdapter();    }    return mRootAdapter;}protected ListAdapter onCreateRootAdapter() {    return new PreferenceGroupAdapter(this);}1234567891011

終于真相快要大白了,PreferenceFragment的listview設(shè)置的adapter原來是PreferenceGroupAdapter。哈哈,我們繼續(xù)來看看這個類,如下:

//hide類,專門用來Preference的list顯示的adapterpublic class PreferenceGroupAdapter extends BaseAdapter        implements OnPreferenceChangeInternalListener {//省略相關(guān)屬性定義    ......    //構(gòu)造方法,傳入的是PreferenceScreen根布局    public PreferenceGroupAdapter(PreferenceGroup preferenceGroup) {        ......        //sync設(shè)置相關(guān)list列表數(shù)據(jù)后通知listview刷新        syncMyPreferences();    }    private void syncMyPreferences() {        ......        //通知listview刷新當(dāng)前準(zhǔn)備的Preference列表        notifyDataSetChanged();        ......    }    //省略一堆方法    ......    //notifyDataSetChanged后和普通adapter一樣item繪制會回調(diào)getView方法    public View getView(int position, View convertView, ViewGroup parent) {        //拿到當(dāng)前item的Preference組件        final Preference preference = this.getItem(position);        ......        //調(diào)運Preference的getView方法得到當(dāng)前item真正的view顯示,這是核心?。。。。。。。。。。。?       //關(guān)于Preference的getView方法下面分析Preference源碼會說到的,或者你可以直接跳到Preference源碼分析部分查看。        View result = preference.getView(convertView, parent);        ......        return result;    }    ......}1234567891011121314151617181920212223242526272829303132

到此你會發(fā)現(xiàn),其實無非就是ListView和Adapter的關(guān)系,而Adapter的getView所得到的View由Preference提供而已,而Adapter由PreferenceScreen管理而已。

3-2 PreferenceActivity源碼淺析

說到PreferenceActivity現(xiàn)在不推薦的addPreferencesFromResource方法時其實是沒啥解釋的,這種模式現(xiàn)在被官方推薦通過PreferenceFragment的addPreferencesFromResource來實現(xiàn),所以也就是說關(guān)于PreferenceActivity的addPreferencesFromResource方法(也就是在PreferenceActivity中直接添加Preference組件)其顯示原理和上面分析的PreferenceFragment是一樣的,所以這里就不再過多解釋了。

我們把重點放在loadHeadersFromResource方法上,也就是現(xiàn)在推薦的PreferenceActivity放置Headers模式。接下來就來分析分析吧。

public abstract class PreferenceActivity extends ListActivity implements        PreferenceManager.OnPreferenceTreeClickListener,        PreferenceFragment.OnPreferenceStartFragmentCallback {......    //省略一堆方法    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //設(shè)置基礎(chǔ)布局        setContentView(com.android.internal.R.layout.preference_list_content);        //獲取一些ContentView里的控件實例        ......        //判斷是啥模式,左右展示還是單頁        boolean hidingHeaders = onIsHidingHeaders();        mSinglePane = hidingHeaders || !onIsMultiPane();        //獲取fragment參數(shù)(其實是PreferenceActivity中點擊Header item重啟PreferenceActivity時傳遞的)        String initialFragment = getIntent().getStringExtra(EXTRA_SHOW_FRAGMENT);        Bundle initialArguments = getIntent().getBundleExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS);        int initialTitle = getIntent().getIntExtra(EXTRA_SHOW_FRAGMENT_TITLE, 0);        int initialShortTitle = getIntent().getIntExtra(EXTRA_SHOW_FRAGMENT_SHORT_TITLE, 0);        if (savedInstanceState != null) {            ......  //忽略,非重點主線        } else {            if (initialFragment != null && mSinglePane) {                //SinglePane時有參數(shù)則替換顯示Fragment                switchToHeader(initialFragment, initialArguments);                ......            } else {                //核心方法之一?。。。。。。。。。。?!                //記得上面基礎(chǔ)使用介紹過嗎?新的實現(xiàn)重寫onBuildHeaders空方法,在其中                //調(diào)運loadHeadersFromResource方法加載header list xml文件                onBuildHeaders(mHeaders);                //如果存在header list則走這里(上面onBuildHeaders里會組織生成mHeaders的list結(jié)構(gòu))                if (mHeaders.size() > 0) {                    //header-fragment左右各半屏模式                    if (!mSinglePane) {                        if (initialFragment == null) {                            //設(shè)置顯示header                            Header h = onGetInitialHeader();                            switchToHeader(h);                        } else {                            //設(shè)置顯示header及fragment                            switchToHeader(initialFragment, initialArguments);                        }                    }                }            }        }        if (initialFragment != null && mSinglePane) {            //當(dāng)SinglePane加載的是Fragment時隱藏header,顯示fragment            findViewById(com.android.internal.R.id.headers).setVisibility(View.GONE);            mPrefsContainer.setVisibility(View.VISIBLE);            ......        } else if (mHeaders.size() > 0) {            //重點!?。。。。。。。。。。。。。。?!這就是要分析的header的listview的adapter放置地            setListAdapter(new HeaderAdapter(this, mHeaders));            ......        } else {            //這就是最原始的供已經(jīng)不推薦的addPreferencesFromResource方式加載Preference組件了            //具體原理同上PreferenceFragment的加載顯示原理了,不再分析            setContentView(com.android.internal.R.layout.preference_list_content_single);            ......        }        //其他初始設(shè)置        ......    }}123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354

通過上面的分析可以看見其實對于Header的adapter核心就是setListAdapter(new HeaderAdapter(this, mHeaders));這句代碼。那我們就來看看這個內(nèi)部類HeaderAdapter,源碼如下:

//可以發(fā)現(xiàn)PreferenceActivity的內(nèi)部類HeaderAdapter是繼承自ArrayAdapter的,//這個Adapter就是用來給推薦的Header list的listview提供數(shù)據(jù)的。private static class HeaderAdapter extends ArrayAdapter {//Holder里只有最典型經(jīng)典的三個組件    private static class HeaderViewHolder {ImageView icon;        TextView title;        TextView summary;    }    private LayoutInflater mInflater;    //構(gòu)造方法,不解釋    public HeaderAdapter(Context context, List objects) {        super(context, 0, objects);        mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);    }    //最最核心方法?。。。。?!Header list被顯示到PreferenceActivity的listview關(guān)鍵點    @Override    public View getView(int position, View convertView, ViewGroup parent) {        HeaderViewHolder holder;        View view;        //再常見不過的Adapter數(shù)據(jù)加載ViewHolder寫法了        if (convertView == null) {            //加載header的item布局,都是用的preference_header_item文件,如下會介紹            view = mInflater.inflate(com.android.internal.R.layout.preference_header_item,                    parent, false);            holder = new HeaderViewHolder();            holder.icon = (ImageView) view.findViewById(com.android.internal.R.id.icon);            holder.title = (TextView) view.findViewById(com.android.internal.R.id.title);            holder.summary = (TextView) view.findViewById(com.android.internal.R.id.summary);            view.setTag(holder);        } else {            view = convertView;            holder = (HeaderViewHolder) view.getTag();        }        //一堆顯示,通過getItem(position)拿到構(gòu)造里傳入的List類型objects的item        // All view fields must be updated every time, because the view may be recycled        Header header = getItem(position);        holder.icon.setImageResource(header.iconRes);        holder.title.setText(header.getTitle(getContext().getResources()));        CharSequence summary = header.getSummary(getContext().getResources());        if (!TextUtils.isEmpty(summary)) {            holder.summary.setVisibility(View.VISIBLE);            holder.summary.setText(summary);        } else {            holder.summary.setVisibility(View.GONE);        }        return view;    }}1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253

可以看見這個adapter的getView中的item核心是加載了一個preference_header_item的xml文件,然后設(shè)置作為item的header。這個xml源碼如下:

12345678910111213141516171819202122232425262728293031323334353637383940414243444546

哈哈,到此就不在解釋啥了,很直觀了,就是這么任性,就是這么簡單的實現(xiàn)了Header List的顯示。

3-3 Preference源碼淺析

說這個的原因是上面PreferenceFragemnt分析加載設(shè)置adapter的getView方法時留下的歷史問題。我們先來看看這個文件的核心代碼,后面總結(jié)串起來你就明白了,如下源碼:

//可以看見,他不是一個View,但是組合管理了一個View和PreferenceManagerpublic class Preference implements Comparable{......    //各種屬性    ......    private PreferenceManager mPreferenceManager;    //重點關(guān)注,和自定義及Preference顯示原理息息相關(guān),preference就是下面列出的xml資源    private int mLayoutResId = com.android.internal.R.layout.preference;    private int mWidgetLayoutResId;    ......    //各種getXXX及setXXX方法    ......    /**     * Gets the View that will be shown in the {@link PreferenceActivity}.     * 獲取Preference的item顯示view     */        public View getView(View convertView, ViewGroup parent) {                if (convertView == null) {                convertView = onCreateView(parent);                }                onBindView(convertView);                return convertView;        }    protected View onCreateView(ViewGroup parent) {        final LayoutInflater layoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);        final View layout = layoutInflater.inflate(mLayoutResId, parent, false);         final ViewGroup widgetFrame = (ViewGroup) layout.findViewById(com.android.internal.R.id.widget_frame);        if (widgetFrame != null) {            //mWidgetLayoutResId有專門的set方法可以設(shè)置或者重寫            if (mWidgetLayoutResId != 0) {                //android:id/widget_frame為mWidgetLayoutResId所對應(yīng)的布局預(yù)留空間插入                layoutInflater.inflate(mWidgetLayoutResId, widgetFrame);            } else {                //默認(rèn)實現(xiàn)是null的                widgetFrame.setVisibility(View.GONE);            }        }        return layout;    }    /**         * Binds the created View to the data for this Preference.         ** This is a good place to grab references to custom Views in the layout and         * set properties on them.         *         */        protected void onBindView(View view) {        //設(shè)置子View相關(guān)屬性                final TextView titleView = (TextView) view.findViewById(com.android.internal.R.id.title);                if (titleView != null) {                    final CharSequence title = getTitle();                    if (!TextUtils.isEmpty(title)) {                            titleView.setText(title);                            titleView.setVisibility(View.VISIBLE);                    } else {                            titleView.setVisibility(View.GONE);                    }                }        ......        //類似的各種子View設(shè)置操作,不再列出        }    ......}12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596

可以看見,這個getView其實就是上面PreferenceFragment分析中Adapter中g(shù)etView調(diào)運的Preference的getView。怎么樣,串起來吧。也就是說Preference不是View,但是他提供View給ListView的每一個Item顯示,其提供的View的基類布局(上面Preference類中mLayoutResId屬性的值)如下:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556

哈哈,不用解釋了吧,這下相信你可以將前面基礎(chǔ)使用和源碼分析幾部分完全串起來理解了吧。

3-4 Preference組件家族源碼分析總結(jié)

通過上面分析可以知道Preference其實不是View,但是其內(nèi)部創(chuàng)建管理了一個View(ListView的item,被Adapter的getView通過Preference.getView方法獲得顯示)。

可以看出來,上面我們分析Preference的onCreateView、getView、onBindView這幾個方法其實是整個Preference組件顯示等的核心方法,所以正如系統(tǒng)提供的Preference的各種實用子類一樣,當(dāng)我們想自定義Preference的時候完全可以重寫這些方法來得到自己的各種自定義View,這樣就完美的解決了代碼的擴(kuò)展性,我們不用去修改ListAdapter的實現(xiàn)就能實現(xiàn)自定義的Preference,所以說可見Google的工程師在設(shè)計Preference結(jié)構(gòu)時是多么的牛叉,不得不膜拜。

【工匠若水 http://blog.csdn.net/yanbober 轉(zhuǎn)載請注明出處。點我開始Android技術(shù)交流】

4 Preference組件家族總結(jié)

題外話:其實這篇文章是受我一個朋友邀請幫忙寫的。還記得去年年初我在上家公司(做Android盒子)負(fù)責(zé)修改一個項目的Settings源碼,添加一個屏幕縮放功能在Settings里面。后來做好以后維護(hù)轉(zhuǎn)手給了別人,當(dāng)時別人是個新手,各種問。所以落下后遺癥,于是乎就在邀請之下打算寫了這一系列兩篇文章,以幫助快速上手原生Settings的修改。

其實沒啥總結(jié)的,還記得前段時間在網(wǎng)上看見有人吐槽Preference是google設(shè)計的一個失敗品,一點也不好用啥的。其實我想說Preference的設(shè)計還是不錯的,是值得借鑒的,隨便舉個例子如下:

在布局設(shè)計上可以保持統(tǒng)一預(yù)留差異區(qū)域供自定義動態(tài)插入,達(dá)到復(fù)用的目的。

在實現(xiàn)listView各個item不同的Adapter的getView方法時不用像傳統(tǒng)那樣if-else或者switch操作,而是預(yù)留一個基類用于實現(xiàn)回調(diào),這樣更加靈活。

其他的慢慢體會就行了。

責(zé)任編輯:

標(biāo)簽:

相關(guān)推薦:

精彩放送:

新聞聚焦
Top 国产视频污污污在线观看| 亚洲制服丝袜日韩欧美制服| 亚洲va欧美va人人爽2| 一区二区三区四区无人区| 在线亚洲视频免费看| 成人av在线播放老熟妇| 国产视频在线观看一区二区极品 | 国产免费午夜精品视频| 好好的日com中文视频| 有故事情节的美女免费日逼视频| 中文av字幕在线观看| 亚洲夫妻另类在线视频| 美女福利在线免费观看| 男人日女人鸡鸡天天视频官方| 瑟瑟视频在线网站免费观看| 亚洲精品一区二区三区av| 日本性生活视频观看免费| 深夜福利视频一区二区| 国产精品网站一区在线观看| 97久久超碰成人精品网页91 | 亚洲 自拍 色综合图区av网站 | 亚洲精品视频在线99| 大逼小逼操大屌视频| 熟女国产一区二区三区| 日韩毛片免费视频观看| 天天干天天操天天射天天日| 成人av在线国产精品| 日韩黄色a影视在线免费观看网站| 中文字幕人妻二区三区免费视频| 丰满熟妇人妻一区二区三区| 91国语对白精彩在线视频| 国产老妇女免费视频| 少妇高潮一区二区三区在线| 天天综合网精品视频天天看| 91九色popny人妻| 亚洲一区二区婷婷久久| 亚洲熟女国产午夜精品| 蜜桃少妇视频在线观看| 中国男人肏女人大屄的视频| 国产老头视频在线观看| 男女裸交无套啪啪激情高潮| 亚洲码欧洲码在线观看| 91国语对白精彩在线视频| 亚洲在线视频一区二区| 国产午夜精品1区2区3区| 日韩一级片黄色av| 东京不太热在线观看视频| 中文在线播放一区二区三区| 强d乱码中文字幕熟女导航| 国产美女在线极品美女网站| 18免费1000视频国产| 色五月婷婷综合国产在线| 日本午夜色视频在线观看| 97se狠狠狠狠狼鲁亚洲综合色| 2022国产情侣在线视频播放| 超级黄的有肉视频在线观看| av资源最新版在线天堂| 51国精产品一区二区三| 亚洲成电影在线观看青青| 熟女国产一区二区三区 | 天天色天天操天天色综合| 啪啪啪在线观看免费视频| 嗯啊好想要插我视频| 在线观看国产剧情av| 久久香蕉欧美日韩av蜜桃| 日本丰满老熟妇bbw| 日本阿v片中文字幕在线| 久久久久免费特级黄片| 日产国产亚洲精品系列p| 少妇丰满一区一二区视频社区 | 久久久久久久国产黄色片| 日韩美女av电影网| 78m中文字幕在线观看| 亚洲午夜激情视频在线播放| 东京一区二区三区av在线| 99视频精品在线免费观看| 亚洲高清码在线精品av| 亚洲欧美清纯另类图片小说| av蜜臀免费在线观看| 亚洲午夜短视频在线| 国产青青自拍视频在线观看看| 欧美一级特黄大片做受日本| 九一欧洲国产无码在线| 精品久久久久久成人| 亚洲综合熟女久久30p| 国产精品国产自产拍在线| 久久精品乱码中文字幕| 国产亚洲精品久久久久久电影 | 色尼玛图片亚洲综合| 最新黄色天堂av在线资源| 日本人妻偷人妻中文字幕| 中文热免费在线视频| beeg欧美丰满人妻| 人妻熟女中文字幕电影| 国产主播在线观看一区二区| 538精品新视频在线观看| JK白丝喷白嫩嫩久久久| 2019天天操天天日天天射| 清纯国模自拍视频在线观看| 美女被插免费视频网站| 男人把女人桶到爽午夜视频| 白丝骚逼美女被操到逼水直流| 国产大女露脸自拍大叫| 免费观看亚洲欧洲在线视频| 亚洲影视精品一区二区| 美女厕所撒尿偷拍视频| 蜜桃亚洲av优女av综合久久久| 人妻 日韩 欧美 综合 制服| 午夜福利92一区二区三区久久| 日本熟艳妇A站黄色视频| 美女被鸡操黄片入口| 91免费在线播放视频| 91九色黑丝长腿美女| 日韩三级 欧美精品| 91午夜免费在线视频| 91精品丝袜久久久| 免费观看日本伦理片| av资源最新版在线天堂| 日韩精品久久日日躁夜夜躁| 护士色视频亚洲婷婷| 亚洲欧美码免费观看视频| 亚洲综合网男人的天堂| 国内人妻自拍视频在线| 97超碰在线资源总站 | 蜜桃人妻av2023| 丝袜 制服 国产 欧美 日韩| 男生捅女生逼的免费视频软件| 亚洲av狠狠的爱一区二区| 天堂av2025一区| 国产av办公室丝袜在线| 性色av不卡一区二区三区 | 亚洲最大的中文字幕在线| av黄片网站在线观看| 日本丰满人妻免费电影| 美女福利在线观看视频| 超碰青青草原免费在线观看97| 在线精品视频这里只有精品| 538精品视频国产| 成人区人妻精品一区二区不卡蜜臀| 91社区男人都懂的网站| www人妻一区二区| 欧美专区在线观看视频| 91九色在线视频入口| 欧美图区一区二区三区| 中文字幕亚洲专区婷婷| 国产精品久久久免费99| 亚洲av日韩美aⅴ| 国产精品久久久久久电| 娇小型av优女大全| 天天草天天日天天舔| 蜜桃亚洲av优女av综合久久久| 日本99精品一区二区三区| 欧美日韩性生活视频在线| 亚洲情色在线视频播放| 成年大片免费视频播放二级| 国产在线观看XXXXX| 日本女人牲交的视频| 美女摸自己下面出白浆的视频| 欧美乱码卡1卡二卡3卡4| 久久ri精品诱惑日韩| 欧美国产一级在线免费观看| 又大又黄又粗又爽少妇毛片| 麻豆免费成人小视频| 国产91福利在线导航| 在线精品亚洲欧美日韩| 亚洲午夜激情视频在线播放| 人妻天天爽夜夜爽2区蜜a∨| 99精品国产九九国产精品| beeg欧美丰满人妻| 特黄特黄的日韩爽大片| 亚洲精品视频在线蜜桃| xxxxxx日本少妇| 亚洲国产精品久久久久秋霞1| 天堂av在线一区少妇| 国产+精品+在线观看| 中文字幕乱码精品一区二区三区 | 超碰国产极品尤物在线| 草草影院色视频免费在线观看| av熟女40到50岁名字| 国产精品亚洲av国产| kendralust熟女少妇| 亚洲欧美综合一区二区三区四区| 美日韩黄色一级视频| 国产交换乱淫99视频| 一级视频在线观看高清国产免费| 91九色国产自拍视频| 亚洲情色成人一二三区| 国产婷婷综合丁香亚洲欧洲| 中文热免费在线视频| 日韩中文字幕色资源| caoporm超碰97| 成人av毛片免费观看| 一区二区性视频在线观看 | 特黄把女人弄爽又大又粗| 狠狠综合久久亚洲av蜜臀| 小岳母在线观看完整版| 91久久久久久久电影| 欧美亚洲国产激情在线| 中文字幕欧美人妻精品精品| 超碰av在线一区二区三区| 日韩一级片黄色av| 国产老妇女免费视频| 日韩夫妻性生活视频在线观看免费| 久久精品乱码中文字幕| 黄色av网址免费观看| 日本成人av在线免费看| gogo大尺度二区三区| 亚洲免费不卡一区二区三区| 人妻 日韩 欧美 综合 制服| 欧美精品日韩不卡免费| 天天搡天天狠天干天| 亚洲av蜜臀在线观看| 亚洲久久久久久久久| 美女很黄很色国产av| 天天综合网精品视频天天看| 91精选一区二区三区四区| 粉嫩玉足夹茎视频在线看| ww久久久久国产喷水18禁| 91黄色大全免费观看| 国产av剧情网址大全| 天天干天天谢天天操| 在线观看视频一区二区精品| 免费精产国品一二三产区区大学生| 91午夜免费在线视频| 日本aaaaa特黄| 中文一区二区在线播放| 六十六节医疗保健操全套| 天堂久久精品无码一区二区| 天堂av2025一区| 天天操天天摸天天添| 把鸡鸡伸进去的视频| 18禁止看免费120秒试看| 亚洲中文字幕综合av一区| 亚洲国产欧美日韩综合| 中文字幕超碰18区| 99精品国产九九国产精品| 17c久久精品国产亚洲av蜜柚| 狠狠添狠狠添狠狠添免费出高潮水 | 福利视频一二三在线视频免费观看| 插美女阴道流水视频| 天天插天天干天天爽| 制服中文丝袜国产日韩另类| 天天操日日干夜夜射| 欧美大香蕉一区二区三区| 日韩精品视频网站免费观看| 精华液一区二区区别| 天天草天天日天天舔| 国产精品久久乱码无人区| 紫川动漫在线观看免费完整版| 99久久久久久久久96久久| 国产高清精品福利私拍国产写真| 婷婷国产一区二区三区| 国产黄色片在线观看网站| 五月激情网激情五月| 最新久久久久久久久久久| av熟女乱一区二区三区| 色狠狠久久vs北条麻妃av| 亚洲最大第八色在线视频| 91在线视频免费亚洲| 免费观看黄片视频91| 91福利在线观看免费| 人妻少妇精品视中文字幕国语| 日本a v中文字幕网| 亚洲国产综合精品中文字幕| 人人妻人人澡人人爽dv| av在线播放网址大全| 最新黄色天堂av在线资源| 亚洲图片av伦理三级| 欧美极品少妇αv另类| 韩国美女视频在线观看18+| 少妇人妻肉欲短视频| 日本成人av在线免费看 | 黑人巨大欧美一区二区视频| 国产91边对白在线播放| 午夜精品婷婷午夜精品| 成年永久免费播放平台| av熟女40到50岁名字| 国产中文字幕88av| 欧美日韩精品亚洲欧美| 日日日日日日日夜夜夜夜夜| 亚洲国产精品午夜福利久久| 欧美一区二区三区视频在线观看| 中文字幕=中文字幕| 欧美精品色呦呦首页| 中文字字幕在线中文乱码2019| 日韩三级 欧美精品| 天天干天天日少妇网| 2017在线免费观看中文a| 国产99热这里有精品| 日本在线观看公司入口视频| 欧美精品视频一卡二卡| 伊人成人综合小说网| 成人涩涩小片视频日本| 精品国精品国自产在产国产| 国产寡妇又爽又紧又湿视频| 国产一级特黄aaa片做受小说| 亚洲精品av成人在线观看| 亚洲男人平均性生活时间| 国产三级中文字幕av| 女人的小鸡鸡真人免费视频| 欧美亚洲自拍偷拍xxx| 久久久久一区二区三区四区| 亚洲 欧美视频在线| 一色桃子av人妻熟女完整版| 免费国产一区二区三区在线播放| 国产精品va在线观看老妇女| 97人妻少妇熟女av| 熟妇高潮喷水在线120p| 91精品在线观看视频| 免费一级特黄特色大片88av| 成人污视频在线免费观看网址| 精品人妻一二三区更新| 黄片一级黄片一级黄片| 日韩欧美精品熟妇视频播放| 蜜臀国产精品久久久久久 | 人妻熟女–第2页–无名网| 老太熟妇乱淫aaaaa片免费| 亚洲情色成人一二三区| 伊人婷婷视频在线观看| 青青国产成人在线看| 高潮少妇高潮久久精品99| 国产区精品一区二区不卡中文| 最新国产剧情在线一区| 亚洲另类校园春色小说| 免费观看男人操逼的操女人的| 久久免费视频精品8| 日本99精品一区二区三区| 女人的小鸡鸡真人免费视频 | 国产最好看的特效大片av| 亚洲欧美另类离制服丝袜| 人妻出轨av中文字幕| 2022国产情侣在线视频播放| 狠狠综合久久亚洲av蜜臀| 国产精品久久性欧美| 啪啪啪在线免费视频| 91tsav人妻国产| 白丝骚逼美女被操到逼水直流| 日本a v中文字幕网| 日本精品一区二区三区四区| 成人区人妻精品一区二区不卡蜜臀| 亚洲狠狠婷婷久久综合| 中文av字幕在线观看| 超碰97在线观看免费| 蓝莓小视频在线观看| 最近的中文字幕一区二区| 中文字幕乱码人妻在线观看| 精品国产专区91精品| 在线能看的网站你懂得| 国产又粗又猛又大爽又黄香借| 人妻熟妇久久久久久xxx| 人妻少妇资源网av| 国产55夜色66夜色男人的天堂| 韩国三级国产精品一区| 91瑟瑟视频在线观看| 日本老熟女人体艺术| 日本午夜色视频在线观看| 538精品新视频在线观看| 人人爽人人爽人人妻| 精品久久久福利国产| 91久久人澡人妻天天做天天爽| 超碰97人妻中文字幕| 中文字幕 亚洲轻轻av| 亚洲综合熟女久久30p| 特黄特黄的日韩爽大片| 在线免费观看国产欧美日韩| caoporm超碰97| 国产美女在线极品美女网站| 黄色片在线免费观看日韩不卡| 真人一级一97片成人片| 三级黄色在线播放网站| 精品国精品国自产在产国产| 露臀裙后入在线视频| 亚洲女子4x100米接力决赛| 999久久久91一区二区| 中文字幕在线观看一二三四| 久久综合精品五月天| 9久久久久久久久久久| 亚洲经典国产一区二区三区 | 天天日,天天干,天天舔| 99久久99久久综合| 在线免费观看精品一区| 91popny熟女九色| 久久久久一区二区三区四区| 好色av一区二区三区四区| 国产主播精品在线一区| aaa夜夜夜精品视频| 啪啪啪在线观看免费视频| 亚洲欧美综合一区二区三区四区| 欧美亚洲综合另类清纯自拍| 亚洲黄片在线免费播放| 538精品新视频在线观看 | 五月天中文字幕亚洲| 美女少妇一区二区久久久| 国产午夜精华视频在线| 日本国产一区二区三区视频| 日韩欧美精品熟妇视频播放| 久久精品aⅴ无码中文字字幕蜜桃| 日本国产福利视频在线观看| 亚洲夫妻另类在线视频| 少妇高潮一区二区三区在线| 色狠狠久久vs北条麻妃av| 2022国产情侣在线视频播放| 中文字幕久久久aⅴ大片| 日本一区二区三区高清在线| 亚洲高清码在线精品av| 亚洲最新欧美偷拍视频| 成年人午夜网站在线播放| 中文字幕日韩一二区| 色综合亚洲一区二区小说性色aⅴ| 亚洲在线中文字幕av| 黄色片网站国产精品| 亚洲黄色片免费在线| 午夜欧美熟妇综合在线视频| 最新日韩成人av电影| 在线观看的a站视频| 99热在线都是精品免费| 99国产热精品在线观看| 77777色婷婷av一区二区三| 各种玩小处雌女视频| av自拍偷拍一区二区| 成人中文字幕在线高清 | 538精品新视频在线观看| 麻豆电影国产一区在线观看| 麻豆免费成人小视频| 男人的天堂在线免费av| 亚洲熟妇少妇一区二区| 忘忧草精品久久久久久久高清| 天天爱天天插天天射| 午夜激情片免费在线观看| 91精品一区二区三区蜜桃| 中文字幕一区二区三区四区五区人| 日本亚洲综合伊人久久| 五月天久草亚洲香蕉| 老司机福利在线免费观看视频| 凹凸视频这里只有精品| 在线观看麻豆免费视频| 一区二区三区日韩高清| 日本a v中文字幕网| 大逼小逼操大屌视频| 国产欧美亚洲精品第一页青草| 五月婷婷六月久久久| 国产精品久久久久久无码不卡| 国产精品制服诱惑丝袜的| 亚洲黄色小视频网址| 国内自拍偷拍视频第一页| 无套内射黑丝美女91| 日本阿v片中文字幕在线| 一区二区性视频在线观看| 亚洲夫妻另类在线视频| 亚洲大胆综合在线观看| 少妇高潮一区二区三区在线| 久久永久免费专区人妻| 青青操一区二区三区| 国产在线观看av专区| 国产又粗又猛又大爽又黄香借| 99成人自拍视频在线观看| 韩国电影年轻的妈妈7| xxxxxx日本少妇| av中文字幕 中文字幕第一页| 91麻豆精品国产综合久久久主演| xxx一区二区三区在线观看| 欲求不满的邻居人妻一区二区三区| 日本老熟女人体艺术| 婷婷国产一区二区三区| 精品国产污污污免费网站入口| 成年大片免费视频播放二级| 日本性生活视频观看免费| 中文字幕亚洲亚洲激情| 亚洲情色欧美日韩在线| 日本午夜色视频在线观看| 忘忧草精品久久久久久久高清| 内地伦理片在线免费观看播放| 人妻性奴隶免费观看| 亚洲和黑人特黄色片| 国产免费公开视频在线播放| 超碰人人综合网97| 制服诱惑,日韩情色| 亚洲国产综合精品中文字幕| 最新黄色天堂av在线资源| 放荡的丝袜美腿护士老师| 日韩妹子精品视频在线观看| 国产av在线播放免费| 中文字幕日产av一二三区| 亚洲国产自拍偷拍精品| 欧美另类视频第二页| 超碰av在线一区二区三区| 精品人妻一二三区更新| 欧美av在线观看网址| 日本特黄免费一级大片| 看国产剧的免费软件| 在线免费观看亚洲v| 免费一级特黄特色黄录像| 蜜桃少妇视频在线观看| 水蜜桃在线视频一区二区三区| 日本jizzjizz少妇| 无码丝袜人妻高跟鞋| 黄色av网址免费观看| 全国最大成人 中文字幕| 一区二区三区日韩高清| 中文在线播放一区二区三区| 99久久99久久综合| 91精品久久久久久久99蜜臀| 国产加勒比高清无码在线视频 | 夜夜色视频在线观看| 桃子av在线免费观看| 中文字幕亚洲天堂av在线| 亚洲精品久久中文字幕| 91精品综合一区二区三区| 污视频免费网站观看| 中文字幕亚洲精品八区| 中文字幕日韩一二区| 人妻欧美制服中文字幕| 在线 国产区 视频| 欧洲老妇人一区二区三区| 免费观看黄片视频91| 色姑娘天天干天天操| 亚洲天堂中文字幕手机在线 | 夜夜撸夜夜干夜夜操| 婷婷热re99久久精品国产| 国产在线观看av专区| 欧美日韩激情图片视频另类| 中文字幕中文字幕一区三区| 色姑娘天天干天天操| 日韩一二三在线视频播放 | 亚洲国产av自拍网站| 久久古典武侠第1页777 | 欧美日韩精品免费看| 亚洲高清码在线精品av| 中文字幕日韩一二区| 久久综合精品五月天| av色综合久久天堂av…| 宅男视频在线观看视频| 男人的天堂av成人网| 在线亚洲视频免费看| 少妇张开腿让我爽了一夜视频| 亚洲国产成人久久无码| 国产性感美女诱惑免费av| 老司机福利在线免费观看视频| 沈惊觉白小小免费看全集| 丰满的人妻免费在线观看| 亚洲另类校园春色小说| 日韩一二三在线视频播放| 精品国精品国自产在产国产| 91国语对白精彩在线视频| 国产自拍福利视频在线观看| 欧美亚洲另类综合网| 欧美色视频日本片免费看| 九色视频在线观看网址| 人妻少妇精品视频在线观看| 色婷婷综合久久久久中文一区二区 | 国产无套水多大学生性色AV| 亚洲地址一区二区三区四区| 男女裸交无套啪啪激情高潮| 美日韩黄色一级视频| 日本99精品一区二区三区| 亚洲人成在线1国产盗拍| 日韩欧美亚洲第五页| 玩弄放荡人妻少妇免费视频| 国产精品久久久久久电| 男人的j插进女人的逼| 91精品丝袜一区二区| 国产一级久久久久高清版| 在线观看的a站视频| 91超碰在线播放视频| 一区二区在线欧美日韩中文| 亚洲一区二区三区视频免费观看| 欧美另类视频第二页| 精华液一区二区区别| 亚洲精品日韩中文久久91| 日本久道久久综合狠狠老| 成人av中文字幕网址| 国产97在线观看视频| 免费看亚洲av的网站| 成人在线视频日韩国产| 国产亚洲精品137片内射| 国产又长又粗又硬又爽免费视频| 天天操日日干夜夜操| 初撮日本五十路人妻| 男人插女人逼视频播放| 欧洲亚洲国产永久精品| 亚洲黄色小视频网址| 人妻少妇久久中文字幕密拍| 午夜小视频免费在线| 人人爱精品人人艹人人干| 亚洲一级中文字黄色片| 亚洲人成网站在线播放| 欧美精品视频一卡二卡| 玩弄饥渴放荡美熟妇岳| 国产亚洲精品免费观看| 日本99精品一区二区三区| 4438x视频在线| 四季av在线一区二区三区| 99久久无色码中文字幕免费| ass亚洲熟妇熟女pics| 宅男视频在线观看视频| 大香蕉在线欧美观看| 天堂av在线一区少妇| 人妻欧美制服中文字幕| 亚洲AV永久青草无码士清品| av中文字幕巨乳人妻| 大胸美女黄网站色片大全亚洲 | 污视频免费网站观看| 亚洲日韩色欧另类欧美色吊丝| 精品少妇人妻大乳av| 青青青在线视频免费观看手机版| 香蕉视频免费看国产精品| 亚洲无码免费一二三区视频 | 超级碰免费人妻97| av熟女40到50岁名字| 欧美一卡二卡3卡4卡无卡十| 韩国美女主播福利在线| 51国精产品一区二区三| 91社区男人都懂的网站| 免费观看亚洲女同性恋一区二区| 日本少妇人妻xxxxx16| 97精产国品一二三产区区| 韩国电影年轻的妈妈7| 男人的j插进女人的逼| 国产精品自产拍在线观| 欧美色视频日本片免费看| 九色porny蝌蚪少妇| 国产av电影网毛片| 国产视频污污污在线观看| 99成人自拍视频在线观看| 日本aaaaa特黄| 人妻ol未亡人中文字幕| 在线视频成人青青草久热| 男插女下面真人视频| 午夜小视频免费在线| 国产91色婷婷手机在线| 都市激情中文字幕蜜桃| 日本一区二区三区成人| 99精品国产免费电影| 人妻ol未亡人中文字幕| 天天操日日干夜夜射| 亚洲国产成人一区二区久久久| a在线观看免费久不卡精品| 天天透天天插天天日| 91青青青青艹视频在线观看| 999久久久91一区二区| 国产名人亚洲视频中文字幕| 日本一区二三区好的精华液 | 欧美日韩精品亚洲欧美| 国产中文字幕88av| 国产女主播av在线播放观看| 美女精品一区二区三区| 桃子av在线免费观看| 人妻性奴隶免费观看| 97精品视频久久久久| 天天操天天摸天天添| 密臂av性久久久久蜜臂av| 99偷拍精品一区二区| 国产日韩欧美高清无网码| 日韩精品免费人成视频| 国产精品综合自拍第一页| 亚洲美女啪啪邪恶视频| 日本精品一区二区三区四区| 无套内射黑丝美女91| 少妇人妻肉欲短视频| 久久热免费在线观看视频| 人妻女教师的沦陷大明| xxxxxx日本少妇| 天堂久久精品无码一区二区| 国产精品一级片免费看| 国产加勒比高清无码在线视频 | av色综合久久天堂av…| 人妻少妇麻豆中文字幕久久精品| 精品国产不卡在线观看免费| 插屁眼在线免费视频| 亚洲免费不卡一区二区三区| av中文字幕巨乳人妻| 男女视频一区在线观看| 床戏高潮呻吟声片段大全| 精品国产精品国产免费| 在线视频在线观看你懂的| 99久久无色码中文字幕免费| 91精品久久久久久久免费看| 国语自产精品视频在线看一大j8 | 亚国产亚洲亚洲精品视频| 国产欧美亚洲精品第一页青草| 亚洲情色成人一二三区| 真实国产乱子伦一区| 熟妇av一区二区三区| 中文字幕中文字幕一区三区| 美女爽爽午夜作爱视频1314| 欧美色视频日本片免费看| 精品久久久久久成人| 日本伊人中文字幕在线| 这里只有精品99视频| 视频免费在线观看网| 亚洲情色成人精品视频| 国产性感美女诱惑免费av| 天天干天天干天天操天天日| 大胸美女黄网站色片大全亚洲| 黄色的视频黑丝网站| 中文字幕av不卡一区二区| 蜜桃精品噜噜噜av| 狠狠操狠狠操狠狠搞| 亚洲另类校园春色小说| 人妻欧美制服中文字幕| 国产成年无码av片在线| 国产加勒比高清无码在线视频| 视频一区二区亚洲欧美| 国语自产精品视频在线看一大j8| av男人天堂网在线观看| 少妇视频播放在线播放免费观看| 99久久人妻精品免费②区| 人人妻,人人干,在线| 日本黄色录像第1部播放器播放| 欧美专区在线观看视频| 大香线蕉视频在线观看75| 亚洲国产成人爱av网站| 九色91在线只有精品| 免费观看日本伦理片| 插屁眼在线免费视频| 一区二区三区精品久久人妻| 中文字幕一二区二三区人妻专区| 亚洲av蜜臀在线观看| 91中文字幕yellow| 99久久无色码中文字幕免费| 日韩一区=区三区四区| 鲁久久无码五月天有码| 97超碰资源在线播放| 久久av四色米奇影视| 男人插女人逼视频播放| 老熟妇乱一区二区三区| av蜜臀一区二区三区| xxxxxx日本少妇| 中文字幕一区二区三区四区五区人| 爱妃视频av一区二区| 日韩毛片在线观看网站| 好色av一区二区三区四区| 亚洲一二三区免费视频| 精品人妻天天爽夜夜爽| 午夜久久在线观看视频| 久久日99久久里面有精品| 成年人午夜网站在线播放| 国产一区二区三区在线资源| 日韩av专场一区二区| 精品成人一区二区三区四区影视| 色综合亚洲一区二区小说性色aⅴ| 国产成年人性生活视频| 欧美大屁股撅起来射精视频| 少妇花园流浆嗯嗯张开视频| 亚洲中文有码字幕青青| 一区二区三区精品久久人妻| 色婷婷综合久久精品一区二区三区| 国产91边对白在线播放| 亚洲一级精品久久久蜜桃| 天天日天天操天天干天天舔天天射| 日产精品免费一区二区三区| 东京热tokyo黑人系列| 玩弄人妻少妇精品视频在线| 青青久在线观看免费视频| 少妇被无套内谢免费观看| 日本一卡不带卡的视频| 中文字幕一区久久性色| 亚洲男人天堂2025| 欧美亚洲污视频网站| 美女和猛男诱惑操逼捅鸡鸡| 99热在线这里只有精品| 五十六十日本老熟妇牲| 免费在线观看成人激情视频| 国产精品制服诱惑丝袜的| 成人免费xxxx在线| 亚洲av乱码国产精品观看麻豆| 亚洲va欧美va国产综合久久| 天天干天天做天天摸| 97人妻人人爱人人澡人人爽| 美女福利在线免费观看| 欧美三级不卡在线播放 | 美女爽爽午夜作爱视频1314| 亚洲第二页欧美视频| 91超碰在线播放视频| 国产免费av天堂蘑菇视频| 亚洲91色精品一区二区| 欧美大香蕉一区二区三区| 一区二区三区水蜜桃视频| 广州最大的成人免费视频| 国产 精品 日韩 人妻| 污污污的视频免费在线观看| 国产精品亚洲精品久| 在线观看中文字幕91| 一区二区在线欧美日韩中文| 97超碰在线中文字幕精品| 日韩专区欧美专区第五页| 日本mm一区二区三区高清| 国产精品美女久久久久av精 | 夜夜躁爽日日躁狠狠躁一区| 熟妇人妻一区二区三区| 九色91蝌蚪porn| 日韩一二区内射电影| 亚洲av乱码国产精品观看麻豆| 99视频精品在线免费观看| 真人一级一97片成人片| 欧美亚洲自拍偷拍xxx| 美日韩黄色一级视频| 自拍偷拍亚洲色图经典三级| 91黄色大全免费观看| 午夜激情片免费在线观看| 欧美日韩黄色aaa| 男人操女人逼视频免费| 特黄特黄的日韩爽大片| 青青青久免费在线视频| 日本欧美黄色网站免费| 蜜桃黄视频在线观看| 97视频免费观看一区| 丰满老熟女av在线| 亚洲女子4x100米接力决赛| 91青青青青艹视频在线观看| 久久久久久久久久99蜜桃| 成人av影视一区二区三区| 免费av在线亚洲精品| 99精品在线免费观看| 亚洲和黑人特黄色片| 精品久久久福利国产| 中文字幕乱码熟女人妻水蜜桃| 色婷婷综合久久久久中文一区二区| av在线免费一区二区| 午夜精品久久十八禁| av熟女乱一区二区三区| 大香蕉红杏在线观看| 欧洲亚洲国产永久精品| 好大好粗好爽好黄c黄片| 五月天中文字幕亚洲| 四十路の五十路熟女网址| 欧美国产一区二区三区在线看| 漂亮人妻久久被公侵犯| 色 小说 激情 图片| 国产av电影网毛片| 爱妃视频av一区二区| 日韩一二三在线视频播放| 国产精品制服诱惑丝袜的| 国产av一区二区最新精品| 2025中文字幕在线| 国产一级二级三级在线看| 韩国的黄萝卜是怎么腌制的| 中文av字幕在线观看| 男人的j插进女人的逼| 中文字幕人妻免费电影| 成人国产av精品麻豆入口| 精品国产一区二区三区欧美精品| 3p人妻一区二区三区| 啪啪啪在线免费视频| 人妻夜夜爽av网站| 91免费一区二区久久| 精品人妻人人做人碰人人爽| 成人av泽村在线播放| 视频二区视频四区中文| 操女人逼逼好爽啊操| 亚洲欧洲久久av日日更新 | 午夜dj在线观看完整版| 中文字幕人妻不卡久久| 玩弄人妻少妇精品视频在线| 2023天天色天天操| 99热精品夜夜爽伊人| JK白丝喷白嫩嫩久久久| 免费国产一区二区三区在线播放| 亚洲国产精品午夜福利久久| 久久精品国产亚洲av四区| 色综合天天综合网天天狠天| 成人av毛片免费观看| 成人欧美网站免费直接看| 中国男人肏女人大屄的视频| 2017在线免费观看中文a| 女同性ⅹxx女同hd偷拍| 免费观看日本伦理片| 色偷偷欧美男人的天堂| 91新视频在线免费观看| 久久精品aⅴ无码中文字字幕蜜桃 中文字幕丝袜人妻乱一区三区 | 亚洲午夜短视频在线| 自拍偷拍 欧美亚洲| 日本一区二三区好的精华液| 91九色p精品久久久| 亚洲地址一区二区三区四区| 黄片网址在线观看视频| 动漫黄网站在线观看| 中文字幕在线观看一二三四| 视频一区二区在线播放| 国产日日夜夜精品视频免费| 午夜福利92一区二区三区久久| 一区二区三区免费精品| 黄色av网址免费观看| 国产交换乱淫99视频| 人妻天天爽夜夜爽2区蜜a∨| 被大鸡吧操骚B真爽视频| 日韩中文字幕一级乱码在线亚洲| 蜜桃精品噜噜噜成人av小说| 都市激情亚洲春色男人皇宫| 男生和女生哪个更色| 狠狠色丁香久久综合频道日韩| 99国产精品视频播放| 美女福利在线免费观看| 国内亚洲一区二区视频 | 成人av中文字幕网址| 亚洲插美女综合av| 久久人人添人人爽添人人片va| 精品国产成人在线免费| 中文字幕久久久aⅴ大片| 午夜小视频 在线观看| 天天看天天舔天天摸| 亚洲一点不卡福利视频| 精品一区二区三区最新| 自拍偷拍国产欧美精品| 日本mm一区二区三区高清| 污污污的视频免费在线观看 | 欧美精品日韩不卡免费| 人妻熟妇中文字幕免费视频| 手机在线看日韩av资源| 国产精品免费观看av| 国产九色视频在线观看| 天天插天天射天天日天天干| 国产不卡剧情在线观看| 51成人看片免费软件| 亚洲 自拍 色综合图区av| 欧美国产亚洲自拍偷拍| 天天爱天天插天天射| 亚洲中文精品第一页| 国产精品不卡在线播放| 精品一区二区三区最新| 国产精品免费观看91| 四十路の五十路熟女网址| av黄片网站在线观看| 91精品青草福利久久午夜| 人妻少妇精品视频专区专区| 日本精品一区二区三区不卡| 秋霞一区二区三区小说| 51成人看片免费软件| 啊!用力操我!好爽| 午夜dj在线观看免费完整视频| 亚洲欧美码免费观看视频| av在线免费观看一区| 精品国产一区二区三区欧美精品| 亚洲AV永久青草无码士清品| 熟女视频一区二区在线观看| 久久香蕉欧美日韩av蜜桃| 看国产剧的免费软件| 91中文字幕yellow| 欧美的一区二区三区| 石原莉奈一区二久久影视| 国产三级在线一区二区三区| 成人av影视一区二区三区| 亚洲第二页欧美视频| 日本少妇人妻xxxxx16| 成人网视频欧美在线观看| 91手机免费在线视频| 欧美乱码卡1卡二卡3卡4| 男人插女人动漫视频| 欧洲亚洲国产永久精品| 在线精品视频这里只有精品| 久操高清在线免费视频| 一级毛片试看三分钟| 97超碰在线资源总站| 无套内射黑丝美女91| 夜夜撸夜夜干夜夜操| 2017在线免费观看中文a| 精品国产污网址在线观看| 精品国产一区二区三区欧美精品| 国产55夜色66夜色男人的天堂| 漂亮人妻久久被公侵犯| 丝袜 制服 国产 欧美 日韩| 538精品新视频在线观看| av资源最新版在线天堂| 男女视频一区在线观看| 97视频免费公开在线播放| av在线视频观看免费| 97人妻少妇熟女av| 丰满人妻一区二区三区免费视频棣| 看国产剧的免费软件| 少妇厨房激情做爰欧美| 成年人在线观看福利视频| 91激情视频在线视频| 美女主播一区二区三区| 亚洲大胆综合在线观看| 亚洲天堂中文字幕手机在线| 免费观看亚洲女同性恋一区二区| 亚洲一区在线观看完整版| 看全黄大黄大色大片美女| 亚洲精品av成人在线观看| 色五月婷婷综合国产在线| 天天射天天舔天天看| 中文字幕+乱码+中文| 黄片激情视频国产免费| 日本老熟女人体艺术| 欧美精品视频一卡二卡| 亚洲女子4x100米接力决赛| 日本亚洲综合伊人久久| 青青草手机免费在线视频| 国产福利小视频在线免费观看| 欧美亚洲变态另类在线观看| 中文字幕激情亚洲精品| 国产在线观看av专区| 国产精品永久免费在线网站观看| 91精品国产人妻国产| 大香蕉网成人在线观看| 最近最新中文字幕资源在线| 中文字幕久久五月天| 国产精品免费手机在线观看| 91桃色午夜福利视频| 国产 福利 一区二区| 天天操,天天射,天天日| 色偷偷欧美男人的天堂| 中文字幕亚洲天堂av在线| 91新视频在线免费观看| 中文字幕在线观看观看av?| 亚洲国产精品午夜福利久久| 中文字幕福利在线观看| 亚洲经典国产一区二区三区 | 亚洲欧美清纯另类图片小说| 亚洲中字幕日产AV片在线| a在线观看免费久不卡精品| 在线能看的网站你懂得| 欧美18vide0sex性极品| 国产又长又粗又硬又爽免费视频| 一区二区三区四区蜜桃在线| 国内自拍偷拍视频第一页| 欧美三级不卡不毒视频| 天天日天天操天天干天天舔天天射| 国产91色婷婷手机在线| 久久久久免费特级黄片| 男女视频一区在线观看| av在线免费观看一区| 天天色天天操天天色综合| 最新久久久久久久久久久| 亚洲大胆综合在线观看| 中文字幕丝袜人妻乱一区三区 | 精品一区二区三区最新| 人人爽人人爽人人妻| 欲色天天网综合久久| 538精品新视频在线观看| 在线看国产91av| 黄片激情视频国产免费| 激情综合亚洲欧美日韩一区| 亚洲最大av无码国产网址| 中文字幕福利在线观看| 狼人 成人 综合 亚洲| 韩国美女视频在线观看18+| 日本在线观看公司入口视频| 中文字幕+乱码+中文| 2023天天色天天操| 天天日天天草天天插| 99青青草原在线视频| 91青青青青艹视频在线观看| 成人av泽村在线播放| 91超碰在线播放视频| 91精品丝袜久久久| 一区二区三区免费精品| 亚洲国产丰满熟女一区二区三区| 国产av一区二区最新精品| 国产av剧情网址大全| 182tv免费福利中文字幕| 国产三级在线一区二区三区| 3p人妻一区二区三区| 综合日韩人妻一区二区三区| 日本国产一区二区三区视频| 蜜桃黄视频在线观看| 99999精品视频在线观看| 午夜欧美熟妇综合在线视频| 99via精品福利影视| 欧美一点不卡视频在线观看| 蜜桃视频app网站入口| 被插到喷水视频在线观看| 免费在线视频 中文字幕| 狠狠综合久久亚洲av蜜臀| 亚洲国产伦理久久精品| 最近的中文字幕一区二区| 宅男视频在线观看视频| 在线观看免费的黄色片| 亚洲国产香蕉碰碰人人| 亚洲欧美久久精品免费| 日本伦精品一区二区三区免费| 国产福利小视频在线免费观看 | 啪啪啪在线观看免费视频| 91综合久久久久久久久久久| 国产一级免费观看av网站| 天天操日日干夜夜操| 成人区人妻精品一区二区不卡蜜臀| 欧美日韩一区二区a∨视频| 99久久99久久综合| 99精品国产九九国产精品| 久久久久久久亚洲精品中文| 日韩一级片黄色av| 欧美一区二区三不卡| 日韩夫妻性生活视频在线观看免费| 亚洲av蜜臀在线观看| 国产高清激情在线视频| 午夜国产精品福利一二| 熟女老骚91porn九色| 国产亚洲精品视频久久久| 97视频免费观看一区| 久久青草在线观看视频| 91成人在线观看免费| 在线观看免费a级电影| 制服诱惑,日韩情色| 日韩精品免费人成视频| 人妻女教师的沦陷大明| 91超碰在线播放视频| 美女精品一区二区三区| 91大神长腿美女视频在线观看| 国产精品综合自拍第一页| 国产精品不卡在线播放| 国产名人亚洲视频中文字幕| 日本阿v片中文字幕在线| 日本国产精品第一页久久| 涩爱av一区二区在线播放视频| 欧美国产一区二区三区| 中文字幕av一区二区三区不卡| 亚洲人妻无吗中文字幕| 91热精品视频在线播放| 天天搡天天狠天干天| 欧美色高清vvvvvv| 漂亮人妻口爆深喉免费视频| 日本jizzjizz少妇| 夜夜躁爽日日躁狠狠躁一区 | 中文字幕在线观看一二三四| 青青久在线观看免费视频| 国产精品自拍视频网站| 少妇喷水视频在线观看| 亚洲精品在线免费观看视频| 精品成人一区二区三区四区影视 | 亚洲国产精品成人综合色| 超碰在线97观看国产| 日本欧美视频免费观看| 91精品国语对白人妻刺激使劲| 色综合天天综合网天天狠天| 91精选国产九色porny| 日本阿v片中文字幕在线| 91popny熟女九色| 韩国美女视频在线观看18+| av男人天堂网在线观看 | 亚洲国产精品午夜福利久久 | 公交车人妻免费视频| 男人的天堂av 色噜噜| 国产黄片一区在线观看| 又大又黄又粗又爽少妇毛片| 美日韩黄色一级视频| 老司机福利在线免费观看视频| 一级毛片试看三分钟| 中文字幕丰满人妻fsdss| av大片免费观看网站| 色视频在线观看在线| 六十六节医疗保健操全套| 日本国产精品第一页久久| 日本高清一级二级三级| 国产亚洲av网址大全| 色姑娘天天干天天操| kendralust熟女少妇| 94老司机福利社精品视频| av色综合久久天堂av…| av自拍偷拍一区二区| 久久热高清在线观看| 中文在线天堂中文在线天堂| 天堂av在线男女av| 日本在线观看视频黄大片www| 韩国的黄萝卜是怎么腌制的| 亚洲校园~春色综合| 亚洲国产自拍偷拍精品| 大伊香蕉精品一区视频在线| 免费观看日本伦理片| 91麻豆精品国产综合久久久主演| 男人插女人阴穴的视频| 亚洲黄片在线免费播放| 男人的天堂av成人网| 333kkkk·com99久久| 日本中文字幕第三区| 国产老女人av一区二区三区| 男女视频一区在线观看| 北岛玲在线播放中文字幕| 欧美日韩中文国产一区| 美女和猛男诱惑操逼捅鸡鸡| 熟妇高潮喷水在线120p| 男人和女人哪个更色| 国产高清精品福利私拍国产写真 | 性色蜜月av一区二区三区| 蜜桃视频app网站入口| 国产老头视频在线观看| 大屁股熟女少妇一区二区| 亚洲图片 欧美专区 自拍| 精品成人一区二区三区四区影视| 日本人妻偷人妻中文字幕| 92大香蕉一区二区三区| 日本熟艳妇A站黄色视频| 小岳母在线观看完整版| 国产91福利在线导航| 国产一级特黄aaa片做受小说 | 在线观看免费的黄色片| 精品黄色一级久久久久久久久| 人妻一区二区三区中文字幕免费| 东京一区二区三区av在线| 在线免费观看国产欧美日韩| 国产在线精品免费视频| 国产天美传媒剧免费观看| 久久精品aⅴ无码中文字字幕蜜桃| 国产 福利 一区二区| 天天草天天日天天舔| 久久精品视频女人按摩| 狼人 成人 综合 亚洲| 国产精品自产拍在线观| 日本激情内射一区二区三区| 国产精品国产自产拍在线| 色yeye香蕉人妻凹凸一区二区| a区精品视频在线观看| 日韩欧美免费看的惊悚片电影| 免费精品国产人妻国语| 日本欧美在线免费观看视频| 欧美裸体xxxxx极品少妇| 亚洲69视频在线观看| 中文字幕超碰18区| 国产成年无码av片在线| 亚洲一区二区三区在线直播| japanese国产在线播放| 男人的天堂av成人网| 人妻天天爽夜夜爽2区蜜a∨| 一区二区三区四区蜜桃在线| 亚洲久久久久久久久| 亚洲天堂aaa一区二区| 国产97日韩在线观看| 全国最大成人 中文字幕| 99偷拍精品一区二区| 亚洲和黑人特黄色片| 色狠狠久久vs北条麻妃av| 久久精品日产第一区二区三区| 91:久久久久久久久久| 成人区人妻精品一区二区不卡蜜臀| 亚洲欧美综合一区二区三区四区 | 午夜两性操一操在线观看嗯嗯啊 | 午夜激情片免费在线观看| 一级毛片试看三分钟| 99999精品视频在线观看| 91久久久久精品一区二区三区| 久久久com久久久com| av男人天堂网在线观看| 99国产精品视频播放| 操的少妇嗷嗷叫视频| 人妻精品无码一区二区三区百花| 亚洲av免费观看网站在线观看| 美女很黄很色国产av| 最新黄色天堂av在线资源| av黄片网站在线观看| 日韩不卡免费一区二区三区视频| 亚洲中字幕日产AV片在线 | 影音先锋婷婷五月青青草视频在线 | 久产久91精国九品打| 亚洲精品中文字幕原千岁| 人妻欧美制服中文字幕| 动漫黄网站在线观看| 亚洲熟女国产午夜精品| 国产区精品一区二区不卡中文| 欧美黄色网黄色欧美网| 不戴胸罩的人妻电影| 少妇花园流浆嗯嗯张开视频| 狠狠躁夜夜躁人人爽天天BL| 中文字幕精品一区二区三区视频| 久久与久久最新视频| 欧美一点不卡视频在线观看| 久久久久久久国产黄色片| 中文字幕熟女人妻丝袜电影| 精品少妇在线观看视频| 亚洲成电影在线观看青青| av资源最新版在线天堂| 天天干狠狠插夜夜操| 91av在线网址观看| 成人免费xxxx在线| 大香蕉手机免费在线| 日韩在线视频观看你懂的| 亚洲熟女少妇 精品| 好大好粗好爽好黄c黄片| 国产高清欧美日韩精品| 大香蕉久久久久久久久| 国产精品视频综合一区二区| 日韩一级黄色片免费在线观看| 日本高清一级二级三级| 国产主播精品在线一区| 亚洲黄色片免费在线| 亚洲激情四射在线观看视频| 人妻人妻干干干干人妻网站| 最新日韩成人av电影| 午夜精品久久十八禁| 熟女人妻视频观看一区二区三区| 色丁香国产精品综合久久| 伊人成人综合小说网| 把鸡鸡伸进去的视频| 999人妻精品中出| 免费av在线亚洲精品| ass亚洲熟妇熟女pics| 日本一区二区亚洲综合| 懂色av蜜臀av绯色| 最近最新高清欧美日韩中文字幕| 国产高清 国产av| 在线播放__91色| 日韩精品在线观看直播| 亚洲人妻无吗中文字幕| 丰满老熟女av在线| 中文亚洲字幕国产剧情| av资源最新版在线天堂| 国产精品大片在线观看网站资源| 中文字幕中文字幕一区三区| xxxxxx日本少妇| 嗯嗯呐插进来嘛吸奶| 国产乱人伦Av在线麻豆A| 一卡二卡成人久久精品| 美女爽爽午夜作爱视频1314| 无套内射黑丝美女91| 天天干天天操天天射天天日| 91综合久久久久久久久久久| 国产午夜在线观看不卡| 青青草毛片在线观看| 99精品午夜一区二区三区| 欧美 亚洲 国产 日韩一| 成人两性色午夜视频免费88AV| 日韩毛片免费视频观看| 成年人午夜网站在线播放| 日本一区二区亚洲综合| 色综合人妻中文字幕| 91九色p精品久久久| 国产亚洲精品视频久久久| 亚洲午夜在线亚洲午夜在线| 亚洲精品久久中文字幕| 富婆按摩高潮一区二区三区91| 精品黑丝袜一区二区三区| 亚洲欧美三级在线观看视频| 中文av字幕在线观看| 亚洲国产成人精品久久久久久久久| 久久久久久久毛片5| 国产精品久久久久久无码不卡| 欧美日韩高清无毒不卡| av在线播放网址大全| 日本激情床震无遮掩视频 | 人妻在线一区二区三区| 成人av中文字幕网址| 各种玩小处雌女视频| 中文在线天堂中文在线天堂| 色丁香国产精品综合久久| 久久久久久久岛国免费播放| 91国语对白精彩在线视频| 国产免费人妻人伦精品| 亚洲一区二区蜜乳av| 538精品视频国产| 国产一级特黄aaa片做受小说| 护士色视频亚洲婷婷| 国产精品自拍视频网站| 超碰青青草原免费在线观看97 | 久久精品亚洲一区二区三 | 亚洲黄色片免费在线| 少妇花园流浆嗯嗯张开视频| 男人插女人逼视频播放| 床戏高潮呻吟声片段大全| 国产精品免费视频22| 国内亚洲一区二区视频 | 激情91久久婷婷综合| 午夜福利92一区二区三区久久| 欧美国产一区二区三区在线看| 91精选国产九色porny| 爱毛片在线成人免费看| 熟女人妻视频观看一区二区三区| 国产三级在线一区二区三区 | 亚洲AV无码成人精品国产一区| 99热在线都是精品免费| 国产免费av天堂蘑菇视频| 精品国产不卡在线观看免费| 黄色小网站在线免费观看| 亚洲免费不卡一区二区三区| av自拍偷拍一区二区| 紫川动漫在线观看免费完整版| 国产精品蜜臀在线观看| 亚洲人成网站在线播放| 久久久精品欧美一区二| 国产av电影网站一区| 久久久亚洲av成人网人人| 亚洲国产精品va在线观看香蕉| 色丁香国产精品综合久久| 97 在线观看视频网站| 激情黄色激情综合久久| 亚洲一区在线观看完整版| 一级视频在线观看高清国产免费| 91九色黑丝长腿美女| 91福利在线观看免费| 欧美成人中文字幕在线视频| 鲁久久无码五月天有码| 青娱乐休闲在线观看视频| 亚洲短视频自拍偷拍| 亚洲精品久久中文字幕| 亚洲综合熟女久久30p| 9i精品福利一区二区三区蜜桃| 国产午夜精品一区二区不| 免费可以看黄页的视频| 中文一区二区在线播放| 超碰青青草原免费在线观看97| 最新黄色天堂av在线资源| 91手机免费在线视频| 免费网站黄色在线观看不卡| 538精品视频国产| 视频在线免费观看97| 国产婷婷色三区二区一区| 欧美一区二区三区高清视频| 日本性生活视频观看免费| 久久久精品欧美一区二| 护士色视频亚洲婷婷| 人人妻,人人干,在线| 三级大尺度无码视频| 激情综合亚洲欧美日韩一区| 美女少妇一区二区久久久| 免费观看黄色视频啊小穴啊| 日韩三级 欧美精品| 2019天天操天天日天天射| 久久日99久久里面有精品| 床戏高潮呻吟声片段大全| 水蜜桃在线视频一区二区三区| 中文字幕乱码视频日本一区二区| 中文字幕中文字幕在线一区| 不戴胸罩的人妻电影| 强行进女小姪女小芳| 中文乱码字幕人妻精品| 9999国产精品免费| youjizz少妇日本| 亚洲女子4x100米接力决赛| 亚洲 自拍 色综合图区av网站| 日韩妹子精品视频在线观看| 四季av在线一区二区三区| 日本mm一区二区三区高清| 天天爱天天插天天射| 天天看天天舔天天摸| 成人欧美久久久久美婷婷| 一级特黄夫妻生活大片| 熟妇av一区二区三区| 中文字幕 亚洲轻轻av| 在线免费观看国产欧美日韩| 亚洲三级色片视频在线观看| 亚洲中文有码字幕青青| 国产大屁股影音在线播放| 超碰av在线一区二区三区| 日产精品免费一区二区三区 | 久久久com久久久com| 揉老熟女老熟妇aaa| 九九热线这里只有精品| 狠狠操狠狠操狠狠搞| 97超碰资源总站在线观看| 蜜桃精品噜噜噜av| 天堂av中文官网在线| 99久久久久久久久96久久| 在线观看亚洲视频一区二区| 777爽死你无码免费看一二区| 亚洲中字幕日产AV片在线| 9久久久久久久久久久| 少妇18禁久久yy| 经典视频一区二区三区| 日本xxxxx久久| 中文字幕乱码熟女人妻水蜜桃| 男女啪啪自拍露脸视频| 少妇喷水视频在线观看| 广州最大的成人免费视频| 天堂av在线一区少妇| 强伦轩人妻一区二区三| 18视频在线免费播放| 91精品丝袜一区二区| 91瑟瑟视频在线观看| 日韩视频在线观看四区| 中文字幕丝袜人妻乱一区三区| 在线观看免费a级电影| 国内亚洲一区二区视频| 99久久国产综合精品五月天| 一色桃子av人妻熟女完整版| 天天草天天日天天舔| 日本丰满少妇毛茸茸| 蜜桃少妇视频在线观看| 自拍偷拍亚洲色图经典三级| 一色桃子av人妻熟女完整版| 人妻ol未亡人中文字幕| 91精品丝袜一区二区| 漂亮人妻口爆深喉免费视频| 在线观看国产剧情av| 中文字幕一区久久性色| 欲色天天网综合久久| 亚洲美女啪啪邪恶视频| 搞黄色的网站在线观看| 日本特黄免费一级大片| 99久久国产综合精品五月天 | 五月婷婷六月久久久| 在线精品视频这里只有精品| 狠狠操视频在线免费观看| 日韩亚洲欧美中文在线电影 | 韩国女主播一区二区福利视频| 韩国电影年轻的妈妈7| 国产亚洲精品免费观看| 日韩亚洲欧美中文在线电影| 久久永久免费专区人妻| 免费观看在线黄色大片| 日韩人妻熟妇精品xxx| 初撮日本五十路人妻| 365日日夜夜精品视频| 日本一区二区亚洲综合| 大香蕉国产手机在线观看| 成人av网站在线观看| 国产午夜精品在线播放| 精品99久久久久久久久| 欧美性感美女高潮视频 | 亚洲最新欧美偷拍视频| 爱妃视频av一区二区| 亚洲天堂国产精品乱伦一区| 国产一级久久久久高清版| 成年永久免费播放平台| 午夜dj在线观看完整版| 熟妇av一区二区三区| 94老司机福利社精品视频| av大片免费观看网站| 吃大咪咪操骚逼高清视频| 日本少妇一二三视频| 日本欧美视频免费观看| 少妇厨房激情做爰欧美| 最新黄色天堂av在线资源| 日韩级视频在线播放| 1234中文字幕内射在线| 国产最好看的特效大片av| 国产精品网在线观看| 欧美 亚洲 国产 日韩一| 成人两性色午夜视频免费88AV| 丰满熟妇xxxx性久久久| 真实国产乱子伦一区| 97超碰在线资源总站 | 鲁久久无码五月天有码| 日本精品一区二区三区不卡| 欲色天天网综合久久| 东京热tokyo黑人系列| 亚洲黄片在线免费播放| 日本激情内射一区二区三区| 亚洲区欧美区自拍偷拍区 | 日韩一级高清免费播放| 最新97在线视频资源| 可以在线观看的av网站| 成年人在线观看福利视频| 超碰国产极品尤物在线| 欧美人体一区二区视频| 91在线视频免费亚洲| 四季av在线一区二区三区| 在线视频播放免费网站| 亚洲欧美清纯另类图片小说| 九色91在线只有精品| 亚洲国产综合精品中文字幕| 亚洲的国产中文字幕的av| 欧美一区二区三区在线爱爱| 日韩欧美激情啪啪啪| 国产亚洲精品137片内射| av一区二区在线播放色婷婷精品| 国产亚洲精品137片内射| 精品麻豆国产综合在线9| av精品一区二区三区免费观看| 被大鸡吧操骚B真爽视频| 91国语对白精彩在线视频| 91麻豆天美精东蜜桃专区| 六十六节医疗保健操全套| 欧美在线一区二区三区| 人妻精品无码一区二区三区百花 | 91精品久久久久久久99蜜臀| 国产精品久久久免费99| 几把操女的逼喷水视频| 国产九色视频在线观看| 国产交换乱淫99视频| 中年美熟妇与少年的激情| 最新黄色天堂av在线资源| 人妻少妇资源网av| 欧美乱码卡1卡二卡3卡4| 一区二区三区麻豆蜜桃视频| 揉老熟女老熟妇aaa| 国产97精品在线免费看| 男人插女人阴穴的视频| 2023天天色天天操| 色少妇精品一区二区三区网站| 视频在线免费观看97| 日韩人妻少妇av电影| 亚洲影视精品一区二区| 2021国产麻豆剧传媒精品入口| 在线精品视频这里只有精品| 手机在线一区二区三区| 中文字幕少妇av一区二区三区 | 国产一级免费观看av网站| 日本阿v片中文字幕在线| 亚国产亚洲亚洲精品视频| 欧美18vide0sex性极品| 国产精品不卡在线播放| 国产高清 国产av| 欧美三级不卡在线播放 | 石原莉奈一区二久久影视| 亚洲激情四射在线观看视频| 国产精品久久乱码无人区| 久久久亚洲av成人网人人| 大香蕉太香蕉在线免费看| 国产主播在线观看一区二区| 18禁止看免费120秒试看| 成人av在线国产精品| 少妇喷水视频在线观看| 亚洲一区二区日韩欧美久久| 国产一级二级三级在线看| 青青久在线观看免费视频| 日韩人妻熟妇精品xxx| 精品国精品国自产在产国产| 久久av四色米奇影视| 中文av字幕在线观看| 亚洲av熟女av熟女| 麻豆电影国产一区在线观看| 国产午夜精品1区2区3区| 亚洲国产伦理久久精品| 国产91边对白在线播放| 日韩中文字幕色资源| 成人av黄片免费在线观看专区| 99久久精品岛国免费黄色网| 国产 福利 一区二区| 天天插天天干天天爽| 性美女毛片久久a区| 99在线只有精品视频| 日本欧美黄色网站免费| 亚洲熟女少妇 精品| 131美女午夜免费视频| 都市激情中文字幕蜜桃| 日本国产精品第一页久久| 狠狠添狠狠添狠狠添免费出高潮水| 91tsav人妻国产| av天堂中文版www在线| 经典视频一区二区三区| 粗大挺进朋友人妻身体里国产| 国产综合无码视频呢在线| 日产国产亚洲精品系列p| 亚洲熟女资源一区二区| 亚洲国产精品午夜福利久久| 91九色popny人妻| 男人的天堂在线免费av| 男人的天堂在线免费av| 欧美人体一区二区视频| 日本高清一级二级三级| 欧美 亚洲 国产 日韩一| 91手机免费在线视频| 99成人自拍视频在线观看| 九九re热这里只有精品视频| 中文字幕精品无码一区二区三区| 日韩中文av在线观看| 精品国产污污污免费网站入口|