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 精品在线观看一区二区视频| 国产精品网站一区在线观看| 免费高清视频亚洲熟女| 日韩亚洲欧美中文在线电影| 把鸡鸡伸进去的视频| 天天干天天谢天天操| 91激情视频在线视频| 欧美国产一级在线免费观看| 黄片网址在线观看视频| 日本熟妇三十熟女精品区| 久久久国产亚洲精品黑人| 国内精品视频免费观看视频| 精华液一区二区区别| 超碰国产极品尤物在线| 樱桃国产成人精品视频| 亚洲精品在线免费观看视频| 欧美一区二区三区高清视频| 国产精品8888在线观看| 在线播放三级黄色日韩av| 精品成人一区二区三区四区影视| 中文字幕人妻不卡久久| av大片免费观看网站| 亚洲午夜在线亚洲午夜在线| 国产成年无码av片在线| 国产成人自拍精品在线| 在线人妻中文av导航| 嗯嗯呐插进来嘛吸奶| 狠狠操视频在线免费观看| 黄色古装操逼小视频| 丝袜 制服 国产 欧美 日韩| 欧美精品日韩不卡免费| 天天综合网精品视频天天看| 欧美成人免费观看在线看 | 朴妮唛无删减福利在线观看| 在线观看免费精品一区| 欲求不满的邻居人妻一区二区三区 | av在线播放网址大全| 日本激情内射一区二区三区| 精品黄色一级久久久久久久久| kendralust熟女少妇| 欧美亚洲变态另类在线观看| 国产亚洲高清在线观看| 精品三区漫画图片分类| 欧美精品色呦呦首页| 国产无套水多大学生性色AV| 蜜桃黄视频在线观看| 日韩一级黄色片免费在线观看| 视频在线免费观看97| caopron在线成人免费| 亚洲国产av自拍网站| 国产福利一区二区三区久久久| 夜夜躁爽日日躁狠狠躁一区 | 久久久久久久国产黄色片| 亚洲第一视频在线视频| 日本少妇人妻xxxxx16| 日本特黄免费一级大片| 91popny熟女九色| 日韩中文字幕色资源| 人妻少妇精品视中文字幕国语| 精品国精品国自产在产国产| 色www亚洲国产张柏芝| 色综合天天综合网天天狠天| 精品久久久福利国产| 在线不卡无毒你懂得| 黄片一级黄片一级黄片| 日本一区二区伦理在线观看| 亚洲国产成人一区二区久久久| 人妻少妇久久中文字幕密拍| 免费可以看黄页的视频| 国产美女视频网久久69| 亚洲插美女综合av| 欧美一点不卡视频在线观看| 中文字幕丝袜人妻乱一区三区 | 丰满熟妇xxxx性久久久| 国产一级特黄aaa片做受小说 | 特黄特黄的日韩爽大片| 国产精品网站一区在线观看| 推荐国产福利一区二区三区 | 国产加勒比高清无码在线视频| 国语自产精品视频在线看一大j8 | 国产av剧情网址大全| 在线观看中文字幕91| 青青草国产免费在线观看| av中文字幕 中文字幕第一页| 91瑟瑟视频在线观看| 人妻视频在线免费观看| 日本伦精品一区二区三区免费| 丰满人妻一区二区三区免费视频棣| 99青青草原在线视频| 91黄色大全免费观看| 国产精品一线二线三区| 国产精选黄片免费观看| 国内老熟妇精品露脸视频| 欧美国产一区二区三区| 91麻豆精品国产综合久久久主演| 青草神马视频在线网址| 好大好粗好爽好黄c黄片| 亚洲午夜在线亚洲午夜在线 | 国产 福利 一区二区| 亚洲熟妇色xxxxx妇色| 99久久无色码中文字幕免费| 中文字幕中文字幕在线一区| 9色porny人妻| 精品国产一区二区三区欧美精品| 国产91边对白在线播放| 亚洲图片av伦理三级| 91九色黑丝长腿美女| 少妇18禁久久yy| av男人天堂网在线观看 | 日本在线观看视频黄大片www| 国产综合无码视频呢在线| 久久亚洲av午夜福利精品一区| 国产高清 国产av| 亚洲精品日韩中文久久91| 日日夜夜精品视频观看| 91精品国语对白人妻刺激使劲| 亚洲va欧美va国产综合久久 | 日本欧美视频免费观看| 国产精品免费观看av| 91免费免费观看在线| 欧美一区二区三区在线爱爱| 2021国产麻豆剧传媒精品入口| japanese国产在线播放| 秋霞网av一区二区三区中文字幕| 91国语对白精彩在线视频| 91精选一区二区三区四区| 中文字幕熟女人妻丝袜电影| 强d乱码中文字幕熟女导航| 不戴胸罩的人妻电影| 欧洲老妇人一区二区三区| 亚洲中字幕日产AV片在线| 五十六十日本老熟妇牲| 日本在线不卡视频播放| 日本国产一区二区三区视频| 污视频免费网站观看| 国产真人做爰免费观看| 人人爱精品人人艹人人干| 777精品久久久久久久| 9l视频自拍九色9l视频不卡| 尤物在线免费视频观看| 97视频免费观看一区| 亚洲情色成人一二三区| 国产一级免费观看av网站| 熟女老骚91porn九色| 石原莉奈一区二久久影视| 国产一级特黄aaa片做受小说| 国产午夜在线观看不卡| 男人午夜视频在线观看| 人妻熟妇中文字幕免费视频| 国产免费人妻人伦精品| 69久久夜色精品国产69| 精品久久久中文字幕熟女| 91九色免费在线观看| 中文字幕日产av一二三区| 91九色国产自拍视频| 日日夜夜操国产av| 日本不卡视频免费播放| 91中文日韩免费精品| 9网网站免费看nb国产| 日韩激情又爽aaaaa级| 人妻 日韩 制服 中文 在线| 九色porny蝌蚪少妇| 人妻色噜噜噜噜一区二区| 国产97日韩在线观看| 亚洲熟女乱色综合小说| 韩国三级国产精品一区| 国产精品久久久久久电| 91瑟瑟视频在线观看| 日韩人妻少妇av电影| 中文字幕丰满人妻fsdss| 在线观看免费精品一区| 国产人妖综合在线视频| 免费观看在线黄色大片| av色综合久久天堂av…| 全国av一卡二卡三卡免费| 天堂av在线一区少妇| 字幕人妻一区二区视频| 日韩妹子精品视频在线观看| 婷婷色在线免费视频| 欧美亚洲 自拍偷拍| 天天爽天天爽免费视频| 极品扒开粉嫩小av一区二区| 99精品午夜一区二区三区| 免费观看日本伦理片| 亚洲国产精品va在线观看香蕉| 9999国产精品免费| 在线观看免费精品一区| 伊人婷婷视频在线观看| 免费精产国品一二三产区区大学生| 最近最新高清欧美日韩中文字幕| 国产免费观看av在线| 手机在线一区二区三区| jizz成人在线视频| 男人的天堂在线免费av| 欧美成在线在线视频| 久久久com久久久com| 久久热高清在线观看| 亚洲av乱码一区二区三区观影| 日本在线观看公司入口视频| 亚洲欧洲视频一二三区| 男女裸交无套啪啪激情高潮| 国产精品国三级国产av无密码| 中文字幕一区二区720p| 久久久久久久岛国免费播放| 可以免费看黄色的网址| 精品国产不卡在线观看免费| 青青操一区二区三区| 日本成年人大片免费观看| 免费av在线亚洲精品| 蜜桃精品www视频在线观看| caoporn中文字幕视频| 蜜臀av在线观看一区| 欧美亚洲污视频网站| 国产美女视频网久久69| 91久久久久久久电影| 韩国美女视频在线观看18+| 人妻一区二区三区中文字幕免费 | 中文字幕 av 在线| 91极品尤物国产在线播放| 99久久99久久综合| 亚洲人成网站在线播放| 紫川动漫在线观看免费完整版 | 91激情视频在线视频| 在线观看一区二精品视频| 玩弄放荡人妻少妇免费视频| 推荐国产福利一区二区三区| 99久久国产综合精品五月天| 中文字幕亚洲情色在线观看| 久久精品国产亚洲av四区| 日本伦精品一区二区三区免费| 瑟瑟免费在线观看视频| 欧美一点不卡视频在线观看| 日本aaaaa特黄| 亚洲国产长腿丝袜av天堂| 美女主播一区二区三区| 国产老妇女免费视频| 超碰在线97观看国产| 中文字幕福利在线观看| 国产在线精品免费视频| 国产一区二区精品调教| 精品国产伦理片1区2区| 无码丝袜人妻高跟鞋| 亚洲天堂国产精品乱伦一区| 国产在线观看XXXXX| 精品一区二区三区视频观看| 五月天中文字幕亚洲| 欧洲码亚洲码一区二区三区四区| 桃子av在线免费观看| 亚洲AV永久青草无码士清品| 91久久久久精品一区二区三区| 在线看不卡日本av| 亚洲黄色片免费在线| 无码伊人久久大杳蕉中文无码| 日日夜夜精品视频观看| 免费观看亚洲欧洲在线视频| 亚洲精品欧美日韩专区免费| 亚洲va欧美va国产综合久久| 日本久道久久综合狠狠老| 精品国产伦理片1区2区| 性色蜜月av一区二区三区| 日韩毛片免费视频观看| 91免费一区二区久久| av中文字幕 中文字幕第一页| 邪恶老湿精品一区二区| 日韩中文字幕一级乱码在线亚洲| 超碰97在线观看免费| 91中文日韩免费精品| av亚洲天堂中文字幕| 日本一区二三区好的精华液| 91九色p精品久久久| 亚洲无码免费一二三区视频| 国产精品亚洲av国产| 亚洲插美女综合av| 亚洲午夜在线亚洲午夜在线| 99久久久久久久久96久久| 国产加勒比精品蜜臀在线观看| 加勒比日本一区二区三区| 欧美精品色呦呦首页| 欧美亚洲国产激情在线| 色五月婷婷综合国产在线| 9i精品福利一区二区三区蜜桃| 欧美成人免费观看在线看| 色视频免费在线观看高清| 中文热免费在线视频| av色综合久久天堂av…| 少妇丰满一区一二区视频社区| 久久99国产精品久久99蜜月| 色五月婷婷综合国产在线| 日本在线观看公司入口视频| 亚洲一区二区嗯好爽快点| 人妻欲求不满作品番号| 亚洲图片av伦理三级| 国产成人自拍在线播放| 啊啊啊啊啊鸡巴进小穴了视频| 午夜小视频 在线观看| 欧美色视频日本片免费看| 日本太黄视频免费看| 国产亚洲精品a77777| 青青操一区二区三区| 日本欧美黄色网站免费| 91精品久久久久久久免费看| 亚洲中文字幕综合av一区| 亚洲欧美激情人妻人妻综合| 国产精品久久久免费99 | 亚洲天堂av影视在线| 欧美日韩一区二区a∨视频| 国产一级特黄aaa片做受小说| 免费精产国品一二三产区区大学生| 一区二区三区日韩高清| 精品国产不卡在线观看免费| 久久久com久久久com| 亚洲情色成人精品视频| 免费网站黄色在线观看不卡| 美女摸自己下面出白浆的视频 | av亚洲欧美一区二区| 在线视频 中文字幕 一区二区| 成人教育av在线网站| 亚洲久久久久久久久| 另类激情国产专区在线观看免费| 国产精品网在线观看| 亚洲午夜短视频在线| 国产精品视频综合一区二区| 放荡的丝袜美腿护士老师| 久久久久久久亚洲精品中文| 黄片一级黄片一级黄片| 日韩精品性色一区二区在线观看| 精品亚洲永久免费精品网站| 日本特黄免费一级大片| 91tsav人妻国产| 国产一级免费观看av网站| 欧美专区在线观看视频| 国产女主播av在线播放观看| 国产手机av免费在线看片不卡| 91九色popny人妻| 精品国产污污污免费网站入口| 国产视频在线观看一区二区极品 | 亚洲风情 国内自拍av| 在线观看中文字幕91| kendralust熟女少妇| 自拍偷拍 欧美亚洲| 中文字幕av不卡一区二区| 亚洲 欧美 日韩 另类在线| 午夜美女操逼高潮免费视频| 欧美性感美女高潮视频| 最新久久久久久久久久久| 露臀裙后入在线视频| 久久久久久久久久99蜜桃| 亚洲综合一区二区在线视频| 水蜜桃在线视频一区二区三区| 推荐国产福利一区二区三区| 成人教育av在线网站| 欧美视频一区二区三区三州| 亚洲午夜短视频在线| 国产精选黄片免费观看| av精品一区二区三区免费观看| 毛片中文aaa五月天| 天天爽天天爽免费视频| 日韩三级 欧美精品| 夜夜撸夜夜干夜夜操| 亚洲 欧美 日韩 另类在线| 久久久久久久岛国免费播放| 91人妻porny精品国产| 51成人看片免费软件| 天天操天天摸天天添| 北岛玲在线播放中文字幕| 日本丰满老熟妇bbw| 久久久久免费特级黄片| 欧美在线一区二区三区| 久久热免费在线观看视频| 国产精品久久性欧美| 91精品视频在线观看999| 啪啪啪啪啪啪啪啪啪日本| 涩爱av一区二区在线播放视频| 北条麻妃超碰av在线播放| 一级视频在线观看高清国产免费| 狠狠操视频在线免费观看| 熟女人妻av完整一区二区三区| 青青草毛片在线观看| 国产一区二区三区在线资源| 色综合天天综合网天天狠天| 中文字幕人妻免费电影| 91麻豆精品国产综合久久久主演| 最近的中文字幕一区二区| 91手机免费在线视频| 亚洲欧美另类离制服丝袜| 在线观看欧美日一区二区 | 国产美女在线极品美女网站| 一卡二卡成人久久精品| 91桃色午夜福利视频| 欧美日韩黄色aaa| 成人av影视一区二区三区| 人妻少妇精品视频专区专区| 香蕉视频免费看国产精品| 亚洲女人毛毛多毛耸耸| 国产日日夜夜精品视频免费| 插美女阴道流水视频| 91久久人澡人妻天天做天天爽| 欧洲亚洲国产永久精品| 92大香蕉一区二区三区| 91免费在线播放视频| 欧美极品少妇αv另类| 亚洲精品视频在线99| 91在线视频免费亚洲| 国产精品免费观看av| 日韩欧美免费看的惊悚片电影| 亚洲人成在线1国产盗拍| 国产精品久久久久久久综合av| 青青色在线视频精品观看| 弄爽新婚人妻第五部美妙人妻| 大香蕉网成人在线观看| 黄色的视频黑丝网站| AV成人国产免费久久精品| 可以免费直接观看的av| 操死你 骚货 视色| 美女少妇一区二区久久久| 国产精品va在线观看老妇女| 日本国产一区二区精品| 亚洲精品中文字幕原千岁| 欧美日本一区二区三区精品| 97视频免费观看一区| 中文字幕熟女人妻丝袜电影| 国产男女激情视频一区| 4438x视频在线| 国产成年人性生活视频| 91超碰在线免费播放| 免费在线一区二区视频| 欧美色高清vvvvvv| 亚洲国产成人精品久久久久久久久| 日韩一二三区免费播放视频| 沈惊觉白小小免费看全集| 亚国产亚洲亚洲精品视频| 超碰国产极品尤物在线| 97视频免费公开在线播放| 在线播放__91色| 推荐国产福利一区二区三区 | 超碰97人妻中文字幕| 黄片一级黄片一级黄片| 黄免费在线观看视频| 91免费一区二区久久| 最新久久久久久久久久久| v888av精品少妇| 中文一区二区在线播放| 国产亚洲av网址大全| 91手机免费在线视频| 天天射天天舔天天看| 国产黄片一区在线观看| 都市激情中文字幕蜜桃| 黑人玩弄,人妻,一区二区三区| 日本黄色录像第1部播放器播放| 精品黑丝袜一区二区三区| 亚洲图片偷拍30pxxx| 亚洲欧洲久久av日日更新| 日韩精品视频网站免费观看| 99久久国产综合精品五月天| 日日躁夜夜躁狠狠躁av蜜臀| 亚洲狠狠婷婷久久综合| 日韩精品性色一区二区在线观看| 国产免费av天堂蘑菇视频| 看国产剧的免费软件| 精品国产污污污免费网站入口| 午夜动漫福利在线观看| 免费一级特黄特色大片88av| 好色av一区二区三区四区| 91九色成人原创视频| 在线观看免费的黄色片| 一区二区三区高清在线| 中文字幕不卡在线视频极品| 色少妇精品一区二区三区网站 | 91瑟瑟视频在线观看| 天天干天天干天天操天天日| 中文字幕人妻二区三区免费视频| 特黄特黄的日韩爽大片| 99热在线都是精品免费| 四十路の五十路熟女网址| 亚洲天堂av影视在线| 中文字幕 亚洲轻轻av| 趣夜视频在线免费观看| 亚洲精品午夜福利久久| 美女叉开腿让男人桶视频| 欧美色视频日本片免费看| 日产精品免费一区二区三区| 168黄页网免费观看视频| 国产主播精品在线一区| 成人教育av在线网站| 精品suv一区二区33| 蜜桃亚洲av优女av综合久久久| 日本不卡网在线观看视频| 天天干狠狠插夜夜操| 日韩夫妻性生活视频在线观看免费| 沈惊觉白小小免费看全集| 人妻少妇麻豆中文字幕久久精品| 国产午夜精品在线播放| 久久精品视频女人按摩| 日韩在线视频观看你懂的| 最近的中文字幕一区二区| 国产精品久久久久久无码不卡| 午夜香蕉爽爽爽av| 亚洲国产自拍偷拍精品| 97精产国品一二三产区区| 亚洲美女啪啪邪恶视频| 51成人看片免费软件| 欧洲老妇人一区二区三区| 中文字幕乱码熟女人妻水蜜桃| 亚洲av综合在线观看免费 | 可以免费看黄色的网址| 黑人中出日本人妻系列| 美女厕所撒尿偷拍视频| av黄片网站在线观看| 亚洲国产丰满熟女一区二区三区| 无码丝袜人妻高跟鞋| 蓝莓小视频在线观看| 女同性ⅹxx女同hd偷拍| 伊人网av在线观看| 亚洲一级精品久久久蜜桃| 在线观看的a站视频| 国产精品视频中文无码| 人妻少妇精品视中文字幕国语| 老头插进去好多水'视频| 免费一级特黄特色黄录像| 麻豆电影国产一区在线观看| 亚洲另类视频图片小说| 特黄特黄的日韩爽大片| 91麻豆精品国产综合久久久主演| 熟妇人妻一区二区三区| 亚洲精品午夜福利久久| 国产小视频在线播放| 欧美一区二区三不卡| 亚洲综合在线一区二区三区四区| 夜夜撸夜夜干夜夜操| 久久精品乱码中文字幕| 久久久国产亚洲精品黑人| 婷婷国产一区二区三区| 天天摸天天舔天天透| 少妇又色又紧又爽又刺激视频| 日韩av在线免费观看中文字幕| 97国产精品人人爽人人做| 国内精品视频免费观看视频| 爱毛片在线成人免费看| 国产日日夜夜精品视频免费| 人成免费视频一区二区三区| 国产主播精品在线一区| 成人污视频在线免费观看网址| 熟妇高潮喷水在线120p| 中文字幕一二区二三区人妻专区| 婷婷色在线免费视频| 国产在线免费av观看| 亚洲 欧美视频在线| 中文字幕欧美人妻精品精品| 亚洲欧洲日韩av专区| 丰满老熟女av在线| 精品suv一区二区33| 亚洲影视精品一区二区| 日本少妇不卡狠狠狠| 瑟瑟视频在线网站免费观看| 亚洲av永久无码精品尤物| 99via精品福利影视| 中文字幕在线观看一二三四| 欧美熟妇激情在线观看| 视频一区二区在线观看视频 | 韩国的黄萝卜是怎么腌制的 | 亚洲va欧美va国产综合定档| 欧美一区二区三不卡| 日本熟艳妇A站黄色视频| 99热在线都是精品免费| 午夜久久在线观看视频| 白丝骚逼美女被操到逼水直流| 九色91在线只有精品| 国产一级久久久久高清版| 国产亚洲精品a77777| 日韩一二三在线视频播放| 亚洲熟女国产午夜精品| 欧美激情免费观看一区二区| 蜜桃视频app网站入口| 99青青草原在线视频| 无套内射黑丝美女91| 日韩妹子精品视频在线观看| 推荐国产福利一区二区三区| 久久香蕉欧美日韩av蜜桃| 无码伊人久久大杳蕉中文无码| 亚洲91精选一区二区在线| 午夜无码精品一区二区三区| 99成人自拍视频在线观看| 免费国产一区二区三区在线播放| JK白丝喷白嫩嫩久久久| 亚洲国产综合精品中文字幕 | 99在线只有精品视频| 日韩欧美免费看的惊悚片电影| 鲁死你资源站亚洲av一级aⅴ| 中文字幕=中文字幕| 一区二区三区免费精品| 人视频一区二区三区| 狠狠操狠狠操狠狠搞| 狠狠色丁香久久综合频道日韩| 精品一区二区三区最新| 2021久久国自产拍精品 | 嫩草伊人久久精品少妇av网站| 亚洲天堂国产精品乱伦一区| 精品人妻一二三区更新| 成人国产av精品麻豆入口| 激情视频国产在线观看| 国产欧美亚洲精品第一页青草| 91桃色午夜福利视频| 亚洲av狠狠的爱一区二区| 99久久无色码中文字幕免费| 亚洲情色成人精品视频| 国产高清 国产av| 欧美日韩国产免费福利| 无套内射黑丝美女91| 中文字幕 av 在线| 激情视频国产在线免费观看| 久久久久久久久久99蜜桃| 国产91福利在线导航| 国产亚洲精品久久久久久电影| 欧美日韩精品亚洲欧美| JK白丝喷白嫩嫩久久久| 国产高新无码在线观看| 亚洲av高清一区二区三区色| 国产主播av在线观看| 男人插女人逼视频播放| 少妇人妻肉欲短视频| 超碰在线97观看国产| 男女上下差差发哈插插插| 精品国精品国自产在产国产| 91九色在线视频播放| 99久久无色码中文字幕免费| 最近最新中文字幕资源在线| 黑人中出日本人妻系列| 国产中文字幕88av| 久久久久久久久91精品视频| 国产欧美亚洲精品第一页青草| 国产精品国产三级区别第一集| 成人免费xxxx在线| 男女啪啪自拍露脸视频| 精品国产精品国产免费| 日本少妇一二三视频| 亚洲最大第八色在线视频| 午夜天堂网在线观看资源网站| 青青草手机免费在线视频| 亚洲国产成人久久无码| jizz成人在线视频| 亚洲精品一二三在线观看| 欧美人妖一区二区三区| 漂亮人妻视频免费在线播放 | 999人妻精品中出| 亚洲天堂aaa一区二区| 自拍偷拍亚洲色图经典三级| 国产小视频在线播放| 青青国产的视频在线播放| 亚国产亚洲亚洲精品视频| 中文字幕人妻二区三区免费视频| 99青青草原在线视频| 色情按摩XXXXXX视频| 国产成年人性生活视频| 男人插女人阴穴的视频| 亚洲综合精品天堂丁香芒果| 男女裸交无套啪啪激情高潮| 国产精品视频综合一区二区| 最近最新中文字幕资源在线| 宾馆偷拍一区二区三区| 欧美国产亚洲自拍偷拍| 青娱乐休闲在线观看视频| 日韩午夜福利三级经典| 国产精品一级片免费看| 可以免费看黄色的网址| 97人妻人人爱人人澡人人爽| 9l视频自拍九色9l视频不卡| 97超碰人人澡香蕉| 在线能看的网站你懂得| 亚洲av免费观看网站在线观看| 青青色国产在线视频网站| 日韩精品久久日日躁夜夜躁| 蜜桃人妻av2023| 亚洲熟女乱色综合小说| 亚洲AV永久青草无码士清品| 中文字字幕在线中文乱码2019| 在线免费观看精品一区| 自拍偷拍亚洲色图经典三级| 欧美亚洲污视频网站| 中文字幕在线观看一二三四| 丝袜美腿av一区二区| 极品美女少妇高潮喷水| 日本道高清免费在线视频| 亚洲国产欧美日韩综合| 中文字幕在线观看操穴视频| 亚洲中文有码字幕青青| 亚洲精品乱码久久久久99| 97se狠狠狠狠狼鲁亚洲综合色| 啊!用力操我!好爽| 老外插美女在线视频| 日本不卡视频免费播放| 中文在线播放一区二区三区| 日韩一级高清免费播放| 97精品视频久久久久| 日本超清有码在线观看| 亚洲精品一区二区三区av| 国产九色视频在线观看| 国产美女精品久久久有奶水| 青草神马视频在线网址| 大香蕉红杏在线观看| 天天搡天天狠天干天| 成人av毛片免费观看| 国产精品久久久久久久综合av| 成人午夜福利视频镇东影视| 啊啊啊啊在线视频观看| 强行进女小姪女小芳| 99精品久久久久久噜噜| 亚洲国产精品va在线观看香蕉| 日韩欧美在线综合网高清| 超碰在线97观看国产| 国产综合欧美日韩在线观看| 成年免费毛片视频不卡| 成年大片免费视频播放二级| 国产视频在线观看一区二区极品 | 亚洲欧美综合一区二区三区四区| 床戏高潮呻吟声片段大全| 中文字幕人妻二区三区免费视频| 老鸭窝最新在线视频| 亚洲av乱码一区二区三区观影| av在线视频观看免费| 欧美在线中文字幕第一页| 亚洲最大第八色在线视频| 国产大全视频在线观看| 17c久久精品国产亚洲av蜜柚| 亚洲黄色片免费在线| 日韩一二三在线视频播放 | 最近免费中文字幕日韩| 亚洲经典国产一区二区三区| 精品99久久久久久久久| 亚洲av综合在线观看免费| 影音先锋婷婷五月青青草视频在线 | 免费午夜在线看福利片| 成年人在线观看福利视频| 中文字幕一区久久性色| 色yeye香蕉人妻凹凸一区二区| 亚洲av综合在线观看免费| 图片区小说区自拍偷拍区| 可以在线观看的av网站| 欧美 亚洲 国产 日韩一| 日韩专区欧美专区第五页| 精品久久久久久综合日本欧美| 亚洲一区二区日韩欧美久久 | 2021国产麻豆剧传媒精品入口| 大鸡吧淫水四射视频| 成年人在线观看福利视频| 亚洲va欧美va国产综合久久| 日本性生活视频观看免费| 91最新资源在线观看| 国产91手机精品在线播放| 女友97年白嫩漂亮在线看| 国内精自线一二三四区| 人人爽人人爽人人妻| 中文字幕人妻不卡久久| 嫩草伊人久久精品少妇av网站| 91九色p精品久久久| 日产精品免费一区二区三区| 天天射天天舔天天看| 国产剧情传媒av在线| 91精品国产在热久久| 1234中文字幕内射在线| 中文字幕乱码人妻在线观看 | 亚洲嘿嘿网站在线观看| 白丝大胸美女操批内射视频| 欧美黑人一级性视频| 蜜桃黄视频在线观看| 亚洲国产成人久久无码| 中文字幕中文字幕一区三区| youjizzcom精品少妇| 大香蕉在线欧美观看| 中文字幕久久久aⅴ大片| 不戴胸罩的人妻电影| 免费在线观看不卡高清av| 成人av网站在线观看| 黄色片网站国产精品| 老头插进去好多水'视频| 男人插女人阴穴的视频| 成人涩涩小片视频日本| 成人污视频在线免费观看网址| 中文字幕_第1页_绿茶av| 真实国产乱子伦一区| 亚洲风情 国内自拍av| 人妻熟女中文字幕电影| 嫩草伊人久久精品少妇av网站| 四季亚洲中文专区av| 国产区精品一区二区不卡中文| 成人两性色午夜视频免费88AV| 日韩三级 欧美精品| 在线步兵一区二区三区| 六十六节医疗保健操全套| 蓝莓小视频在线观看| 日日夜夜精品视频观看| 国产美女视频网久久69| 激情91久久婷婷综合| 国产不卡剧情在线观看| 成年女女子免费视频播放| 日本在线观看视频黄大片www| 亚洲精品一二三在线观看| 蜜臀av在线地址一地址二| 99via精品福利影视| 欧美码一二三区线观看| 欧美极品少妇αv另类| 91网在线视频中文字幕| 在线观看一区二精品视频| 久久久久一区二区三区四区| 人妻熟妇久久久久久xxx| 男人的鸡插入美女的小穴 | 亚洲国产丰满熟女一区二区三区| 日本午夜色视频在线观看| 91成人在线观看免费| 操死你 骚货 视色| 看国产剧的免费软件| 日韩欧美精品熟妇视频播放| 夜夜撸夜夜干夜夜操| 欧美日韩黄色aaa| 国产成人18黄网站免费观看| 97国产精品人人爽人人做| 亚洲av 综合一区| 久久久久一区二区三区四区| av蜜臀免费在线观看| 亚洲码欧洲码在线观看| 熟妇av一区二区三区| 精品国产成人在线免费| 91精品久久一区二区| 天天插天天舔天天日| 女高中生第一次破苞av| 亚洲欧美熟妇另类久久久久久| 经典视频一区二区三区| 精品人妻天天爽夜夜爽| 在线观看的a站视频| 一本v亚洲v天堂一区二区| 欧美另类视频第二页| 中文字幕精品无码一区二区三区| 一区二区三区四区无人区| 成人涩涩小片视频日本| www精品一区二区三区| 日本人妻偷人妻中文字幕| 大逼小逼操大屌视频| 色屁屁一区二区三区视频国产| 亚洲在线中文字幕av| 可以在线观看的av网站| 国产精品无码一区二| 91九色porny蝌蚪主页| 全国av一卡二卡三卡免费| 一级av中文字幕在线观看| 狠狠操狠狠操狠狠搞| caoporn97超碰| 国产亚洲精品137片内射| 333kkkk·com99久久| 日韩精品久久日日躁夜夜躁| 91福利在线观看免费| 99久久人妻精品免费②区| 在线视频播放免费网站| 日日夜夜精品视频观看| 日韩精品在线观看直播 | 在线免费观看亚洲v| 亚洲一区二区蜜乳av| 亚洲综合在线一区二区三区四区| 全国最大成人 中文字幕| 四季亚洲中文专区av| 大香蕉国产手机在线观看| 成人av毛片免费观看| 99精品在线免费观看| 小少妇久久久久久久| 日韩欧美在线综合网高清| 国产一级二级三级在线看| 欧美亚洲自拍偷拍xxx| 人妻在线一区二区三区| dorcelclub欧美成人| 亚洲天堂aaa一区二区| 熟女人妻伊人蜜桃视频| 国产日日夜夜精品视频免费| 天天操日日干夜夜操| 日韩精品视频网站免费观看| 最近最新中文字幕资源在线| 在线步兵一区二区三区| 人妻 日韩 制服 中文 在线| 欧美vide0sde极品另类| 亚洲女人毛毛多毛耸耸| 中文乱码字幕人妻精品| 亚洲视频资源在线播放| 亲爱的请你原谅我 中文字幕| 亚洲va欧美va国产综合久久| 国产精品一级片免费看| 人妻少妇久久中文字幕密拍| 中文字幕亚洲天堂av在线| 福利视频一二三在线视频免费观看 | 国产日韩欧美高清无网码| 蜜桃av在线观看网站| 国产剧情传媒av在线| 亚洲图片av伦理三级| 中文字幕乱码人妻在线观看| 国产精品久久久免费99 | 91九色成人原创视频| 欧美一级特黄大片做受日本| 亚洲va欧美va人人爽2| 在线步兵一区二区三区| 天堂久久精品无码一区二区| 97超碰人人澡香蕉| 欧美一卡二卡3卡4卡无卡十| 中文字幕+乱码+中文| xxx一区二区三区在线观看| 91精品久久一区二区| 免费精品国产人妻国语| 2022国产情侣在线视频播放| 日韩亚洲中文在线视频| 亚洲男人天堂2025| 在线播放三级黄色日韩av| 少妇厨房激情做爰欧美| 日本超清有码在线观看| 99久久国产亚洲精品| 麻豆精品传媒在线播放| 美女被插免费视频网站| 国产名人亚洲视频中文字幕| 欧美口爆吞精一区二区三区| 日韩欧美亚洲第五页| 亚洲一区二区三区视频免费观看| 久久日99久久里面有精品| 成年视频短视频在线播放| 中文字幕 亚洲轻轻av| 中文字幕一二区二三区人妻专区| 国产婷婷综合丁香亚洲欧洲| 人人妻,人人干,在线| 538精品视频国产| 午夜美女操逼高潮免费视频| ntr人妻セックス在线| 初撮日本五十路人妻| 爱妃视频av一区二区| 中文字幕不卡在线视频极品| av在线播放网址大全| gogo大尺度二区三区| 久久久久久久国产黄色片| 免费观看男人操逼的操女人的| 漂亮人妻视频免费在线播放| 精品少妇人妻大乳av| 8x8x国产在线观看一区二区| 亚洲va欧美va国产综合定档| av在线视频观看免费| 最近2019日本中文字幕| 国产精品不卡在线播放| 黄免费在线观看视频| 91在线精品一区二区毛片| 亚洲中字幕日产AV片在线| 在线能看的网站你懂得| 国产在线av免费观看| 91激情视频在线视频| 中文字幕av影片免费在线观看| 99久久热只有国产精品| 人妻少妇精品视频在线观看| 成人国产av精品麻豆入口| 精品黑丝袜一区二区三区| 97久久超碰成人精品网页91| 中文字幕精品一区二区三区视频| 初撮日本五十路人妻| 午夜无码精品一区二区三区| 嫩草伊人久久精品少妇av网站| 333kkkk·com99久久| 日韩精品在线观看直播| 亚洲mv在线免费观看| 熟女老骚91porn九色| 91福利在线观看免费| 免费一区二区三区香蕉| 成人av在线国产精品| 人妻少妇久久中文字幕密拍| 久久久久久久久久二区| 国产精品不卡在线播放| 欧美欧美欧美欧美欧美欧美| 日韩夫妻性生活视频在线观看免费| 无翼乌18禁本子全彩无遮 | 精区一品二品精区在线91| 免费观看日本伦理片| 国产婷婷色一区二区三区| 精品人妻一区二区三区18p| 福利视频一二三在线视频免费观看 | 美女和猛男诱惑操逼捅鸡鸡| 亚洲免费在线观看,| 2023天天色天天操| 亚洲一区二区三区视频免费观看| 8x8x国产在线观看一区二区| 日韩欧美激情啪啪啪| 97视频免费公开在线播放| 在线 国产区 视频| 超碰青青草原免费在线观看97| 欧美区一区一区三区| 精华液一区二区区别| 丰满人妻一区二区三区免费视频棣| 午夜动漫福利在线观看| 日本黄色an久久一区| 11yyy国产成人综合在线观看| 中文字幕熟女人妻丝袜电影| 91在线视频免费亚洲| 日本激情床震无遮掩视频| 日本伊人中文字幕在线| av中文字幕 中文字幕第一页| 国产91色婷婷手机在线| 亚洲区欧美区自拍偷拍区| 玩弄放荡人妻少妇免费视频| 天天看天天舔天天摸| 人妻夜夜爽av网站| 成人两性色午夜视频免费88AV| 少妇又色又紧又爽又刺激视频| av天堂中文版www在线| 亚洲情色成人精品视频| 欧美国产一级在线免费观看| 人妻夜夜爽av网站| 网友自拍+人妻丝袜+制服诱惑| 欧美一区二区三区视频在线观看| 欧美欧美欧美欧美欧美欧美| 超级碰免费人妻97| 女同性ⅹxx女同hd偷拍| 夜夜躁爽日日躁狠狠躁一区| 天天干天天干天天操天天日| 欧美视频免费在线看| 宝贝腿开大点我添添公漫画| 亚洲综合网男人的天堂| 亚洲欧洲久久av日日更新| 91精品人妻丰满熟妇| www国产精品人妻| 成人av在线播放老熟妇| 色婷亚洲五月在线观看| 在线观看欧美日一区二区 | 午夜动漫福利在线观看| 男人的天堂av成人网| 亚洲区欧美区自拍偷拍区| 亚洲一二三区免费视频| 91极品尤物国产在线播放| 老熟妇乱一区二区三区| 97 在线观看视频网站| 精品久久久久久综合日本欧美| 亚洲av狠狠的爱一区二区| 欧美国产亚洲自拍偷拍| 伊人网av在线观看| 把鸡鸡伸进去的视频| 国语自产精品视频在线看一大j8| 色情按摩XXXXXX视频| 北岛玲在线播放中文字幕| 男人的天堂av成人网| 国语自产精品视频在线看一大j8| 忘忧草精品久久久久久久高清| 国产一级特黄aaa片做受小说| 亚洲中文字幕综合av一区| 亚洲精品视频在线蜜桃| 男生捅女生逼的免费视频软件| 亚洲黄色小视频网址| 2025中文字幕在线| 日韩高清亚洲精品国产欧美| 日本aaaaa特黄| 日韩人妻无码一区2区3区| 亚洲天堂啪啪爱之巢穴| 亚洲午夜激情视频在线播放| 成年女女子免费视频播放| 大鸡吧淫水四射视频| 人妻女教师的沦陷大明| 日本熟艳妇A站黄色视频| 色视频在线观看在线| 青青色国产在线视频网站| 国产午夜精品人妻中文字一幂| 色视频免费在线观看高清| 狠狠操视频在线免费观看| 亚洲国产成人一区二区久久久| 深夜福利视频一区二区| 特黄特黄的日韩爽大片| 伊人婷婷视频在线观看| 欧美一区二区三区高清视频| 蜜桃精品噜噜噜成人av小说 | 国产一区二区精品调教| 亚洲国产精品久久久久秋霞1| 99视频精品在线免费观看| 亚洲国产成人爱av网站| 91大神长腿美女视频在线观看| 国产精品久久久久久电| 亚洲精品乱码久久久久99| 美女很黄很色国产av| 亚洲av乱码国产精品观看麻豆| 四十路の五十路熟女网址| 在线能看的网站你懂得| 亚洲精品无码中文字幕专区| 嫩草伊人久久精品少妇av网站| 青青草原精品资源站| 北条麻妃超碰av在线播放| 美女摸自己下面出白浆的视频| 色视频网在线视频观看| 少妇性感美女一区二区三区四区| 大香线蕉视频在线观看75| 又粗又硬又黄又色的| 久久古典武侠第1页777| 弄爽新婚人妻第五部美妙人妻| 日韩亚洲欧美中文在线电影| 日本不卡视频免费播放| 天天干天天插天天透| 天天草天天日天天舔| 日韩一二三区免费播放视频| av亚洲欧美一区二区| 三级黄色在线播放网站| 亚洲区欧美区自拍偷拍区| 久久久久久久毛片5| 美女少妇一区二区久久久| 免费高清视频亚洲熟女| 欧美视频免费在线看| 国产视频在线观看一区二区极品| 欧美精品色呦呦首页| 放荡的丝袜美腿护士老师| 亚洲美女福利视频免费| 131美女午夜免费视频| 91超碰在线免费播放| 台湾性dvd性色av| 国产一区二区三区黄片欧美| 白丝大胸美女操批内射视频| 粉嫩玉足夹茎视频在线看| 在线观看免费a级电影| 亚洲欧洲久久av日日更新| 国产福利一区二区三区久久久| 国产高清欧美日韩精品| 亚洲综合在线一区二区三区四区 | 8x8x国产在线观看一区二区| 在线免费观看精品一区| 日产精品免费一区二区三区| 男女又黄又刺激a片免费| 在线播放__91色| 亚洲人成网站在线播放| 97人妻人人爱人人澡人人爽| 国产成年人性生活视频| 女高中生第一次破苞av| 亚洲一点不卡福利视频| 九九热在线视频观看最新| 亚洲在线视频一区二区| 国产女人AAA级久久久级| 99精品国产免费电影| 亚洲无码免费一二三区视频| 亚洲天堂av影视在线| 中文字幕av影片免费在线观看| 蜜桃黄视频在线观看| 一区二区三区日韩高清| 男生捅女生逼的免费视频软件| 亚洲国产欧美日韩综合| 天天射天天舔天天看| 水蜜桃在线视频一区二区三区| 深夜释放成人污污污| 天堂av在线一区少妇| 女友97年白嫩漂亮在线看| av看片资源网手机版在线播放| 2022国产情侣在线视频播放| 999人妻精品中出| 无套内谢少妇一二三四| 国产女主播av在线播放观看| 三级日本美女少妇99| 中文幕av一区二区三区佐山爱| 97超碰资源在线播放| 国产亚洲精品久久久久久电影| 放荡的丝袜美腿护士老师| 宅男视频在线观看视频| 麻豆传媒视频区一区二| 免费看亚洲av的网站| 亚洲女人毛毛多毛耸耸| 老鸭窝最新在线视频| 九色视频在线观看网址| 国产精品视频成人在线观看| 男女视频一区在线观看| 九九re热这里只有精品视频| 日韩亚洲欧美中文在线电影| 黄色片在线免费观看日韩不卡| 亚洲制服丝袜日韩欧美制服| 97久久超碰成人精品网页91| 亚洲激情四射在线观看视频| 亚洲图片av伦理三级| 日本国产一区二区三区视频| 日本久道久久综合狠狠老| 亚洲国产精品久久久久秋霞1| 最近最新中文字幕资源在线| 国产免费公开视频在线播放| 最新久久久久久久久久久| 亚洲一级精品久久久蜜桃| 亚洲午夜短视频在线| 亚洲另类校园春色小说| 中文字幕一二区二三区人妻专区 | 密乳一区二区三区国产亚洲av| 青青青在线视频免费观看手机版| 国产亚洲av网址大全| 天天草天天日天天舔| av制服国产丝袜黑丝网站| 亚洲男人天堂2025| 男女又黄又刺激a片免费| 国产精品视频成人在线观看| 男男小视频在线观看| 亚洲的国产中文字幕的av| 日本 高清 中文字幕| 国产加勒比精品蜜臀在线观看 | 国产一级二级三级在线看| 亚洲激情四射在线观看视频| 国产精品制服诱惑丝袜的| 亚洲精品av成人在线观看| 国产高清激情在线视频| 人妻熟妇中文字幕免费视频| 亚洲天堂中文字幕手机在线| 最近2019日本中文字幕| 精品国产伦理片1区2区| 欧美日韩一区二区a∨视频| 亚洲综合在线蜜臀av| 精品国产成人在线免费| 在线免费观看国产欧美日韩| 亚洲三级色片视频在线观看| 色五月婷婷综合国产在线| 中文字幕人妻二区三区免费视频| 图片区小说区自拍偷拍区| 亚洲中文精品第一页| 激情黄色激情综合久久| 麻豆免费成人小视频| 亚洲另类校园春色小说| 老头插进去好多水'视频| 啪啪啪在线观看免费视频| 91精品国产人妻国产| 中文字幕一区二区720p| 日本太黄视频免费看| 午夜dj在线观看完整版| 国产精品免费观看91| 加勒比人妻av系列专区| 日韩激情又爽aaaaa级| 日本特黄免费一级大片| 精品人妻一二三区更新| 极品扒开粉嫩小av一区二区| caoporn97超碰| 久久精品乱码中文字幕| 中文亚洲字幕国产剧情| 动漫黄网站在线观看| 91精品久久久久久久99蜜臀| 国产美女视频网久久69| 五月婷婷丁香中文字幕亚洲一区| 日本伊人中文字幕在线| 99久久久久久久久96久久| 中文字幕人妻二区三区免费视频| 欧美欧美欧美欧美欧美欧美| 国产精品国产自产拍在线| 亚洲欧美激情人妻人妻综合| 丰满熟妇人妻一区二区三区| 亚洲久久久久久久久| 91成人国产在线观看九色| 91九色p精品久久久| 精品久久久免费av| 97超碰在线中文字幕精品| 97精品视频久久久久| caoporm超碰97| 精品少妇人妻大乳av| 中文字幕在线观看观看av?| 啊啊啊啊在线视频观看| 男人插女人动漫视频| 日本激情床震无遮掩视频 | 亚洲国产欧美日韩综合| 人妻少妇精品视频专区专区| 亚洲人妻无吗中文字幕| 国产名人亚洲视频中文字幕| 尤物在线免费视频观看| 香蕉视频免费看国产精品| 亚洲一区二区嗯好爽快点| 91中文字幕yellow| 东京不太热在线观看视频| 三级日本美女少妇99| 亚洲无码免费一二三区视频| 人妻少妇精品视频在线观看| 日本阿v片中文字幕在线| 国产一区二区精品调教| 50岁老熟女高潮喷水了| 在线观看免费a级电影| 日本人妻偷人妻中文字幕| 午夜精品婷婷午夜精品| 7799精品视频免费观看| 欧美专区在线观看视频| 亚洲午夜激情视频在线播放| 9网网站免费看nb国产| 欧美午夜理论片1000在线播放| 9网网站免费看nb国产| 91精品青草福利久久午夜| 亚洲女子4x100米接力决赛| 亚洲情色成人精品视频| 草莓视频精品在线观看| 自由的成熟女性色视频| 亚洲在线视频一区二区| 色综合天天综合网天天狠天| 可以免费直接观看的av| av熟女乱一区二区三区| 国产午夜精品人妻中文字一幂| 国产综合无码视频呢在线| 广州最大的成人免费视频| 亚洲AV永久青草无码士清品| 欧洲亚洲国产永久精品| 97超碰在线中文字幕精品| 韩国美女视频在线观看18+| 久久久久一区二区三区四区| xxxxxx日本少妇| 黄免费在线观看视频| 国产亚洲精品a77777| 国产主播精品在线一区| 樱桃国产成人精品视频| av制服国产丝袜黑丝网站| 狠狠添狠狠添狠狠添免费出高潮水| 免费可以看黄页的视频| 真实国产乱子伦一区| 亚洲欧美三级在线观看视频| 天天操日日干夜夜操| 漂亮人妻久久被公侵犯| 日产精品免费一区二区三区 | 漂亮人妻久久被公侵犯| av一区二区在线播放色婷婷精品| 欧美码一二三区线观看| 欧美国产一区二区三区在线看| 国产午夜精华视频在线| 国产大女露脸自拍大叫| 97精产国品一二三产区区| 欧美日韩国产免费福利| 亚洲欧洲日韩av专区| 人妻天天爽夜夜爽2区蜜a∨| 青青久在线观看免费视频| beeg欧美丰满人妻| 久久97久久97免视看| 伊人成人综合小说网| 成人午夜福利视频镇东影视| 91午夜免费在线视频| 亚洲91精选一区二区在线| 人妻性奴隶免费观看| 美女厕所撒尿偷拍视频| 国产精品久久乱码无人区| 欧美日韩中文国产一区| 一区二区三区四区无人区| 免费观看亚洲女同性恋一区二区| 天天爽天天爽免费视频| 丰满女人的毛片久久久久久| 日本在线不卡视频播放| 超碰在线97观看国产| 欧美丝袜办公室在线91| 加勒比久久综合久久678| av在线免费观看一区| 久久久com久久久com| 亚洲欧美久久精品免费| 亚洲高清码在线精品av| 美女和猛男诱惑操逼捅鸡鸡| 中文在线天堂中文在线天堂| 日本黄站一区二区在线观看| kendralust熟女少妇| 日韩毛片在线观看网站| 欧美国产亚洲自拍偷拍| 成年人午夜网站在线播放 | 亚洲中字幕日产AV片在线| av制服国产丝袜黑丝网站| 精品黑丝袜一区二区三区| 在线视频播放免费网站| 男生捅女生逼的免费视频软件| 97se狠狠狠狠狼鲁亚洲综合色| 初撮日本五十路人妻| 中文字幕+乱码+中文| 国产综合欧美日韩在线观看| 精品国产污污污免费网站入口| 黄色的视频黑丝网站| 少妇花园流浆嗯嗯张开视频| 中文字幕人妻不卡久久| 久久97久久97免视看| 久久久久免费特级黄片| 大伊香蕉精品一区视频在线| 中文在线播放一区二区三区| 人妻精品无码一区二区三区百花| 日韩一二三区免费播放视频| 男插女下面真人视频| 老头插进去好多水'视频| 色老汉av一区二区三区| 自拍偷拍国产欧美精品| 中文字幕精品一区二区三区视频| 青青操在线超碰传媒| 特黄把女人弄爽又大又粗| 亚洲国产精品午夜福利久久 | 青青日常在线免费观看| 一级特黄夫妻生活大片| 天堂av2025一区| 大香蕉免费在线伊人| 国产精选黄片免费观看| 99热在线这里只有精品| 91:久久久久久久久久| 亚洲第一视频在线视频| 精品人妻一二三区更新| 69久久夜色精品国产69| 国产男女激情视频一区| 超碰国产极品尤物在线| 欲求不满的邻居人妻一区二区三区 | 日本黄色录像第1部播放器播放| 在线观看欧美日一区二区 | 在线观看麻豆免费视频| 九九热线这里只有精品| 亚洲制服丝袜日韩欧美制服| 美日韩黄色一级视频| 97超碰在线资源总站 | 韩国美女视频在线观看18+| 亚洲av熟女av熟女| 51国精产品一区二区三| 国产人妖综合在线视频| 日本久道久久综合狠狠老| 天天干天天做天天摸| 日本一区二区三区高清在线| 色 小说 激情 图片| 亚洲综合熟女久久30p| 人妻少妇麻豆中文字幕久久精品 | 亚洲无码免费一二三区视频| 168黄页网免费观看视频| 999精品欧美一区二区三区黑人| 日韩级视频在线播放| 成人免费午夜精品一区二区| 中文字幕人妻免费电影| 最新久久久久久久久久久| 久久免费视频精品8| 秋霞网av一区二区三区中文字幕| 99视频精品在线免费观看| 婷婷热re99久久精品国产| 免费高清视频亚洲熟女| 无翼乌18禁本子全彩无遮| 久久久久久久久91精品视频| 国产黄色片在线观看网站| 北条麻妃超碰av在线播放| 中文字幕乱码熟女人妻水蜜桃| 成人av毛片免费观看| 制服诱惑,日韩情色| 亚洲经典国产一区二区三区| 一级av中文字幕在线观看| 亚洲人成网站在线播放| 精品人妻熟女a62v久久| 日本aaaaa特黄| 蓝莓小视频在线观看| 国产午夜精品人妻中文字一幂| 最近的中文字幕一区二区| 91在线视频免费亚洲| 日韩激情小说在线播放| 最新69视频在线观看| 久久日99久久里面有精品| 日韩毛片免费视频观看| 狠狠色丁香久久综合频道日韩| 91免费免费观看在线| 欧美日韩中文国产一区| 污视频免费网站观看| 激情视频国产在线观看| 男女上下差差发哈插插插| 中文字幕少妇av一区二区三区| 亚洲视频资源在线播放| 日本mm一区二区三区高清| 中文字幕欧美人妻精品精品| 大胸美女黄网站色片大全亚洲| 超碰在线97观看国产| 国产午夜精华视频在线| 好紧好湿好爽好大A视频| 欧美亚洲国产激情在线| 一本v亚洲v天堂一区二区| 国产午夜精品1区2区3区| 九色91在线只有精品| 欧美三级不卡在线播放 | 强行进女小姪女小芳| 99久久国产亚洲精品| 一本v亚洲v天堂一区二区| 北岛玲在线播放中文字幕| 亚洲狠狠婷婷久久综合| 紫川动漫在线观看免费完整版| 亚洲最大的中文字幕在线| 天天插天天射天天日天天干| 在线视频 中文字幕 一区二区| 大胸美女黄网站色片大全亚洲| 国产精选黄片免费观看| av亚洲天堂中文字幕| 在线视频 中文字幕 一区二区| av制服国产丝袜黑丝网站| 国产在线精品免费视频| 免费av在线亚洲精品| 国产男女激情视频一区| 天天日天天爱天天玩| 大香蕉免费在线伊人| 国产精品免费观看av| 日本不卡视频免费播放| 91精品国产在热久久| 国产精品美女久久久久av精| 内地伦理片在线免费观看播放| 在线观看免费视频网站色| 天天日,天天干,天天舔| 欧美日韩国产免费福利| 欧美成人中文字幕在线视频| 亚洲情色成人一二三区| 在线播放__91色| av完整版在线播放| 亚洲久久久久久久久| 日本a v中文字幕网| 天堂av2025一区| 日韩亚洲中文在线视频| 一区二区三区麻豆蜜桃视频| 国产精品一级片免费看| v888av精品少妇| 亚洲熟妇少妇一区二区| 国产综合无码视频呢在线| 毛片中文aaa五月天| 美女叉开腿让男人桶视频| 天天干天天谢天天操| 亚洲短视频自拍偷拍| 日本在线观看视频黄大片www| 久久久久久久久久二区| 亚洲 欧美 日韩 另类在线| 日韩精品性色一区二区在线观看| 乱色熟女综合一区二区三区四| 日本丰满少妇毛茸茸| 在线成人中文字幕网站| 国产成人自拍精品在线| 玩弄放荡人妻少妇免费视频| 50岁老熟女高潮喷水了| av蜜臀一区二区三区| 日韩一级黄色片免费在线观看| 91午夜免费在线视频| 91九色在线视频入口| 天堂av中文官网在线| 少妇厨房激情做爰欧美| 国产交换乱淫99视频| 一级视频在线观看高清国产免费| 中文字幕=中文字幕| 亚洲插美女综合av| 国产成年女人在线观看| 91精品国语对白人妻刺激使劲| 日韩激情小说在线播放| 精品一区二区三区最新| 国产老头视频在线观看| 蜜臀国产精品久久久久久| 日韩亚洲欧美中文在线电影| 一区二区三区四区无人区| 国产成年女人在线观看| 精品久久久久久无码中文野结衣 | 插美女阴道流水视频| 国产精品制服诱惑丝袜的| 欧美亚洲自拍偷拍xxx| av熟女40到50岁名字| 免费在线观看不卡高清av| 男人的天堂av成人网| 欧美日韩高清无毒不卡| 国产高清精品福利私拍国产写真| 91瑟瑟视频在线观看| 在线观看免费视频网站色| 玩弄人妻少妇精品视频在线 | 成人自拍在线观看视频| 黑人中出日本人妻系列| 国产91边对白在线播放| 熟女国产一区二区三区| 国产精品亚洲av国产| 欧美在线中文字幕第一页| 在线精品亚洲欧美日韩| 50岁熟女乱综合一区二区| 日产精品免费一区二区三区| 美女福利在线免费观看| 久久久久久久岛国免费播放| 中文在线播放一区二区三区| 人妻在线一区二区三区| 中国黄页毛片免费视频| 男女啪啪视频免费国产| 一级黄色片特级黄色片| 欧美黑人一级性视频| 天天日天天操天天干天天舔天天射| 狠狠干在线视频观看| 国产日日夜夜精品视频免费| 黄色古装操逼小视频| 99久久99久久综合| 亚洲女人毛毛多毛耸耸| 91国语对白精彩在线视频| 欧美成人性生活一级片| 亚洲图片 欧美专区 自拍| av黄片网站在线观看| 富婆按摩高潮一区二区三区91| 国产精品久久久久久一级精品 | 国产精品久久久久久电| 成人av在线播放老熟妇| 欧美的一区二区三区| 粗大挺进朋友人妻身体里国产| 91精品青草福利久久午夜| 少妇厨房激情做爰欧美| 亚洲av免费观看网站在线观看| 日日日日日日日夜夜夜夜夜| 91精品国产99久久| 精品人妻一区二区三区18p| 中文字幕av一区二区三区不卡| 天天干人人干天天操| 国产精品一级片免费看| 国产在线观看XXXXX| 亚洲69视频在线观看| 亚洲欧美日本高清在线观看| 天天综合网精品视频天天看| 91免费一区二区久久| 欧美亚洲综合另类清纯自拍| 人妻一区二区三区中文字幕免费| 影音先锋婷婷五月青青草视频在线 | 国产 精品 日韩 人妻| 亚洲熟女毛茸茸上厕所尿尿| 天天日,天天干,天天舔| 日本超清有码在线观看| 国产精品综合自拍第一页| 亚洲国产精品久久久久秋霞1| 777爽死你无码免费看一二区| 天天插天天日天天操天天干| 欧美成在线在线视频| 涩爱av一区二区在线播放视频| 好色av一区二区三区四区| 国产一区二区三区在线资源| 国产精品免费视频22| 污污污的视频免费在线观看| 日本国产一区二区三区视频| 日本熟妇三十熟女精品区| japanese国产在线播放| 夜夜躁爽日日躁狠狠躁一区| 亚洲黄片在线免费播放| 日本黄色录像第1部播放器播放| 一级视频在线观看高清国产免费| 182tv免费福利中文字幕| 成人自拍在线观看视频| 91免费在线播放视频| 性色av不卡一区二区三区| 亚洲欧美综合一区二区三区四区 | 欧美色视频日本片免费看| 9色porny人妻| 日本一区二区三区综合网| 被大鸡吧操骚B真爽视频| 69视频永久免费观看| 一区二区三区日韩高清| 国产精品亚洲av国产| 两人在沙发激情的视频| 中文字幕人妻免费电影| 欧美乱码卡1卡二卡3卡4| 三级大尺度无码视频| 国产一级二级三级在线看| 在线免费观看亚洲v| 日韩欧美亚洲第五页| 熟妇高潮喷水在线120p| 丝袜 制服 国产 欧美 日韩| 邪恶老湿精品一区二区| 97人妻少妇熟女av| 日本黄站一区二区在线观看| 亚洲 欧美视频在线| 91久久久久精品一区二区三区| 97精品视频久久久久| 人人爱精品人人艹人人干| 动漫卡通一区二区三区| 中文字幕在线aⅴ免费观看| 熟女人妻伊人蜜桃视频| 污视频免费网站观看| 久久精品乱码中文字幕|