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

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

Android中LayoutParams是什么?Android中LayoutParams總結(jié)和用法

來源:CSDN 時(shí)間:2022-12-08 15:16:05

日積月累第三周第四天。又是忙碌的一天,昨天看了兩集老羅的Android 視頻教程,感覺講的很基礎(chǔ)。繼續(xù)堅(jiān)持一天一集視頻。今天上班接觸了一下Android 的LayoutParams今天加以整理和梳理。

先查看一下API 中是如何介紹的,以搜索太多了。就挑一個(gè)ViewGroup.LayoutParams 看一下吧。

http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html


(資料圖片)

LayoutParams are used by views to tell their parents how they want to be laid out. See ViewGroup Layout Attributesfor a list of all child view attributes that this class supports.

The base LayoutParams class just describes how big the view wants to be for both width and height. For each dimension, it can specify one of:

FILL_PARENT (renamed MATCH_PARENT in API Level 8 and higher), which means that the view wants to be as big as its parent (minus padding)WRAP_CONTENT, which means that the view wants to be just big enough to enclose its content (plus padding)an exact number There are subclasses of LayoutParams for different subclasses of ViewGroup. For example, AbsoluteLayout has its own subclass of LayoutParams which adds an X and Y value.

Developer Guides

For more information about creating user interface layouts, read the XML Layouts developer guide.

我在這里看了一篇?jiǎng)e人博客對于LayoutParams的解釋,我覺的很到位,所以就繼續(xù)拿來主義。

其實(shí)這個(gè)LayoutParams類是用于child view(子視圖) 向 parent view(父視圖)傳達(dá)自己的意愿的一個(gè)東西(孩子想變成什么樣向其父親說明)其實(shí)子視圖父視圖可以簡單理解成 一個(gè)LinearLayout 和 這個(gè)LinearLayout里邊一個(gè) TextView 的關(guān)系 TextView 就算LinearLayout的子視圖 child view 。需要注意的是LayoutParams只是ViewGroup的一個(gè)內(nèi)部類這里邊這個(gè)也就是ViewGroup里邊這個(gè)LayoutParams類是 base class 基類實(shí)際上每個(gè)不同的ViewGroup都有自己的LayoutParams子類 比如LinearLayout 也有自己的 LayoutParams 大家打開源碼看幾眼就知道了 myeclipse 怎么查看源碼 請看http://byandby.iteye.com/blog/814277 下邊來個(gè)例子

Java代碼 :       //創(chuàng)建一個(gè)線性布局          private LinearLayout mLayout;             mLayout = (LinearLayout) findViewById(R.id.layout);            //現(xiàn)在我要往mLayout里邊添加一個(gè)TextView         //你可能會(huì)想直接在布局文件里邊配置不就O 了 那是 但是這里為了說明問題我們用代碼實(shí)現(xiàn)         TextView textView = new TextView(Activity01.this);                 textView.setText("Text View " );              //這里請不要困惑這里是設(shè)置 這個(gè)textView的布局 FILL_PARENT WRAP_CONTENT 和在xml文件里邊設(shè)置是一樣的如       //在xml里邊怎么配置高寬大家都會(huì)的。     //第一個(gè)參數(shù)為寬的設(shè)置,第二個(gè)參數(shù)為高的設(shè)置。              LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(                         LinearLayout.LayoutParams.FILL_PARENT,                         LinearLayout.LayoutParams.WRAP_CONTENT                 );                 //調(diào)用addView()方法增加一個(gè)TextView到線性布局中              mLayout.addView(textView, p);                //比較簡單的一個(gè)例子

如果還不能理解下邊在來一段直白的說明: LayoutParams繼承于Android.View.ViewGroup.LayoutParams. LayoutParams相當(dāng)于一個(gè)Layout的信息包,它封裝了Layout的位置、高、寬等信息。假設(shè)在屏幕上一塊區(qū)域是由一個(gè)Layout占領(lǐng)的,如果將一個(gè)View添加到一個(gè)Layout中,最好告訴Layout用戶期望的布局方式,也就是將一個(gè)認(rèn)可的layoutParams傳遞進(jìn)去。 可以這樣去形容LayoutParams,在象棋的棋盤上,每個(gè)棋子都占據(jù)一個(gè)位置,也就是每個(gè)棋子都有一個(gè)位置的信息,如這個(gè)棋子在4行4列,這里的“4行4列”就是棋子的LayoutParams。 但LayoutParams類也只是簡單的描述了寬高,寬和高都可以設(shè)置成三種值: 1,一個(gè)確定的值; 2,F(xiàn)ILL_PARENT,即填滿(和父容器一樣大小); 3,WRAP_CONTENT,即包裹住組件就好。

關(guān)于setLayoutParams報(bào)錯(cuò)

在繼承BaseAdapter的時(shí)候,用getView返回View的時(shí)候,用代碼控制布局,需要用到View.setLayoutParams,但是報(bào)錯(cuò)了,報(bào)的是類型轉(zhuǎn)換錯(cuò)誤,經(jīng)過研究,發(fā)現(xiàn),這里不能使用ViewGroup.LayoutParams而必須使用對應(yīng)父View的LayoutParams類型。如:某View被LinearLayout包含,則該View的setLayoutParams參數(shù)類型必須是LinearLayout.LayoutParams。原因在于LinearLayout(或其他繼承自ViewGroup的layout,如:RelativeLayout)在進(jìn)行遞歸布局的時(shí)候,LinearLayout會(huì)獲取子View的LayoutParams,并強(qiáng)制轉(zhuǎn)換成LinearLayout.LayoutParams,如

1 LinearLayout.LayoutParams lp  =  (LinearLayout.LayoutParams) child.getLayoutParams();

或者是如下定義:

1 LayoutParams lp  =  (LayoutParams) child.getLayoutParams();

以轉(zhuǎn)換成內(nèi)部類型LinearLayout.LayoutParams。

自己測試運(yùn)行的時(shí)候報(bào)空指針,原因?yàn)閏hild.getLayoutParams();這里沒有獲得到子控件所在的布局,查看代碼發(fā)現(xiàn)parent.addView(child);應(yīng)該寫在上面,之后child才能getLayoutParams();

點(diǎn)擊PopupWindow 外部區(qū)域消失 //view 是自定義的點(diǎn)擊PopupWindow 樣式 pop = new PopupWindow(view, ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);                 pop.setBackgroundDrawable(new BitmapDrawable());                 pop.setOutsideTouchable(true); pop = new PopupWindow(view, ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);                 pop.setBackgroundDrawable(new BitmapDrawable());                 pop.setOutsideTouchable(true); 上面兩句位置不能顛倒,不然無效?。ń?jīng)本機(jī)測試 不知道別人如何)必須設(shè)置backgroundDrawable()

WindowManager.LayoutParams 是 WindowManager 接口的嵌套類;繼承于 ViewGroup.LayoutParams 。          它的內(nèi)容十分豐富。其實(shí)WindowManager.java的主要內(nèi)容就是由這個(gè)類定義構(gòu)成。下面來分析一下這個(gè)類:          定義          public static class WindowManager.LayoutParams extends ViewGroup.LayoutParams implements Parcelable          繼承關(guān)系         java.lang.Object         android.view.ViewGroup.LayoutParams         android.view.WindowManager.LayoutParams         繼承來的屬性與常量         從ViewManager.LayoutParams 繼承來的屬性:         android:layout_height         Specifies the basic height of the view.         android:layout_width         Specifies the basic width of the view.         從ViewManager.LayoutParams繼承的常量:         FILL_PARENT         WRAP_CONTENT         MATCH_PARENT         兩個(gè)變量:         width         height         屬性及可用的常量定義        1. public int x;        如果忽略gravity屬性,那么它表示窗口的絕對X位置。        什么是gravity屬性呢?簡單地說,就是窗口如何停靠。        當(dāng)設(shè)置了 Gravity.LEFT 或 Gravity.RIGHT 之后,x值就表示到特定邊的距離。        2. public int y;        如果忽略gravity屬性,那么它表示窗口的絕對Y位置。        當(dāng)設(shè)置了 Gravity.TOP 或 Gravity.BOTTOM 之后,y值就表示到特定邊的距離。        3. public float horizontalWeight;        public float verticalWeight;        在縱/橫向上,為關(guān)聯(lián)的view預(yù)留了多少擴(kuò)展空間(像素)。如果是0,那么此view不能被拉伸。        其他情況下,擴(kuò)展空間(像素)將被widget所均分。        4. public int type;         窗口類型。         有3種主要類型:         Applicationwindows:         取值在 FIRST_APPLICATION_WINDOW 和 LAST_APPLICATION_WINDOW 之間。         是通常的、頂層的應(yīng)用程序窗口。必須將 token 設(shè)置成 activity 的 token 。        Sub_windows:         取值在 FIRST_SUB_WINDOW 和 LAST_SUB_WINDOW 之間。         與頂層窗口相關(guān)聯(lián),token 必須設(shè)置為它所附著的宿主窗口的 token。         Systemwindows:         取值在 FIRST_SYSTEM_WINDOW 和 LAST_SYSTEM_WINDOW 之間。         用于特定的系統(tǒng)功能。它不能用于應(yīng)用程序,使用時(shí)需要特殊權(quán)限。         下面定義了 type 的取值:

//應(yīng)用程序窗口。 public static final int FIRST_APPLICATION_WINDOW = 1;  //所有程序窗口的“基地”窗口,其他應(yīng)用程序窗口都顯示在它上面。  public static final int TYPE_BASE_APPLICATION =1; //普通應(yīng)用功能程序窗口。token必須設(shè)置為Activity的token,以指出該窗口屬誰。 public static final int TYPE_APPLICATION = 2; //用于應(yīng)用程序啟動(dòng)時(shí)所顯示的窗口。應(yīng)用本身不要使用這種類型。 //它用于讓系統(tǒng)顯示些信息,直到應(yīng)用程序可以開啟自己的窗口。  public static final int TYPE_APPLICATION_STARTING = 3;  //應(yīng)用程序窗口結(jié)束。 public static final int LAST_APPLICATION_WINDOW = 99; //子窗口。子窗口的Z序和坐標(biāo)空間都依賴于他們的宿主窗口。 public static final int FIRST_SUB_WINDOW = 1000; //面板窗口,顯示于宿主窗口上層。 public static final int TYPE_APPLICATION_PANEL = FIRST_SUB_WINDOW; //媒體窗口,例如視頻。顯示于宿主窗口下層。 public static final int TYPE_APPLICATION_MEDIA = FIRST_SUB_WINDOW+1; //應(yīng)用程序窗口的子面板。顯示于所有面板窗口的上層。(GUI的一般規(guī)律,越“子”越靠上) public static final int TYPE_APPLICATION_SUB_PANEL = FIRST_SUB_WINDOW +2; //對話框。類似于面板窗口,繪制類似于頂層窗口,而不是宿主的子窗口。 public static final int TYPE_APPLICATION_ATTACHED_DIALOG = FIRST_SUB_WINDOW +3; //媒體信息。顯示在媒體層和程序窗口之間,需要實(shí)現(xiàn)透明(半透明)效果。(例如顯示字幕) public static final int TYPE_APPLICATION_MEDIA_OVERLAY = FIRST_SUB_WINDOW +4; //子窗口結(jié)束。( End of types of sub-windows ) public static final int LAST_SUB_WINDOW = 1999; //系統(tǒng)窗口。非應(yīng)用程序創(chuàng)建。 public static final int FIRST_SYSTEM_WINDOW = 2000; //狀態(tài)欄。只能有一個(gè)狀態(tài)欄;它位于屏幕頂端,其他窗口都位于它下方。 public static final int TYPE_STATUS_BAR = FIRST_SYSTEM_WINDOW; //搜索欄。只能有一個(gè)搜索欄;它位于屏幕上方。 public static final int TYPE_SEARCH_BAR = FIRST_SYSTEM_WINDOW+1; //電話窗口。它用于電話交互(特別是呼入)。它置于所有應(yīng)用程序之上,狀態(tài)欄之下。 public static final int TYPE_PHONE = FIRST_SYSTEM_WINDOW+2; //系統(tǒng)提示。它總是出現(xiàn)在應(yīng)用程序窗口之上。 public static final int TYPE_SYSTEM_ALERT = FIRST_SYSTEM_WINDOW +3; //鎖屏窗口。 public static final int TYPE_KEYGUARD = FIRST_SYSTEM_WINDOW +4; //信息窗口。用于顯示toast。 public static final int TYPE_TOAST = FIRST_SYSTEM_WINDOW +5; //系統(tǒng)頂層窗口。顯示在其他一切內(nèi)容之上。此窗口不能獲得輸入焦點(diǎn),否則影響鎖屏。 public static final int TYPE_SYSTEM_OVERLAY = FIRST_SYSTEM_WINDOW +6; //電話優(yōu)先,當(dāng)鎖屏?xí)r顯示。此窗口不能獲得輸入焦點(diǎn),否則影響鎖屏。 public static final int TYPE_PRIORITY_PHONE = FIRST_SYSTEM_WINDOW +7; //系統(tǒng)對話框。(例如音量調(diào)節(jié)框)。 public static final int TYPE_SYSTEM_DIALOG = FIRST_SYSTEM_WINDOW +8; //鎖屏?xí)r顯示的對話框。 public static final int TYPE_KEYGUARD_DIALOG = FIRST_SYSTEM_WINDOW +9; //系統(tǒng)內(nèi)部錯(cuò)誤提示,顯示于所有內(nèi)容之上。 public static final int TYPE_SYSTEM_ERROR = FIRST_SYSTEM_WINDOW +10; //內(nèi)部輸入法窗口,顯示于普通UI之上。應(yīng)用程序可重新布局以免被此窗口覆蓋。 public static final int TYPE_INPUT_METHOD = FIRST_SYSTEM_WINDOW +11; //內(nèi)部輸入法對話框,顯示于當(dāng)前輸入法窗口之上。 public static final int TYPE_INPUT_METHOD_DIALOG= FIRST_SYSTEM_WINDOW +12; //墻紙窗口。 public static final int TYPE_WALLPAPER = FIRST_SYSTEM_WINDOW +13; //狀態(tài)欄的滑動(dòng)面板。 public static final int TYPE_STATUS_BAR_PANEL = FIRST_SYSTEM_WINDOW +14; //系統(tǒng)窗口結(jié)束。 public static final int LAST_SYSTEM_WINDOW = 2999;  5. public int memoryType;        指出窗口所使用的內(nèi)存緩沖類型。默認(rèn)為 NORMAL 。        下面定義了 memoryType 的取值:        窗口緩沖位于主內(nèi)存。        public static final int MEMORY_TYPE_NORMAL = 0;        窗口緩沖位于可以被DMA訪問,或者硬件加速的內(nèi)存區(qū)域。        public static final int MEMORY_TYPE_HARDWARE = 1;        窗口緩沖位于可被圖形加速器訪問的區(qū)域。        public static final int MEMORY_TYPE_GPU = 2;        窗口緩沖不擁有自己的緩沖區(qū),不能被鎖定。緩沖區(qū)由本地方法提供。        public static final int MEMORY_TYPE_PUSH_BUFFERS = 3;        6.  public int flags;        行為選項(xiàng)/旗標(biāo),默認(rèn)為 none .下面定義了 flags 的取值:

//窗口之后的內(nèi)容變暗。 public static final int FLAG_DIM_BEHIND = 0x00000002; //窗口之后的內(nèi)容變模糊。 public static final int FLAG_BLUR_BEHIND = 0x00000004;  不許獲得焦點(diǎn)。 不能獲得按鍵輸入焦點(diǎn),所以不能向它發(fā)送按鍵或按鈕事件。那些時(shí)間將發(fā)送給它后面的可以獲得焦點(diǎn)的窗口。此選項(xiàng)還會(huì)設(shè)置FLAG_NOT_TOUCH_MODAL選項(xiàng)。設(shè)置此選項(xiàng),意味著窗口不能與軟輸入法進(jìn)行交互,所以它的Z序獨(dú)立于任何活動(dòng)的輸入法(換句話說,它可以全屏顯示,如果需要的話,可覆蓋輸入法窗口)。要修改這一行為,可參考FLAG_ALT_FOCUSALBE_IM選項(xiàng)。 public static final int FLAG_NOT_FOCUSABLE = 0x00000008; //不接受觸摸屏事件。 public static final int FLAG_NOT_TOUCHABLE = 0x00000010; 當(dāng)窗口可以獲得焦點(diǎn)(沒有設(shè)置 FLAG_NOT_FOCUSALBE 選項(xiàng))時(shí),仍然將窗口范圍之外的點(diǎn)設(shè)備事件(鼠標(biāo)、觸摸屏)發(fā)送給后面的窗口處理。否則它將獨(dú)占所有的點(diǎn)設(shè)備事件,而不管它們是不是發(fā)生在窗口范圍內(nèi)。 public static final int FLAG_NOT_TOUCH_MODAL = 0x00000020; 如果設(shè)置了這個(gè)標(biāo)志,當(dāng)設(shè)備休眠時(shí),點(diǎn)擊觸摸屏,設(shè)備將收到這個(gè)第一觸摸事件。 通常第一觸摸事件被系統(tǒng)所消耗,用戶不會(huì)看到他們點(diǎn)擊屏幕有什么反應(yīng)。 public static final int FLAG_TOUCHABLE_WHEN_WAKING = 0x00000040; 當(dāng)此窗口為用戶可見時(shí),保持設(shè)備常開,并保持亮度不變。 public static final int FLAG_KEEP_SCREEN_ON = 0x00000080; 窗口占滿整個(gè)屏幕,忽略周圍的裝飾邊框(例如狀態(tài)欄)。此窗口需考慮到裝飾邊框的內(nèi)容。 public static final int FLAG_LAYOUT_IN_SCREEN =0x00000100; 允許窗口擴(kuò)展到屏幕之外。 public static final int FLAG_LAYOUT_NO_LIMITS =0x00000200; 窗口顯示時(shí),隱藏所有的屏幕裝飾(例如狀態(tài)條)。使窗口占用整個(gè)顯示區(qū)域。 public static final int FLAG_FULLSCREEN = 0x00000400; 此選項(xiàng)將覆蓋FLAG_FULLSCREEN選項(xiàng),并強(qiáng)制屏幕裝飾(如狀態(tài)條)彈出。 public static final int FLAG_FORCE_NOT_FULLSCREEN =0x00000800; 抖動(dòng)。指 對半透明的顯示方法。又稱“點(diǎn)透”。圖形處理較差的設(shè)備往往用“點(diǎn)透”替代Alpha混合。 public static final int FLAG_DITHER = 0x00001000; //不允許屏幕截圖。 public static final int FLAG_SECURE = 0x00002000; //一種特殊模式,布局參數(shù)用于指示顯示比例。 public static final int FLAG_SCALED = 0x00004000; //當(dāng)屏幕有可能貼著臉時(shí),這一選項(xiàng)可防止面頰對屏幕造成誤操作。 public static final int FLAG_IGNORE_CHEEK_PRESSES = 0x00008000; //當(dāng)請求布局時(shí),你的窗口可能出現(xiàn)在狀態(tài)欄的上面或下面,從而造成遮擋。當(dāng)設(shè)置這一選項(xiàng)后,窗口管理器將確保窗口內(nèi)容不會(huì)被裝飾條(狀態(tài)欄)蓋住。 public static final int FLAG_LAYOUT_INSET_DECOR = 0x00010000; //反轉(zhuǎn)FLAG_NOT_FOCUSABLE選項(xiàng)。 //如果同時(shí)設(shè)置了FLAG_NOT_FOCUSABLE選項(xiàng)和本選項(xiàng),窗口將能夠與輸入法交互,允許輸入法窗口覆蓋; 如果FLAG_NOT_FOCUSABLE沒有設(shè)置而設(shè)置了本選項(xiàng),窗口不能與輸入法交互,可以覆蓋輸入法窗口。 public static final int FLAG_ALT_FOCUSABLE_IM = 0x00020000; //如果你設(shè)置了FLAG_NOT_TOUCH_MODAL,那么當(dāng)觸屏事件發(fā)生在窗口之外事,可以通過設(shè)置此標(biāo)志接收到一個(gè)MotionEvent.ACTION_OUTSIDE事件。注意,你不會(huì)收到完整的down/move/up事件,只有第一次down事件時(shí)可以收到ACTION_OUTSIDE。 public static final int FLAG_WATCH_OUTSIDE_TOUCH = 0x00040000; //當(dāng)屏幕鎖定時(shí),窗口可以被看到。這使得應(yīng)用程序窗口優(yōu)先于鎖屏界面??膳浜螰LAG_KEEP_SCREEN_ON選項(xiàng)點(diǎn)亮屏幕并直接顯示在鎖屏界面之前。可使用FLAG_DISMISS_KEYGUARD選項(xiàng)直接解除非加鎖的鎖屏狀態(tài)。此選項(xiàng)只用于最頂層的全屏幕窗口。 public static final int FLAG_SHOW_WHEN_LOCKED = 0x00080000; //請求系統(tǒng)墻紙顯示在你的窗口后面。窗口必須是半透明的。 public static final int FLAG_SHOW_WALLPAPER = 0x00100000; //窗口一旦顯示出來,系統(tǒng)將點(diǎn)亮屏幕,正如用戶喚醒設(shè)備那樣。 public static final int FLAG_TURN_SCREEN_ON = 0x00200000; //解除鎖屏。只有鎖屏界面不是加密的才能解鎖。如果鎖屏界面是加密的,那么用戶解鎖之后才能看到此窗口,除非設(shè)置了FLAG_SHOW_WHEN_LOCKED選項(xiàng)。 public static final int FLAG_DISMISS_KEYGUARD = 0x00400000; //鎖屏界面淡出時(shí),繼續(xù)運(yùn)行它的動(dòng)畫。 public static final int FLAG_KEEP_SURFACE_WHILE_ANIMATING =0x10000000; //以原始尺寸顯示窗口。用于在兼容模式下運(yùn)行程序。 public static final int FLAG_COMPATIBLE_WINDOW = 0x20000000; //用于系統(tǒng)對話框。設(shè)置此選項(xiàng)的窗口將無條件獲得焦點(diǎn)。 public static final int FLAG_SYSTEM_ERROR = 0x40000000;       7. public int softInputMode;        軟輸入法模式選項(xiàng):以下選項(xiàng)與 softInputMode 有關(guān):

//軟輸入?yún)^(qū)域是否可見。 public static final int SOFT_INPUT_MASK_STATE = 0x0f; //未指定狀態(tài)。 public static final int SOFT_INPUT_STATE_UNSPECIFIED = 0; //不要修改軟輸入法區(qū)域的狀態(tài)。 public static final int SOFT_INPUT_STATE_UNCHANGED = 1; //隱藏輸入法區(qū)域(當(dāng)用戶進(jìn)入窗口時(shí))。 public static final int SOFT_INPUT_STATE_HIDDEN = 2; //當(dāng)窗口獲得焦點(diǎn)時(shí),隱藏輸入法區(qū)域。 public static final int SOFT_INPUT_STATE_ALWAYS_HIDDEN = 3; //顯示輸入法區(qū)域(當(dāng)用戶進(jìn)入窗口時(shí))。 public static final int SOFT_INPUT_STATE_VISIBLE = 4; //當(dāng)窗口獲得焦點(diǎn)時(shí),顯示輸入法區(qū)域。 public static final int SOFT_INPUT_STATE_ALWAYS_VISIBLE = 5; //窗口應(yīng)當(dāng)主動(dòng)調(diào)整,以適應(yīng)軟輸入窗口。 public static final int SOFT_INPUT_MASK_ADJUST = 0xf0; //未指定狀態(tài),系統(tǒng)將根據(jù)窗口內(nèi)容嘗試選擇一個(gè)輸入法樣式。 public static final int SOFT_INPUT_ADJUST_UNSPECIFIED = 0x00; //當(dāng)輸入法顯示時(shí),允許窗口重新計(jì)算尺寸,使內(nèi)容不被輸入法所覆蓋。 //不可與SOFT_INPUT_ADJUSP_PAN混合使用,如果兩個(gè)都沒有設(shè)置,系統(tǒng)將根據(jù)窗口內(nèi)容自動(dòng)設(shè)置一個(gè)選項(xiàng)。 public static final int SOFT_INPUT_ADJUST_RESIZE = 0x10; //輸入法顯示時(shí)平移窗口。它不需要處理尺寸變化,框架能夠移動(dòng)窗口以確保輸入焦點(diǎn)可見。 //不可與SOFT_INPUT_ADJUST_RESIZE混合使用;如果兩個(gè)都沒設(shè)置,系統(tǒng)將根據(jù)窗口內(nèi)容自動(dòng)設(shè)置一個(gè)選項(xiàng)。 public static final int SOFT_INPUT_ADJUST_PAN = 0x20; //當(dāng)用戶轉(zhuǎn)至此窗口時(shí),由系統(tǒng)自動(dòng)設(shè)置,所以你不要設(shè)置它。 //當(dāng)窗口顯示之后該標(biāo)志自動(dòng)清除。 public static final int SOFT_INPUT_IS_FORWARD_NAVIGATION = 0x100;   8. public int gravity;        gravity 屬性。什么是gravity屬性呢?簡單地說,就是窗口如何??俊?       9. public float horizontalMargin;        水平邊距,容器與widget之間的距離,占容器寬度的百分率。        10. public float verticalMargin;        縱向邊距。        11. public int format;        期望的位圖格式。默認(rèn)為不透明。參考android.graphics.PixelFormat。        12. public int windowAnimations;        窗口所使用的動(dòng)畫設(shè)置。它必須是一個(gè)系統(tǒng)資源而不是應(yīng)用程序資源,因?yàn)榇翱诠芾砥鞑荒茉L問應(yīng)用程序。        13. public float alpha = 1.0f;        整個(gè)窗口的半透明值,1.0表示不透明,0.0表示全透明。        14. public float dimAmount = 1.0f;        當(dāng)FLAG_DIM_BEHIND設(shè)置后生效。該變量指示后面的窗口變暗的程度。        1.0表示完全不透明,0.0表示沒有變暗。        15. public float screenBrightness = -1.0f;        用來覆蓋用戶設(shè)置的屏幕亮度。表示應(yīng)用用戶設(shè)置的屏幕亮度。        從0到1調(diào)整亮度從暗到最亮發(fā)生變化。        16. public IBinder token = null;        窗口的標(biāo)示符。( Identifier for this window. This will usually be filled in for you. )        17. public String packageName = null;        此窗口所在的包名。        18. public int screenOrientation =ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;        屏幕方向,參見android.content.pm.ActivityInfo#screenOrientation。        19. 在兼容模式下,備份/恢復(fù)參數(shù)所使用的內(nèi)部緩沖區(qū)。        public int[] mCompatibilityParamsBackup = null;

layoutanimation,顧名思義,是用來設(shè)置給viewgroup類型的animation,是子view來執(zhí)行的??梢允?/p>

[java]view plain copy android:layoutAnimation="@anim/popinlayout"    也可以是javacode的 [java]view plain copy viewgroup.setLayoutAnimation(layoutnaimationcontroller);

和Animation類似,Layout Animation也支持Animation Listener,具體的就不多說了。layoutanimation會(huì)在View Group第一次進(jìn)行布局的時(shí)候執(zhí)行一次。

具體來說,layoutanimation支持三個(gè)參數(shù),

1,anim就不多說了,

2,animationOrder,這個(gè)是說子view按照什么順序來執(zhí)行anim,可以使normal(正常,0-n),reverse(反序,n-0),random。一般不要太亂的還是normal

3,delay,用于延遲的每個(gè)子view的動(dòng)畫開始動(dòng)畫持續(xù)時(shí)間的浮點(diǎn)數(shù)。越大間隔越長。0.3或者30%的字樣。

另外,LayoutAnimationController包含一個(gè)內(nèi)部類,LayoutAnimationController.AnimationParameters,這個(gè)類主要包括了count和index兩個(gè)參數(shù)。這些參數(shù)用于計(jì)算每個(gè)單獨(dú)的視圖動(dòng)畫的開始時(shí)間。

ViewGroup.LayoutParams這個(gè)類大家都一定很熟悉的,主要是height和width。其中還有一個(gè)字段,就是LayoutAnimationController.AnimationParameters,Used to animate layouts。

layoutanimation一般可以用在listview等adapterview中,顯得比較炫一些。

比如:

[html]view plain copy

listview中還有一個(gè)viewgroup的屬性,android:persistentDrawingCache

Defines the persistence of the drawing cache. The drawing cache might be enabled by a ViewGroup for all its children in specific situations (for instance during a scrolling.) This property lets you persist the cache in memory after its initial usage. Persisting the cache consumes more memory but may prevent frequent garbage collection is the cache is created over and over again. By default the persistence is set to scrolling.

定義繪圖的高速緩存的持久性。 繪圖緩存可能由一個(gè) ViewGroup 在特定情況下為其所有的子類啟用,例如在一個(gè)滾動(dòng)的過程中。 此屬性可以保留在內(nèi)存中的緩存后其初始的使用。 堅(jiān)持緩存會(huì)消耗更多的內(nèi)存,但可能會(huì)阻止頻繁的垃圾回收是反復(fù)創(chuàng)建緩存。 默認(rèn)情況下持續(xù)存在設(shè)置為滾動(dòng)。

其屬性值只有以下幾種:

ConstantValueDescription none 0x0  The drawing cache is not persisted after use. animation 0x1  The drawing cache is persisted after a layout animation. scrolling 0x2The drawing cache is persisted after a scroll. all 0x3  The drawing cache is always persisted.

一般默認(rèn)的有scrolling屬性,我們在有l(wèi)ayoutAnimation動(dòng)畫的時(shí)候添加上animation屬性會(huì)更流通些。

LayoutAnimationController用于為一個(gè)layout里面的控件,或者是一個(gè)ViewGroup里面的控件設(shè)置動(dòng)畫效果,可以在XML文件中設(shè)置,亦可以在Java代碼中設(shè)置。

一種直接在XML文件中設(shè)置

1.  在res/anim文件夾下新建一個(gè)XML文件,名為list_anim_layout.xml,

[java]view plain copy

android:delay  子類動(dòng)畫時(shí)間間隔 (延遲)   70% 也可以是一個(gè)浮點(diǎn)數(shù) 如“1.2”等

android:animationOrder="random"   子類的顯示方式 random表示隨機(jī)

android:animationOrder 的取值有

normal0默認(rèn)

reverse1倒序

random2隨機(jī)

android:animation="@anim/slide_right" 表示孩子顯示時(shí)的具體動(dòng)畫是什么

說明:其中delay的單位為秒;animation為設(shè)置動(dòng)畫的文件。animationOrder為進(jìn)入方式

2.  在res/anim文件夾下新建一個(gè)XML文件,名為slide_right,即上面用到的文件。

[html]view plain copy

顯示的效果為ListView第一次出現(xiàn)的時(shí)候?yàn)?item隨機(jī)出現(xiàn) 每個(gè)Item都是從左不可見(-100%p)的區(qū)域向右滑動(dòng)到顯示的地方

3.  在主布局文件中為控件添加如下配置:

android:layoutAnimation="@anim/list_anim_layout",即第一步的布局文件。

第二種設(shè)置方法:在Java代碼中設(shè)置

1. 同上;

2. 同上;

4.  在Acitivty中添加如下代碼:

//通過加載XML動(dòng)畫設(shè)置文件來創(chuàng)建一個(gè)Animation對象;

Animation animation=AnimationUtils.loadAnimation(this, R.anim.list_anim);

//得到一個(gè)LayoutAnimationController對象;

LayoutAnimationController lac=newLayoutAnimationController(animation);

//設(shè)置控件顯示的順序;

lac.setOrder(LayoutAnimationController.ORDER_REVERSE);

//設(shè)置控件顯示間隔時(shí)間;

lac.setDelay(1);

//為ListView設(shè)置LayoutAnimationController屬性;

datalist.setLayoutAnimation(lac);

有兩種用法,我的通常寫在代碼中,像下面這樣:

Java代碼   /**       * Layout動(dòng)畫       *        * @return       */       protected LayoutAnimationController getAnimationController() {           int duration=300;           AnimationSet set = new AnimationSet(true);              Animation animation = new AlphaAnimation(0.0f, 1.0f);           animation.setDuration(duration);           set.addAnimation(animation);              animation = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0.0f,                   Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF,                   -1.0f, Animation.RELATIVE_TO_SELF, 0.0f);           animation.setDuration(duration);           set.addAnimation(animation);              LayoutAnimationController controller = new LayoutAnimationController(set, 0.5f);           controller.setOrder(LayoutAnimationController.ORDER_NORMAL);           return controller;       }   應(yīng)用的時(shí)候只需這樣:  Java代碼   listView = (ListView) findViewById(R.id.listView);   listView.setLayoutAnimation(getAnimationController());   adapter = new ListViewAdapter(stores);   listView.setAdapter(adapter);   這樣一個(gè)簡單的LayoutAnimation就完成了。  別看到這里就以為文章就完了,以上都是些小玩意。呵呵,還有更厲害的!  你想設(shè)置更炫的動(dòng)畫嗎?LayoutAnimation通常是Item一個(gè)一個(gè)的出現(xiàn),有某種規(guī)律的。想讓每個(gè)Item都有自己的動(dòng)畫嗎?那就繼續(xù)看下去。  Java代碼   .......   private int duration=1000;           private Animation push_left_in,push_right_in;           private Animation slide_top_to_bottom,slide_bottom_to_top;           public ListViewAdapter(ArrayListlist) {               this.list = list;               push_left_in=AnimationUtils.loadAnimation(context, R.anim.push_left_in);               push_right_in=AnimationUtils.loadAnimation(context, R.anim.push_right_in);               slide_top_to_bottom=AnimationUtils.loadAnimation(context, R.anim.slide_top_to_bottom);               slide_bottom_to_top=AnimationUtils.loadAnimation(context, R.anim.slide_bottom_to_top);           }   ........      @Override           public View getView(int position, View convertView, ViewGroup parent) {               // TODO Auto-generated method stub               ViewHodler hodler;               if (convertView == null) {                   hodler = new ViewHodler();                   convertView = LayoutInflater.from(context).inflate(                           R.layout.simple_item_7_for_main, null);                   ........                                                         convertView.setTag(hodler);                                      if (position % 2 == 0) {                       push_left_in.setDuration(duration);                       convertView.setAnimation(push_left_in);                   } else {                       push_right_in.setDuration(duration);                       convertView.setAnimation(push_right_in);                   }                                      /*if(position==0){slide_bottom_to_top.setDuration(duration);                      convertView.setAnimation(slide_bottom_to_top);                  }                  else{slide_top_to_bottom.setDuration(duration);                      convertView.setAnimation(slide_top_to_bottom);                  }*/                                  }else{                   hodler = (ViewHodler) convertView.getTag();               }   ........                                             return convertView;           }   看見上面的動(dòng)畫設(shè)置了嗎?將動(dòng)畫寫在getView()中,這樣可以設(shè)置很多不同的動(dòng)畫。其實(shí)這不屬于LayoutAnimation的范疇了。  你可以試一下,如果設(shè)計(jì)好的話,可以有比LayoutAnimation更酷的效果。  我這里只試了兩種效果。  下面是我的動(dòng)畫文件,共四個(gè):  第一種效果:item分別從左右兩側(cè)滑入效果。  push_left_in.xml  Xml代碼   push_right_in.xml  Xml代碼   第2種效果:第一個(gè)item從下往上滑入,其他Item從上往下滑入效果,這個(gè)效果如果單個(gè)Item比較高(height)的話效果非??幔ㄅ5睦习姹竞孟裼玫木褪沁@種效果)。  slide_bottom_to_top.xml  Xml代碼   slide_top_to_bottom.xml  Xml代碼   另外一篇:  這個(gè)不是我寫的。  GridView的item從上下左右飛入   Java代碼   import java.util.Random;   import android.app.Activity;   import android.content.Context;   import android.os.Bundle;   import android.view.LayoutInflater;   import android.view.View;   import android.view.View.OnClickListener;   import android.view.ViewGroup;   import android.view.animation.Animation;   import android.view.animation.TranslateAnimation;   import android.widget.BaseAdapter;   import android.widget.Button;   import android.widget.GridView;   import android.widget.ImageView;   public class ZdemoActivity extends Activity {        private GridView gv;    private Button btn;    private TranslateAnimation taLeft, taRight, taTop, taBlow;    private int[] imgList = new int[15];    private MyAdapter mAdapter;    private LayoutInflater mInflater;    @Override    public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);     this.InitView();     this.InitAnima();     this.InitData();    }    private void InitAnima() {     // TODO Auto-generated method stub     taLeft = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 1.0f,       Animation.RELATIVE_TO_PARENT, 0.0f,       Animation.RELATIVE_TO_PARENT, 0.0f,       Animation.RELATIVE_TO_PARENT, 0.0f);     taRight = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, -1.0f,       Animation.RELATIVE_TO_PARENT, 0.0f,       Animation.RELATIVE_TO_PARENT, 0.0f,       Animation.RELATIVE_TO_PARENT, 0.0f);     taTop = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 0.0f,       Animation.RELATIVE_TO_PARENT, 0.0f,       Animation.RELATIVE_TO_PARENT, 1.0f,       Animation.RELATIVE_TO_PARENT, 0.0f);     taBlow = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 0.0f,       Animation.RELATIVE_TO_PARENT, 0.0f,       Animation.RELATIVE_TO_PARENT, -1.0f,       Animation.RELATIVE_TO_PARENT, 0.0f);     taLeft.setDuration(1000);     taRight.setDuration(1000);     taTop.setDuration(1000);     taBlow.setDuration(1000);    }    private void InitData() {     // TODO Auto-generated method stub     for (int i = 0; i < 15; i++) {      imgList[i] = R.drawable.ic_launcher;     }     mAdapter = new MyAdapter();     gv.setAdapter(mAdapter);    }    private void InitView() {     // TODO Auto-generated method stub     gv = (GridView) findViewById(R.id.gridView1);     btn = (Button) findViewById(R.id.button1);     btn.setOnClickListener(new OnClickListener() {      @Override      public void onClick(View v) {       // TODO Auto-generated method stub       mAdapter = null;       mAdapter = new MyAdapter();       gv.setAdapter(mAdapter);       mAdapter.notifyDataSetChanged();      }     });     mInflater = (LayoutInflater) this       .getSystemService(Context.LAYOUT_INFLATER_SERVICE);    }    private class MyAdapter extends BaseAdapter {     @Override     public int getCount() {      // TODO Auto-generated method stub      return imgList.length;     }     @Override     public Object getItem(int position) {      // TODO Auto-generated method stub      return imgList[position];     }     @Override     public long getItemId(int position) {      // TODO Auto-generated method stub      return position;     }     @Override     public View getView(int position, View convertView, ViewGroup parent) {      // TODO Auto-generated method stub      ViewHolder holder = null;      if (convertView == null) {       convertView = mInflater.inflate(R.layout.item, null);       holder = new ViewHolder();       holder.image = (ImageView) convertView         .findViewById(R.id.imageView1);       convertView.setTag(holder);      } else {       holder = (ViewHolder) convertView.getTag();      }      int imgID = imgList[position];      holder.image.setImageResource(imgID);      Random ran = new Random();      int rand = ran.nextInt(4);      switch (rand) {      case 0:       convertView.startAnimation(taLeft);       break;      case 1:       convertView.startAnimation(taRight);       break;      case 2:       convertView.startAnimation(taTop);       break;      case 3:       convertView.startAnimation(taBlow);       break;      }      return convertView;     }     class ViewHolder {      public ImageView image;     }    }   }  一、            ViewGroup1.1         概述  定義  public abstract class ViewGroup extends View implements ViewParent, ViewManager  所在的包  import android.view.ViewGroup;  子類信息  View  |___ ViewGroup         |___ AdapterView|      |___ AbsListView         |      |      |___ GridView         |      |      |___ ListView         |      |             |___ ExpandableListView         |      |___ AbsSpinner         |             |___ Gallery         |             |___ Spinner         |___ FrameLayout         |      |___ DatePicker         |      |___ TimePicker         |      |___ MediaController         |      |___ ScrollView         |      |___ TabHost         |      |___ ViewAnimator         |             |___ ViewFlipper         |             |___ ViewSwitcher         |                    |___ ImageSwitcher         |                    |___ TextSwitcher         |___ LinearLayout         |      |___ RadioGroup         |      |___ TabWidget         |      |___ TableLayout         |      |___ TableRow         |      |___ ZoomControls         |___ RelativeLayout         |      |___ DialerFilter         |      |___ TwoLineListItem         |___ AbsoluteLayout                |___ WebView  ViewGroup繼承View,是一組view的集合,通過addView()來添加child view,removeView()、removeAllViews()等刪除child view。addView()加入的view存為數(shù)組,初始化數(shù)組大小為12,超過大小時(shí)每次增加12,每一個(gè)index對應(yīng)一個(gè)view,可以通過getChildAt()、indexOfChild()來獲取view和index,getChildCount()獲取總child數(shù)。  內(nèi)部類LayoutParams來管理ViewGroup的所占區(qū)域大小。  FILL_PARENT:填充滿parent的寬或高  WRAP_CONTENT:內(nèi)容的實(shí)際大小加邊距  offsetChildrenTopAndBottom()、setPadding()來設(shè)置邊距。  1.2         部分方法  void addView(View child)  void addView(View child, int index)  void addView(View child, int width, int height)  void addView(View child, LayoutParams params)  void addView(View child, int index, LayoutParams params)  void removeView(View view)  void removeViewAt(int index)  void removeViews(int start, int count)  void removeAllViews()  void removeViewInLayout(View view)  void removeViewsInLayout(int start, int count)  void removeAllViewsInLayout()  增加刪除child view  void offsetChildrenTopAndBottom(int offset)  設(shè)置垂直方向頂部和底部的偏移,單位象素  int getChildCount()  int indexOfChild(View child)  View getChildAt(int index)  void setDescendantFocusability(int focusability)  int getDescendantFocusability()  ViewGroup.FOCUS_BEFORE_DESCENDANTS  先于子孫獲得focus  ViewGroup.FOCUS_AFTER_DESCENDANTS  子孫都不需要focus時(shí)viewgroup才獲得  ViewGroup.FOCUS_BLOCK_DESCENDANTS  void setClipChildren(boolean clipChildren)  void setClipToPadding(boolean clipToPadding)  true:滾動(dòng)時(shí)child不可以繪制到padding區(qū)域,即剪裁掉  false:滾動(dòng)時(shí)child可以繪制到padding區(qū)域  void setOnHierarchyChangeListener(OnHierarchyChangeListener listener)  設(shè)置child有add或remove時(shí)觸發(fā)的監(jiān)聽器  void startLayoutAnimation()  運(yùn)行動(dòng)畫  void scheduleLayoutAnimation()  設(shè)置動(dòng)畫狀態(tài),刷新時(shí)運(yùn)行動(dòng)畫  void setLayoutAnimation(LayoutAnimationController controller)  LayoutAnimationController getLayoutAnimation()  設(shè)置布局動(dòng)畫,在child第一次布局時(shí)運(yùn)行動(dòng)畫  void setLayoutAnimationListener(Animation.AnimationListener animationListener)  Animation.AnimationListener getLayoutAnimationListener()  設(shè)置動(dòng)畫播放開始、結(jié)束、重播時(shí)觸發(fā)的監(jiān)聽器  boolean isAnimationCacheEnabled()  void setAnimationCacheEnabled(boolean enabled)  boolean isAlwaysDrawnWithCacheEnabled()  void setAlwaysDrawnWithCacheEnabled(boolean always)  int getPersistentDrawingCache()  void setPersistentDrawingCache(int drawingCacheToKeep)  1.3         ViewGroup.LayoutParams  public static class LayoutParams  ViewGroup.LayoutParams  |___ ViewGroup.MarginLayoutParams  |      |___ FrameLayout.LayoutParams  |      |___ LinearLayout.LayoutParams  |      |      |___ RadioGroup.LayoutParams  |      |      |___ TableLayout.LayoutParams  |      |      |___ TableRow.LayoutParams  |      |___ RelativeLayout.LayoutParams  |___ AbsoluteLayout.LayoutParams  |___ AbsListView.LayoutParams  |___ Gallery.LayoutParams  |___ WindowManager.LayoutParams  public int width;     //指定view的寬高  public int height;  public LayoutAnimationController.AnimationParameters layoutAnimationParameters;  ViewGroup.LayoutParams.FILL_PARENT  ViewGroup.LayoutParams.WRAP_CONTENT  public LayoutParams(Context c, AttributeSet attrs)  public LayoutParams(int width, int height)  public LayoutParams(LayoutParams source)  LayoutParams()  1.4         ViewGroup. MarginLayoutParams  public static class MarginLayoutParams extends ViewGroup.LayoutParams  public int leftMargin;     //在ViewGroup.LayoutParams基礎(chǔ)上增加4個(gè)方向邊距  public int topMargin;  public int rightMargin;  public int bottomMargin;  public MarginLayoutParams(Context c, AttributeSet attrs)  public MarginLayoutParams(int width, int height)  public MarginLayoutParams(MarginLayoutParams source)  public MarginLayoutParams(LayoutParams source)  public void setMargins(int left, int top, int right, int bottom)          Margin        Padding、大小為設(shè)置的width, height,背景繪制的區(qū)域        實(shí)體大小  通過ViewGroup.LayoutParams設(shè)置width,height  View.setLayoutParams(ViewGroup.LayoutParams params);  通過ViewGroup.MarginLayoutParams設(shè)置margin  ViewGroup.MarginLayoutParams.setMargins(int left, int top, int right, int bottom);  ViewGroup.MarginLayoutParams.leftMargin  通過View. setPadding(int left, int top, int right, int bottom); 設(shè)置padding  白色區(qū)域大?。?   width+ leftMargin+ rightMargin                              height+ topMargin+ bottomMargin  橙色區(qū)域大?。?   width                              height  綠色區(qū)域大?。?   width- leftPadding- rightPadding                              height- topPadding- bottomPadding  二、            AdapterView2.1         概述  定義  public abstract class AdapterViewextends ViewGroup  包路徑  import android.widget.AdapterView;  子類信息  View  |___ ViewGroup         |___ AdapterView|___ AbsListView                |      |___ GridView                |      |___ ListView                |             |___ ExpandableListView                |___ AbsSpinner                       |___ Gallery                       |___ Spinner  AdapterView繼承ViewGroup,但AdapterView的child view由Adapter決定,不能通過addView()來添加。  setAdapter()來設(shè)置Adapter,getAdapter()獲取。  2.2         部分方法  void addView(View child)  void addView(View child, int index)  void addView(View child, LayoutParams params)  void addView(View child, int index, LayoutParams params)  void removeView(View child)  void removeViewAt(int index)  void removeAllViews()  不支持添加刪除view,使用則拋出UnsupportedOperationException異常  void setOnClickListener(OnClickListener l)  不支持,拋出異常RuntimeException  abstract T getAdapter()  abstract void setAdapter(T adapter)  設(shè)置child的數(shù)據(jù)和view  int getCount()  int getPositionForView(View view)  long getItemIdAtPosition(int position)  Object getItemAtPosition(int position)  返回Object不一定就是一個(gè)item的view,跟getAdapter().getItem(position)等效  要想獲得view應(yīng)getAdapter().getView(position, convertView, parent)  abstract View getSelectedView()  int getSelectedItemPosition()  long getSelectedItemId()  Object getSelectedItem()  abstract void setSelection(int position)  int getFirstVisiblePosition()  屏幕上可見的第一項(xiàng)的position,部分可見也算  int getLastVisiblePosition()  屏幕上可見的最后一項(xiàng)的position,部分可見也算  void setFocusable(boolean focusable)  void setFocusableInTouchMode(boolean focusable)  void setOnItemClickListener(OnItemClickListener listener)  final OnItemClickListener getOnItemClickListener()  設(shè)置item點(diǎn)擊監(jiān)聽器  boolean performItemClick(View view, int position, long id)  調(diào)用item點(diǎn)擊監(jiān)聽器設(shè)置的回調(diào)函數(shù)  void setOnItemLongClickListener(OnItemLongClickListener listener)  final OnItemLongClickListener getOnItemLongClickListener()  設(shè)置item長按監(jiān)聽器  void setOnItemSelectedListener(OnItemSelectedListener listener)  final OnItemSelectedListener getOnItemSelectedListener()  設(shè)置item被選擇時(shí)觸發(fā)的監(jiān)聽器  public void setTextFilterEnabled(boolean textFilterEnabled)  public boolean isTextFilterEnabled()  開啟或關(guān)閉過濾窗口,開啟時(shí),鍵盤輸入顯示在屏幕下方一半透明黑色區(qū)域,根據(jù)輸入過濾掉不包含輸入文字的項(xiàng) 二、            Adapter3.1         概述  定義  public interface Adapter  包路徑  import android.widget.Adapter;  SpinnerAdapter  ListAdapter  HeaderViewListAdapter  BaseAdapter  WrapperListAdapter  CursorAdapter  ArrayAdapterSimpleAdapter  Adapter  ResourceCursorAdapter  SimpleCursorAdapter  黑色文字為接口紅色文字為類斜體字為抽象類  子類信息  Adapter是AdapterView和數(shù)據(jù)間的橋梁,提供訪問每項(xiàng)數(shù)據(jù)的接口,并為每項(xiàng)創(chuàng)建一個(gè)view。  3.2         部分方法  void unregisterDataSetObserver(DataSetObserver observer);  void registerDataSetObserver(DataSetObserver observer)  注冊一個(gè)observer,當(dāng)該Adapter對象的數(shù)據(jù)變化時(shí)調(diào)用。  int getCount()  Object getItem(int position)  long getItemId(int position)       boolean hasStableIds()  item的id是否穩(wěn)定。穩(wěn)定則數(shù)據(jù)變化時(shí)item 的id不變  View getView(int position, View convertView, ViewGroup parent)  返回顯示position項(xiàng)數(shù)據(jù)的view,可以手動(dòng)創(chuàng)建一個(gè)view也可以通過xml layout文件創(chuàng)建。  position          第position項(xiàng)  convertView   可以為null,送入一個(gè)view,如果這個(gè)view不能轉(zhuǎn)換為需要顯示的view則創(chuàng)建一個(gè)新的view  parent            返回的view加入parent的ViewGroup  int getViewTypeCount()  getView()返回view的種數(shù),如果都返回同一類的view則getViewTypeCount()為1  int getItemViewType(int position)  獲得position項(xiàng)view的類型,可以的返回值有0到getViewTypeCount() – 1和IGNORE_ITEM_VIEW_TYPE  boolean isEmpty()  是否包含有數(shù)據(jù)  ListAdapter增加  boolean isEnabled(int position)  public boolean areAllItemsEnabled()  返回false表示item不可選,不可點(diǎn)擊  SpinnerAdapter增加  public View getDropDownView(int position, View convertView, ViewGroup parent)  position項(xiàng)下拉菜單的view  3.3         ArrayAdapter  class ArrayAdapterextends BaseAdapter implements Filterable  ArrayAdapter(Context context, int textViewResourceId)  ArrayAdapter(Context context, int textViewResourceId, T[] objects)  ArrayAdapter(Context context, int textViewResourceId, Listobjects)  ArrayAdapter(Context context, int resource, int textViewResourceId)  ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)  ArrayAdapter(Context context, int resource, int textViewResourceId, Listobjects)  context  textViewResourceId  沒有resource參數(shù)時(shí):含有TextView 的layout文件資源ID,創(chuàng)建view時(shí)使用;  有resource參數(shù)時(shí):layout文件中TextView的ID  resource  loyout文件資源ID  objects  ListView顯示的對象  SDK自帶的textViewResourceId對應(yīng)的xml文件在cupcake\frameworks\base\core\res\res\layout  android.R.layout.simple_list_item_1  TextView  android.R.layout.simple_list_item_2  含有兩個(gè)TextView的TwoLineListItem  android.R.layout. simple_expandable_list_item_1  TextView  android.R.layout. simple_expandable_list_item_2  含有兩個(gè)TextView的TwoLineListItem  android.R.layout. simple_list_item_single_choice  CheckedTextView  android.R.layout. simple_list_item_multiple_choice  CheckedTextView  android.R.layout. simple_list_item_checked  CheckedTextView  void add(T object)  void insert(T object, int index)  void remove(T object)  void clear()  void notifyDataSetChanged()  void setNotifyOnChange(boolean notifyOnChange)  列表發(fā)生改變時(shí)是否自動(dòng)調(diào)用notifyDataSetChanged(),設(shè)為false則需手動(dòng)調(diào)用  Context getContext()  void setDropDownViewResource(int resource)  設(shè)置創(chuàng)建下拉菜單view需要的layout資源文件  static ArrayAdaptercreateFromResource(Context context,              int textArrayResId, int textViewResId)  Filter getFilter()  3.4         SimpleAdapter  public class SimpleAdapter extends BaseAdapter implements Filterable  public SimpleAdapter(Context context, List> data,              int resource, String[] from, int[] to)  context  data  resource  Layout文件id  from  data中Map的key  to  生成itemView的id, to[]數(shù)組大小不能超過from []的大小  public void setDropDownViewResource(int resource)  設(shè)置創(chuàng)建下拉菜單view需要的layout資源文件  public ViewBinder getViewBinder()  public void setViewBinder(ViewBinder viewBinder)  public static interface ViewBinder {  boolean setViewValue(View view, Object data, String textRepresentation);  }  綁定數(shù)據(jù)到view  用setViewBinder(null)的方式取消綁定  public void setViewImage(ImageView v, int value)  public void setViewImage(ImageView v, String value)  public void setViewText(TextView v, String text)  public Filter getFilter()  3.5         SimpleCursorAdapter  public class SimpleCursorAdapter extends ResourceCursorAdapter  demo  aipDemos/com.example.android.view/List2.java  List2.java,List3.java,List7.java  菜單路徑:API Demos/Views/Lists/  public SimpleCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to)  context  layout  c  Curor  from  to  public View newView(Context context, Cursor cursor, ViewGroup parent)  public View newDropDownView(Context context, Cursor cursor, ViewGroup parent)  public ViewBinder getViewBinder()  public void setViewBinder(ViewBinder viewBinder)  public void setViewImage(ImageView v, String value)  public void setViewText(TextView v, String text)  public void bindView(View view, Context context, Cursor cursor)  public int getStringConversionColumn()  public void setStringConversionColumn(int stringConversionColumn)  設(shè)置獲取from[stringConversionColumn]中數(shù)據(jù)  public CursorToStringConverter getCursorToStringConverter()  public void setCursorToStringConverter(  CursorToStringConverter cursorToStringConverter)  public static interface CursorToStringConverter {  CharSequence convertToString(Cursor cursor);  }  public CharSequence convertToString(Cursor cursor)  獲取from[stringConversionColumn]中數(shù)據(jù)  public void changeCursor(Cursor c)  3.6         HeaderViewListAdapter  public class HeaderViewListAdapter implements WrapperListAdapter, Filterable  private ListAdapter mAdapter;  ArrayListmHeaderViewInfos;  ArrayListmFooterViewInfos;  public HeaderViewListAdapter(ArrayListheaderViewInfos,  ArrayListfooterViewInfos,  ListAdapter adapter)  headerViewInfos  footerViewInfos  adapter  public class FixedViewInfo {  public View view;  public Object data;  public boolean isSelectable;  }  public int getHeadersCount()  public int getFootersCount()  public int getCount()  Header,F(xiàn)ooter,mAdapter總item數(shù)  public boolean isEmpty()  mAdapter是否為空  public boolean removeHeader(View v)  public boolean removeFooter(View v)  public boolean areAllItemsEnabled()  public ListAdapter getWrappedAdapter()  獲取mAdapter  四、            AbsListView4.1         概述  定義  public abstract class AbsListView extends AdapterViewimplements TextWatcher,          ViewTreeObserver.OnGlobalLayoutListener, Filter.FilterListener,          ViewTreeObserver.OnTouchModeChangeListener  包路徑  import android.widget.AbsListView;  子類信息  View  |___ ViewGroup         |___ AdapterView|___ AbsListView                       |___ GridView                       |___ ListView                              |___ ExpandableListView  4.2         部分方法  void setStackFromBottom(boolean stackFromBottom)  boolean isStackFromBottom()  單列  多列  Disable  Enable  Disable  Enable  1  1  2  3  2  1  4  5  1  2  2  3  4  5  void setScrollingCacheEnabled(boolean enabled)  boolean isScrollingCacheEnabled()  設(shè)置是否緩存卷動(dòng)項(xiàng),緩存則需額外的內(nèi)存,缺省為enable  void setCacheColorHint(int color)  int getCacheColorHint()  int getSolidColor()  緩存項(xiàng)背景顏色  int pointToPosition(int x, int y)  返回包含坐標(biāo)(x, y)的項(xiàng),沒有項(xiàng)包含該點(diǎn)則返回INVALID_POSITION  long pointToRowId(int x, int y)  void setTranscriptMode(int mode)  int getTranscriptMode()  TRANSCRIPT_MODE_DISABLED  當(dāng)數(shù)據(jù)發(fā)生變化不自動(dòng)滾動(dòng)  TRANSCRIPT_MODE_NORMAL  當(dāng)數(shù)據(jù)發(fā)生變化時(shí),最后一項(xiàng)正顯示在屏幕上,自動(dòng)滾動(dòng)到最低端  TRANSCRIPT_MODE_ALWAYS_SCROLL  當(dāng)數(shù)據(jù)發(fā)生變化時(shí),自動(dòng)滾動(dòng)到最低端  void setFilterText(String filterText)  void clearTextFilter()  boolean hasTextFilter()  過濾文本  void getFocusedRect(Rect r)  獲取焦點(diǎn)框區(qū)域  View getSelectedView()  void setSelector(int resID)  void setSelector(Drawable sel)  Drawable getSelector()  焦點(diǎn)框  void setDrawSelectorOnTop(boolean onTop)  true:Selector繪制在文字之上  void setScrollIndicators(View up, View down)  void reclaimViews(Listviews)  void setRecyclerListener(RecyclerListener listener)  LayoutParams generateLayoutParams(AttributeSet attrs)  void beforeTextChanged(CharSequence s, int start, int count, int after)  void onTextChanged(CharSequence s, int start, int before, int count)  void afterTextChanged(Editable s)  五、            ListView5.1         概述  定義  public class ListView extends AbsListView  包路徑  import android.widget.ListView  子類信息  View  |___ ViewGroup         |___ AdapterView|___ AbsListView                       |___ ListView                              |___ ExpandableListView  ListView顯示為垂直可滾動(dòng)的一列,所有item由ListAdapter提供。  5.2         部分方法  public ListView(Context context)  public ListView(Context context, AttributeSet attrs)  public ListView(Context context, AttributeSet attrs, int defStyle)  ListAdapter getAdapter()  void setAdapter(ListAdapter adapter)  設(shè)置listitem,adapter包含每一個(gè)item的數(shù)據(jù)并提供顯示數(shù)據(jù)的view  void addHeaderView(View v, Object data, boolean isSelectable)  void addHeaderView(View v)  在list頂端加headView,可以加多個(gè),按添加的順序顯示。isSelectable為可否被選擇。  必須在setAdapter()前調(diào)用,否則拋出IllegalStateException異常  int getHeaderViewsCount()  獲得headerView的數(shù)量  boolean removeHeaderView(View v)  必須在setAdapter()后調(diào)用,否則拋出NullPointerException異常(運(yùn)行期異常)。  void addFooterView(View v, Object data, boolean isSelectable)  void addFooterView(View v)  在list尾添加footerView,同addHeaderView()  必須在setAdapter()前后調(diào)用都可以  int getFooterViewsCount()  獲得footerView的數(shù)量  boolean removeFooterView(View v)  必須在setAdapter()后調(diào)用,否則拋出NullPointerException異常(運(yùn)行期異常)。  int getChoiceMode()  void setChoiceMode(int choiceMode)  ListView. CHOICE_MODE_NONE  ListView. CHOICE_MODE_SINGLE  ListView. CHOICE_MODE_MULTIPLE  void setSelection(int position)  設(shè)置第position為選擇狀態(tài)  void setSelectionFromTop(int position, int y)  設(shè)置第position為選擇狀態(tài),使position那項(xiàng)的位置在距離ListView頂端y的位置  void setSelectionAfterHeaderView()  使選擇項(xiàng)位置緊挨著HeaderView。  void setItemsCanFocus(boolean itemsCanFocus)  boolean getItemsCanFocus()  Drawable getDivider()  void setDivider(Drawable divider)  設(shè)置每兩個(gè)item間的分割  int getDividerHeight()  void setDividerHeight(int height)  設(shè)置每兩個(gè)item間空隙的高度  boolean isItemChecked(int position)  在單選或多選狀態(tài)下判斷第position項(xiàng)狀態(tài)  int getCheckedItemPosition()  在單選狀態(tài)下獲取選擇的那項(xiàng),多選無效  SparseBooleanArray getCheckedItemPositions()  非單選模式下有效  void clearChoices()  清除選擇  void setItemChecked(int position, boolean value)  設(shè)置position項(xiàng)的狀態(tài)  Parcelable onSaveInstanceState()  void onRestoreInstanceState(Parcelable state)  boolean performItemClick(View view, int position, long id)  boolean onTouchEvent(MotionEvent ev)  boolean dispatchKeyEvent(KeyEvent event)  boolean onKeyDown(int keyCode, KeyEvent event)  boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event)  onKeyUp(int keyCode, KeyEvent event)  六、            ExpandableListView6.1         概述  定義  public class ExpandableListView extends ListView  包路徑  import android.widget.ExpandableListView;  子類信息  View  |___ ViewGroup         |___ AdapterView|___ AbsListView                       |___ ListView                              |___ ExpandableListView  ExpandableListView顯示為垂直可滾動(dòng)的一列,與ListView的區(qū)別是它的item分group和child兩層,item的children可以展開顯示,也可以疊起不顯示。所有item由ExpandableListAdapter提供。  ExpandableListItem的展開與否可以用setChildIndicator()或setGroupIndicator()來設(shè)置。  注意:如果ExpandableListView的parent高度設(shè)為WRAP_CONTENT,則不能指定ExpandableListView的layout_height為WRAP_CONTENT;如果parent高度一定則可以設(shè)為WRAP_CONTENT。  6.2         部分方法  void setAdapter(ListAdapter adapter)  拋出異常RuntimeException  ListAdapter getAdapter()  只獲取groupList  void setAdapter(ExpandableListAdapter adapter)  ExpandableListAdapter getExpandableListAdapter()  設(shè)置ExpandableListView數(shù)據(jù)  boolean collapseGroup(int groupPos)  合上groupPosition組,  boolean expandGroup(int groupPos)  展開groupPosition組,是展開狀態(tài)返回true  boolean isGroupExpanded(int groupPosition)  long getExpandableListPosition(int flatListPosition)  轉(zhuǎn)換一個(gè)ListView的position(flatListPosition)為ExpandableList的packedPosition,packedPosition由ExpandableList的groupPosition和childPosition計(jì)算而來。  int getFlatListPosition(long packedPosition)  packedPosition轉(zhuǎn)換為flatListPosition,  packedPosition類型為group時(shí)packedPosition跟groupPosition相等  packedPosition類型為child時(shí)packedPosition跟child所在的group的groupPosition相等  static int getPackedPositionType(long packedPosition)  packedPosition的類型,groupPosition還是childPosition  ExpandableListView.PACKED_POSITION_TYPE_GROUP  ExpandableListView.PACKED_POSITION_TYPE_CHILD  ExpandableListView.PACKED_POSITION_TYPE_NULL  static int getPackedPositionGroup(long packedPosition)  返回groupPosition  static int getPackedPositionChild(long packedPosition)  如果packedPosition的類型是PACKED_POSITION_TYPE_CHILD,返回childPosition  static long getPackedPositionForChild(int groupPosition, int childPosition)  生成child的packedPosition  static long getPackedPositionForGroup(int groupPosition)  生成group的packedPosition  long getSelectedPosition()  long getSelectedId()  void setGroupIndicator(Drawable groupIndicator)  groupItem的標(biāo)識(shí)  void setIndicatorBounds(int left, int right)  groupItem標(biāo)識(shí)的位置  void setChildIndicator(Drawable childIndicator)  childItem的標(biāo)識(shí)  void setChildIndicatorBounds(int left, int right)  childItem標(biāo)識(shí)的位置,從left開始到right結(jié)束,right>left才顯示出來  left,right都可以指定ExpandableListView.CHILD_INDICATOR_INHERIT,繼承g(shù)roupItem表識(shí)的位置,即通過setIndicatorBounds()設(shè)置的位置  void setChildDivider(Drawable childDivider)  void setSelectedGroup(int groupPosition)  boolean setSelectedChild(int groupPosition, int childPosition, boolean shouldExpandGroup)  public void setOnChildClickListener(OnChildClickListener onChildClickListener)  設(shè)置childItem點(diǎn)擊監(jiān)聽器  public void setOnGroupClickListener(OnGroupClickListener onGroupClickListener)  設(shè)置groupItem點(diǎn)擊監(jiān)聽器  public void setOnGroupCollapseListener (  OnGroupCollapseListener onGroupCollapseListener)  設(shè)置groupItem合上時(shí)觸發(fā)的監(jiān)聽器  public void setOnGroupExpandListener (                     OnGroupExpandListener onGroupExpandListener)  設(shè)置groupItem展開時(shí)觸發(fā)的監(jiān)聽器  public void setOnItemClickListener(OnItemClickListener l)  觸發(fā)ItemClick的itemPos是flatListPosition,盡量用setOnChildClickListener()和setOnGroupClickListener()代替這個(gè)方法。  6.3         ExpandableListAdapter  BaseExpandableListAdapter  CursorTreeAdapter  SimpleExpandableListAdapter  ResourceCursorTreeAdapter  ExpandableListAdapter  SimpleCursorTreeAdapter  黑色文字為接口紅色文字為類斜體字為抽象類  6.4         SimpleExpandableListAdapter  public class SimpleExpandableListAdapter extends BaseExpandableListAdapter  public SimpleExpandableListAdapter(Context context,              List> groupData, int groupLayout,              String[] groupFrom, int[] groupTo,              List>> childData,              int childLayout, String[] childFrom, int[] childTo)  public SimpleExpandableListAdapter(Context context,              List> groupData, int expandedGroupLayout,              int collapsedGroupLayout, String[] groupFrom, int[] groupTo,              List>> childData,              int childLayout, String[] childFrom, int[] childTo)  public SimpleExpandableListAdapter(Context context,              List> groupData, int expandedGroupLayout,              int collapsedGroupLayout, String[] groupFrom, int[] groupTo,              List>> childData,              int childLayout, int lastChildLayout, String[] childFrom,              int[] childTo)  groupData  grouplist數(shù)據(jù)  groupLayout  grouplist loyout資源文件  expandedGroupLayout  grouplist  collapsedGroupLayout  grouplist  groupFrom  抽取groupData的Map的哪幾列數(shù)據(jù)  groupTo  由groupFrom獲取的數(shù)據(jù)生成view的viewId  childData  childlist數(shù)據(jù)  childLayout  childlistloyout資源文件  lastChildLayout  childFrom  抽取childlist的Map的哪幾列數(shù)據(jù)  childTo  由childFrom獲取的數(shù)據(jù)生成view的viewId  public int getChildrenCount(int groupPosition)  public Object getChild(int groupPosition, int childPosition)  public long getChildId(int groupPosition, int childPosition)  public View getChildView(int groupPosition, int childPosition, boolean isLastChild,              View convertView, ViewGroup parent)  public View newChildView(boolean isLastChild, ViewGroup parent)  public int getGroupCount()  public Object getGroup(int groupPosition)  public long getGroupId(int groupPosition)  public View getGroupView(int groupPosition, boolean isExpanded, View convertView,              ViewGroup parent)  public View newGroupView(boolean isExpanded, ViewGroup parent)  public boolean isChildSelectable(int groupPosition, int childPosition)  public boolean hasStableIds()  6.5         SimpleCursorTreeAdapter  public abstract class SimpleCursorTreeAdapter extends ResourceCursorTreeAdapter  public SimpleCursorTreeAdapter(Context context, Cursor cursor, int collapsedGroupLayout,              int expandedGroupLayout, String[] groupFrom, int[] groupTo, int childLayout,              int lastChildLayout, String[] childFrom, int[] childTo)  public SimpleCursorTreeAdapter(Context context, Cursor cursor, int collapsedGroupLayout,              int expandedGroupLayout, String[] groupFrom, int[] groupTo,              int childLayout, String[] childFrom, int[] childTo)  public SimpleCursorTreeAdapter(Context context, Cursor cursor, int groupLayout,              String[] groupFrom, int[] groupTo, int childLayout, String[] childFrom,              int[] childTo)  與SimpleExpandableListAdapter不同的是List> groupData改為Cursor cursor,共有方法都類似。  七、            ListActivity7.1         概述  定義  public class ListActivity extends Activity  包路徑  import android.app.ListActivity  子類信息  Context  |___ ContextWrapper         |___ ContextThemeWrapper                |___ Activity                       |___ ListActivity  繼承Activity,封裝一個(gè)ListView成員  demo  aipDemos/com.example.android.view/List1.java  List1.java ~ List14.java  菜單路徑:API Demos/Views/Lists/  7.2         部分方法  public void onContentChanged()  public void setListAdapter(ListAdapter adapter)  public ListAdapter getListAdapter()  public void setSelection(int position)  public int getSelectedItemPosition()  public long getSelectedItemId()  public ListView getListView()  獲取ListView對象,可以使用ListView的方法  7.3         ExpandableListActivity  public class ExpandableListActivity extends Activity implements          OnCreateContextMenuListener,  ExpandableListView.OnChildClickListener, ExpandableListView.OnGroupCollapseListener,          ExpandableListView.OnGroupExpandListener  繼承Activity封裝一個(gè)ExpandableListView對象  八、            GridView8.1         概述  定義  public class GridView extends AbsListView  包路徑  import android.widget.AbsListView  子類信息  View  |___ ViewGroup         |___ AdapterView|___ AbsListView                       |___ GridView  多行多列可垂直方向滾動(dòng),只支持先行后列垂直方向滾動(dòng)的模式;不支持先列后行水平方向滾動(dòng)的模式  支持  不支持  1  2  3  4  5  6  7  1  4  7  2  5  3  6  demo  aipDemos/com.example.android.view/Grid1.java  Grid1.java ~ Grid2.java  菜單路徑:API Demos/Views/Grid/  8.2         部分方法  top padding  bottom padding  left padding  right padding  vertical spacing  horizontal spacing  void setVerticalSpacing(int verticalSpacing);  設(shè)置垂直方向行間距  void setHorizontalSpacing(int horizontalSpacing);  設(shè)置水平方向列間距  void setColumnWidth(int columnWidth);  設(shè)置列寬  void setNumColumns(int numColumns);  設(shè)置列數(shù)  void setGravity(int gravity);  設(shè)置item對齊方式  Gravity.TOP  Gravity.BOTTOM  Gravity.LEFT  缺省  Gravity.RIGHT  Gravity.CENTER_VERTICAL  Gravity.CENTER_HORIZONTAL  Gravity.CENTER  Gravity.FILL_VERTICAL  Gravity.FILL_HORIZONTAL  Gravity.FILL  Gravity.CLIP_VERTICAL  Gravity.CLIP_HORIZONTAL  int getStretchMode()  void setStretchMode(int stretchMode)  設(shè)置填充GridView時(shí)的方式  GridView.NO_STRETCH  使用設(shè)置的列寬和列間距排版,無視GridView的寬度  GridView.STRETCH_SPACING  拉伸列間距,根據(jù)列寬、列數(shù)和GridView的寬度計(jì)算列間距。Item+Space+Item  GridView.STRETCH_SPACING_UNIFORM  拉伸列間距,計(jì)算方式與  GridView.STRETCH_SPACING不同。  Space+Item+Space+Item+Space  GridView.STRETCH_COLUMN_WIDTH  拉伸列寬,根據(jù)列間距、列數(shù)和GridView的寬度計(jì)算列寬。  ListAdapter getAdapter()  void setAdapter(ListAdapter adapter)  設(shè)置item列表  public void setSelection(int position)  九、            AbsSpinner9.1         概述  定義  public abstract class AbsSpinner extends AdapterView包路徑  import android.widget.AbsSpinner;  子類信息  View  |___ ViewGroup         |___ AdapterView|___ AbsSpinner                       |___ Gallery                       |___ Spinner  9.2         部分方法  void setAdapter(SpinnerAdapter adapter)  SpinnerAdapter getAdapter()  void setSelection(int position, boolean animate)  void setSelection(int position)  int getCount()  int pointToPosition(int x, int y)  Parcelable onSaveInstanceState()  void onRestoreInstanceState(Parcelable state)  十、            Gallery10.1     概述  定義  public class Gallery extends AbsSpinner implements GestureDetector.OnGestureListener  包路徑  import android.widget.Gallery;  子類信息  View  |___ ViewGroup         |___ AdapterView|___ AbsSpinner                       |___ Gallery  items水平方向滾動(dòng)顯示,滾動(dòng)停止時(shí)選擇項(xiàng)停在屏幕正中。  demo  aipDemos/com.example.android.view/Gallery1.java  Gallery1.java ~ Gallery2.java  菜單路徑:API Demos/Views/Gallery/  10.2     部分方法  void setCallbackDuringFling(boolean shouldCallback)  滑動(dòng)過程中是否每項(xiàng)都調(diào)用getOnItemSelectedListener()注冊的callback  false:最后選中的一項(xiàng)才調(diào)用callback  true:所有項(xiàng)都調(diào)用callback  void setAnimationDuration(int animationDurationMillis)  設(shè)置反彈回屏幕正中這部分的動(dòng)畫時(shí)間間隔,單位毫秒,缺省為400ms。  void setSpacing(int spacing)  設(shè)置兩項(xiàng)之間的間距,缺省為0,單位象素  void setUnselectedAlpha(float unselectedAlpha)  設(shè)置未選中項(xiàng)的alpha值 0~1.0  十一、           Spinner11.1     概述  定義  public class Spinner extends AbsSpinner implements OnClickListener  包路徑  import android.widget.Spinner;  子類信息  View  |___ ViewGroup         |___ AdapterView|___ AbsSpinner                       |___ Spinner  在一個(gè)單行文本框中,同時(shí)只顯示一個(gè)有序列表中的一個(gè)項(xiàng),點(diǎn)擊彈出一個(gè)下拉單選對話框,從中進(jìn)行選擇。  系統(tǒng)自帶布局文件:  simple_spinner_dropdown_item.xml  simple_spinner_item.xml  demo  aipDemos/com.example.android.view/Spinner1.java  菜單路徑:API Demos/Views/Spinner/  11.2     部分方法  public int getBaseline()  public void setOnItemClickListener(OnItemClickListener l)  拋出異常RuntimeException  public boolean performClick()  彈出下拉對話框  public void onClick(DialogInterface dialog, int which)  public void setPrompt(CharSequence prompt)  public void setPromptId(int promptId)  public CharSequence getPrompt()  設(shè)置下拉菜單標(biāo)題  十二、           LinearLayout12.1     概述  定義  public class LinearLayout extends ViewGroup  包路徑  import android.widget.LinearLayout;  子類信息  View  |___ ViewGroup         |___ LinearLayout                |___ RadioGroup                |___ TabWidget                |___ TableLayout                |___ TableRow                |___ ZoomControls                |___ NumberPicker  LinearLayout可以設(shè)置位水平的一行或垂直的一列,所有子元素按加入順序排列,通過setOrientation()來設(shè)置行模式還是列模式,缺省為行模式。通過setGravity()設(shè)置對齊方式。  也可以對單個(gè)子元素制定weight,允許子元素填充屏幕上的剩余空間,剩余空間安指定的比例分配。  demo  aipDemos/com.example.android.view/linear_layout_1.java  linear_layout_1.java ~ linear_layout_10.java  菜單路徑:API Demos/Views/ Layouts/LinearLayout/  12.2     部分方法  public LinearLayout(Context context)  public LinearLayout(Context context, AttributeSet attrs)  public boolean isBaselineAligned()  public void setBaselineAligned(boolean baselineAligned)  public int getBaseline()  獲取baseline距離頂端的距離,不支持baseline對齊返回-1  public int getBaselineAlignedChildIndex()  public void setBaselineAlignedChildIndex(int i)  public float getWeightSum()  public void setWeightSum(float weightSum)  public void setOrientation(int orientation)  public int getOrientation()  HORIZONTAL:行模式  VERTICAL:列模式  public void setGravity(int gravity)  public void setHorizontalGravity(int horizontalGravity)  public void setVerticalGravity(int verticalGravity)  對齊方式  public LayoutParams generateLayoutParams(AttributeSet attrs)  public static class LayoutParams extends ViewGroup.MarginLayoutParams  增加了一個(gè)參數(shù)weight  public LayoutParams(int width, int height, float weight)  比如3個(gè)layout排成一行,分別為ly1, ly2, ly3  width值分別為width1,width2,width3  FILL_PARENT的寬度為WIDTH  weight值分別為weight1, weight2, weight3  只要weight1,weight2,weight3不同時(shí)為0,則3個(gè)layout總寬度變?yōu)閃IDTH  ly1的寬度為  對weight未負(fù)數(shù),width1+width2+width3 >= WIDTH未做測試  12.3     LinearLayout.LayoutParams  public static class LayoutParams extends ViewGroup.MarginLayoutParams  public float weight;              //增加weight屬性  public int gravity = -1;  public LayoutParams(int width, int height, float weight)  12.4     RadioGroup  demo  aipDemos/com.example.android.view/RadioGroup1.java  菜單路徑:API Demos/Views/ Radio Group/  一列RadioButton  public void setOnHierarchyChangeListener(OnHierarchyChangeListener listener)  子項(xiàng)有變化時(shí)觸發(fā)的監(jiān)聽器,增加/刪除項(xiàng)  public void check(int id)  設(shè)置id項(xiàng)為選擇  public int getCheckedRadioButtonId()  獲取選擇項(xiàng)的id  public void clearCheck()  清除選擇狀態(tài)  public void setOnCheckedChangeListener(OnCheckedChangeListener listener)  RadioButton狀態(tài)改變監(jiān)聽器  12.5     TabWidget  通常用作TabHost的子元素,單獨(dú)使用同LinearLayout。  12.6     TableRow  通常用作TableLayout子元素,單獨(dú)使用同LinearLayout。  12.7     ZoomControls  系統(tǒng)帶布局文件  zoom_controls.xml  public void setOnZoomInClickListener(OnClickListener listener)  public void setOnZoomOutClickListener(OnClickListener listener)  public void setZoomSpeed(long speed)  public boolean onTouchEvent(MotionEvent event)  public void show()  淡入  public void hide()  淡出消失  public void setIsZoomInEnabled(boolean isEnabled)  public void setIsZoomOutEnabled(boolean isEnabled)  public boolean hasFocus()  十三、           TableLayout13.1     概述  定義  public class TableLayout extends LinearLayout  包路徑  import android.widget.TableLayout;  子類信息  View  |___ ViewGroup         |___ LinearLayout                |___ TableLayout  TableLayout將子元素的位置分配到行或列中,一個(gè)TableLayout由許多TableRow組成,每個(gè)TableRow都定義一個(gè)row,TableLayout不顯示row、column或cell的邊框線,每個(gè)row擁有0個(gè)或多個(gè)cell,每個(gè)cell擁有一個(gè)view對象。列可以被隱藏setColumnCollapsed(),也可以設(shè)置為伸展從而填充可利用的屏幕空間setColumnStretchable(),也可以設(shè)置為強(qiáng)制收縮直到表各匹配屏幕大小setColumnShrikable()。  TableLayout寬始終為FILL_PARENT,TableRow的高始終未WRAP_CONTEN。  demo  aipDemos/com.example.android.view/TableLayout1.java  TableLayout1.java ~ TableLayout12.java  菜單路徑:API Demos/Views/ Layouts/TableLayout  13.2     部分方法  public boolean isShrinkAllColumns()  public void setShrinkAllColumns(boolean shrinkAllColumns)  是否所有列可收縮  public boolean isStretchAllColumns()  public void setStretchAllColumns(boolean stretchAllColumns)  是否所有列可拉伸  public void setColumnCollapsed(int columnIndex, boolean isCollapsed)  public boolean isColumnCollapsed(int columnIndex)  columnIndex列是否隱藏,必須是TableRow的列才能隱藏  public void setColumnStretchable(int columnIndex, boolean isStretchable)  public boolean isColumnStretchable(int columnIndex)  columnIndex列是否可拉伸  public void setColumnShrinkable(int columnIndex, boolean isShrinkable)  public boolean isColumnShrinkable(int columnIndex)  columnIndex列是否可收縮  13.3     TableLayout.LayoutParams  public static class LayoutParams extends LinearLayout.LayoutParams  重載了構(gòu)造函數(shù)強(qiáng)制設(shè)width為FILL_PARENT  13.4     TableRow.LayoutParams  public static class LayoutParams extends LinearLayout.LayoutParams  public int column;  //第幾列  public int span;      //占幾列寬  public LayoutParams(int column)  十四、           FrameLayout14.1     概述  定義  public class FrameLayout extends ViewGroup  包路徑  import android.widget.FrameLayout  子類信息  View  |___ ViewGroup         |___ FrameLayout                |___ DatePicker                |___ TimePicker                |___ MediaController                |___ ScrollView                |___ TabHost                |___ ViewAnimator                       |___ ViewFlipper                       |___ ViewSwitcher                              |___ ImageSwitcher                              |___ TextSwitcher  FrameLayout定制為屏幕上一個(gè)空白備用區(qū)域,可以在其中填充一個(gè)單一對象。所有的子元素將會(huì)固定在屏幕的左上角,不能為FrameLayout中一個(gè)子元素制定位置,后一個(gè)子元素將直接在前一個(gè)子元素之上進(jìn)行覆蓋填充,把他們?nèi)炕虿糠謸踝。ǔ呛笠粋€(gè)子元素是透明的)。  14.2     部分方法  public FrameLayout(Context context)  public FrameLayout(Context context, AttributeSet attrs)  public FrameLayout(Context context, AttributeSet attrs, int defStyle)  public void setForegroundGravity(int foregroundGravity)  設(shè)置前景對齊方式,缺省為Gravity.FILL  public Drawable getForeground()  public void setForeground(Drawable drawable)  設(shè)置drawable,drawable是一個(gè)可繪制的“設(shè)備”,drawable顯示在所有child之上  public void draw(Canvas canvas)  手動(dòng)把canvas所在的view顯示出來,不用重載該函數(shù),注意與onDraw(Canvas)的區(qū)別  public boolean gatherTransparentRegion(Region region)  public void setMeasureAllChildren(boolean measureAll)  public boolean getConsiderGoneChildrenWhenMeasuring()  public LayoutParams generateLayoutParams(AttributeSet attrs)  14.3     FrameLayout. LayoutParams  public static class LayoutParams extends MarginLayoutParams  public int gravity = -1;  public LayoutParams(Context c, AttributeSet attrs)  public LayoutParams(int width, int height)  14.4     DatePicker  由3個(gè)NumberPicker組成,系統(tǒng)自帶一個(gè)layout文件:  \cupcake\frameworks\base\core\res\res\layout\date_picker.xml,  這個(gè)缺省布局方式為水平LinearLayout,順序?yàn)镸onth/Day/Year  這個(gè)控件dayOfMont的范圍校驗(yàn)做的還不好,比如當(dāng)前時(shí)間是2009/3/31,月份減一后為2009/2/31,而這個(gè)日期是非法的,但設(shè)置為系統(tǒng)日期是可以成功的,結(jié)果為2009/3/3。  demo  aipDemos/com.example.android.view/DateWidgets1.java  DateWidgets1.java ~ DateWidgets2.java  菜單路徑:API Demos/Views/Date Widgets/  public void setEnabled(boolean enabled)  public void updateDate(int year, int monthOfYear, int dayOfMonth)  monthOfYear:0~11  year:1900~2100  dayOfMonth:1~31  public void init(int year, int monthOfYear, int dayOfMonth,              OnDateChangedListener onDateChangedListener)  public void setEnabled(boolean enabled)  public int getYear()  public int getMonth()  public int getDayOfMonth()  14.5     TimePicker  demo同上  public void setEnabled(boolean enabled)  public void setOnTimeChangedListener(  OnTimeChangedListener onTimeChangedListener)  public Integer getCurrentHour()  public void setCurrentHour(Integer currentHour)  public void setIs24HourView(Boolean is24HourView)  public boolean is24HourView()  public Integer getCurrentMinute()  public void setCurrentMinute(Integer currentMinute)  public int getBaseline()  14.6     MediaController  demo  aipDemos/com.example.android.media/VideoViewDemo.java  14.7     ScrollView  demo  aipDemos/com.example.android.view/ScrollView1.java  ScrollView1.java ~ ScrollView2.java  aipDemos/com.example.android.view/InternalSelectionScroll.java  菜單路徑:API Demos/Views/ Layouts/ScrollView/  ScrollView只支持垂直方向滾動(dòng),只能有一個(gè)子對象,這個(gè)子對象的大小可以超過屏幕大小。這個(gè)子對象不能是ListView或TextView,因這兩個(gè)view是自己管理如何滾動(dòng)。這個(gè)子對象通常使用LinearLayout  public void addView(View child)  public void addView(View child, int index)  public void addView(View child, ViewGroup.LayoutParams params)  public void addView(View child, int index, ViewGroup.LayoutParams params)  只能有一個(gè)子元素,在已有一個(gè)子元素時(shí)再調(diào)用會(huì)拋出異常IllegalStateException()  public int getMaxScrollAmount()  public boolean isFillViewport()  public void setFillViewport(boolean fillViewport)  true:拉伸高度到viewport的高  public boolean isSmoothScrollingEnabled()  public void setSmoothScrollingEnabled(boolean smoothScrollingEnabled)  true:滾動(dòng)過程用動(dòng)畫過渡  public boolean pageScroll(int direction)  翻頁  public boolean fullScroll(int direction)  翻到底部或頂部  public boolean arrowScroll(int direction)  翻項(xiàng)  View.FOCUS_DOWN  View.FOCUS_UP  public final void smoothScrollBy(int dx, int dy)  相對目前位置滾動(dòng)(x, y)  public final void smoothScrollTo(int x, int y)  滾動(dòng)到絕對位置(x, y)  public void scrollTo(int x, int y)  無動(dòng)畫效果滾動(dòng)  public void fling(int velocityY)  14.8     TabHost  demo  aipDemos/com.example.android.view/Tabs1.java  Tabs1.java~ Tabs3.java  菜單路徑:API Demos/Views/ Layouts/LinearLayout/  對應(yīng)TabActivity  TabHost由TabWidget,TabContent組成。  TabWidget包含多個(gè)TabSpec;TabContent是FrameLayout.  TabSpec由tag,indictor,content組成,content可以是  1.ViewId;2.intent;3.TabHost.TabContentFactory。  內(nèi)部接口TabHost.TabContentFactory  public interface TabContentFactory {  View createTabContent(String tag);  }  在xml文件中定義TabHost需注意兩點(diǎn):  1.TabWidget的id必須指定為"@android:id/tabs",否則會(huì)有RuntimeException2.a(chǎn)ddTab()之前需調(diào)用setup()方法,繼承TabActivity則不需要  public TabSpec newTabSpec(String tag)  創(chuàng)建一個(gè)tab標(biāo)簽,tab標(biāo)簽由3部分組成:tag文字,label文字/圖片,content  內(nèi)部類TabHost.TabSpec,它的每個(gè)函數(shù)都返回this對象,便于鏈?zhǔn)奖磉_(dá),比如:  tabHost.addTab(tabHost.newTabSpec("tab1")                  .setIndicator("tab1")                  .setContent(R.id.view1));  public class TabSpec {  public TabSpec setIndicator(CharSequence label);  public TabSpec setIndicator(CharSequence label, Drawable icon);  public TabSpec setContent(int viewId);  public TabSpec setContent(TabContentFactory contentFactory);  public TabSpec setContent(Intent intent);  };  public void setup()  public void setup(LocalActivityManager activityGroup)  從xml創(chuàng)建TabHost 才須調(diào)setup(),如果TabSpec的content是intent需調(diào)用帶參數(shù)的setup()  public void addTab(TabSpec tabSpec)  public void clearAllTabs()  public void setCurrentTabByTag(String tag)  public void setCurrentTab(int index)  public int getCurrentTab()  public String getCurrentTabTag()  public View getCurrentTabView()  public View getCurrentView()  public TabWidget getTabWidget()  public FrameLayout getTabContentView()  public void onTouchModeChanged(boolean isInTouchMode)  public void setOnTabChangedListener(OnTabChangeListener l)  標(biāo)簽變化觸發(fā)的監(jiān)聽器  14.9     ViewAnimator  因FrameLayout是多個(gè)子元素占同樣的顯示區(qū)域,則在不同子元素切換顯示時(shí)可以加動(dòng)畫效果。通常是當(dāng)前顯示的view消失,下一個(gè)顯示的view出現(xiàn)。  public void setDisplayedChild(int whichChild)  public void setDisplayedChild(int whichChild)  public int getDisplayedChild()  public void showNext()  public void showPrevious()  public void addView(View child, int index, ViewGroup.LayoutParams params)  重載了該方法,在加第一個(gè)view的狀態(tài)為View.VISIBLE,之后加的view狀態(tài)都是View.GONE  public View getCurrentView()  public Animation getInAnimation()  public void setInAnimation(Animation inAnimation)  public Animation getOutAnimation()  public void setOutAnimation(Animation outAnimation)  public void setInAnimation(Context context, int resourceID)  public void setOutAnimation(Context context, int resourceID)  public void setAnimateFirstView(boolean animate)  14.10 ViewFlipper  14.11 ViewSwitcher  14.12 ImageSwitcher  demo  aipDemos/com.example.android.view/ImageSwitcher1.java  菜單路徑:API Demos/Views/ ImageSwitcher/  14.13 TextSwitcher  demo  aipDemos/com.example.android.view/TextSwitcher1.java  菜單路徑:API Demos/Views/ TextSwitcher/  十五、           RelativeLayout15.1     概述  定義  public class RelativeLayout extends ViewGroup  包路徑  import android.widget.RelativeLayout;  子類信息  View  |___ ViewGroup         |___ RelativeLayout                |___ DialerFilter                |___ TwoLineListItem  RelativeLayout的child view位置可以用相對于其他元素或父元素的位置來描述。如果Y的位置依賴于X,則X需先于Y描述。  需要注意的是不要循環(huán)依賴,比如RelativeLayout的高設(shè)為WRAP_CONTENT,其child設(shè)為ALIGN_PARENT_BOTTOM  demo  aipDemos/com.example.android.view/RelativeLayout1.java  RelativeLayout1.java ~ RelativeLayout2.java  菜單路徑:API Demos/Views/Layouts/RelativeLayout/  15.2     部分方法  public void setIgnoreGravity(int viewId)  public void setGravity(int gravity)  public void setHorizontalGravity(int horizontalGravity)  public void setVerticalGravity(int verticalGravity)  public int getBaseline()  public LayoutParams generateLayoutParams(AttributeSet attrs)  public static class LayoutParams extends ViewGroup.MarginLayoutParams  LEFT_OF              位于指定child的左邊  RIGHT_OF  ABOVE  BELOW  ALIGN_BASELINE       ALIGN_LEFT                     相對指定child的左邊對齊  ALIGN_TOP  ALIGN_RIGHT  ALIGN_BOTTOM  ALIGN_PARENT_LEFT  ALIGN_PARENT_RIGHT  ALIGN_PARENT_TOP  ALIGN_PARENT_BOTTOM  CENTER_IN_PARENT  CENTER_HORIZONTAL  CENTER_VERTICAL  15.3     RelativeLayout.LayoutParams  public static class LayoutParams extends ViewGroup.MarginLayoutParams  public boolean alignWithParent;    public LayoutParams(Context c, AttributeSet attrs)  public LayoutParams(int w, int h)  public LayoutParams(ViewGroup.LayoutParams source)  public LayoutParams(ViewGroup.MarginLayoutParams source)  public void addRule(int verb)  只用于添加相對于parent的規(guī)則,可用addRule(verb, RelativeLayout.TRUE)代替,RelativeLayout.TRUE的值為-1  public void addRule(int verb, int anchor)  verb為相對于兄弟位置,則anchor必須為有效的兄弟id設(shè)置才生效,否則無效  verb為相對于parent位置,anchor無論設(shè)為何值都生效  public int[] getRules()  15.4     DialerFilter  15.5     TwoLineListItem  十六、           AbsoluteLayout16.1     概述  定義  public class AbsoluteLayout extends ViewGroup  包路徑  import android.widget.Absolutelayout;  子類信息  View  |___ ViewGroup         |___ AbsoluteLayout                |___ WebView  AbsoluteLayout可以對其子元素指定準(zhǔn)確的x/y坐標(biāo)值,允許元素之間相互重疊,不推薦使用。  16.2     部分方法  public ViewGroup.LayoutParams generateLayoutParams(AttributeSet attrs)  16.3     AbsoluteLayout. LayoutParams  public static class LayoutParams extends ViewGroup.LayoutParams  public int x;    // 在ViewGroup.LayoutParams基礎(chǔ)上增加坐標(biāo)(x, y)  public int y;  public LayoutParams(int width, int height, int x, int y)  public LayoutParams(Context c, AttributeSet attrs)  public LayoutParams(ViewGroup.LayoutParams source)  十七、           WebView17.1     概述  定義  public class WebView extends AbsoluteLayout          implements ViewTreeObserver.OnGlobalFocusChangeListener,          ViewGroup.OnHierarchyChangeListener  包路徑  import android.webkit.WebView;  子類信息  View  |___ ViewGroup         |___ AbsoluteLayout                |___ WebView  WebView用于顯示網(wǎng)頁,用于可滾動(dòng)顯示的web瀏覽器或簡單顯示在線內(nèi)容的Activity。用WebKit顯示網(wǎng)頁和在歷史記錄向前向后操作、放大縮小、搜索文字demo  aipDemos/com.example.android.view/webview_1.java  菜單路徑:API Demos/Views/WebView/  17.2     部分方法  public void clearCache(boolean includeDiskFiles)  public void goBack()  public void goForward()  public String getUrl()  public String getTitle()  public void reload()  public void loadUrl(String url)  public boolean zoomIn()  public boolean zoomOut()  public void goBackOrForward(int steps)

在網(wǎng)站上搜索的時(shí)候看到了windowManager、window、viewGroup中的實(shí)現(xiàn)原理,看了一下,覺得不錯(cuò)所以一并貼到這里來了。

介紹addview方法,在windowManager、window、viewGroup中的實(shí)現(xiàn)原理。首先將介紹這些類結(jié)構(gòu)關(guān)系,然后分析其內(nèi)在聯(lián)系,介紹實(shí)現(xiàn)原理,最后介紹重要的一個(gè)參數(shù)windowManager.layoutParams。 文章預(yù)計(jì)分為三個(gè)部分。 一、首先介紹一下上述接口、類的結(jié)構(gòu)

接口:windowManager

用來在應(yīng)用與window之間的管理接口,管理窗口順序,消息等 public interface WindowManager extends android.view.ViewManager      抽象類:window

定義窗口樣式和行為的抽象基類,用于作為頂層的view加到windowManager中。

唯一實(shí)現(xiàn)了這個(gè)抽象類的是PhoneWindow,實(shí)例化PhoneWindow需要一個(gè)窗口

public abstract class Window

其中有一個(gè)很重要的內(nèi)部類

private class LocalWindowManager extends WindowManagerImpl.CompatModeWrapper{...};

抽象類:viewGroup

包含其他view的容器,layouts和view 容器的基類。

public abstract class ViewGroup extends View implements ViewParent, ViewManager

相關(guān)接口:ViewParent

定義了一個(gè)view parent 的要負(fù)責(zé)的功能以及view和parent view之間的關(guān)聯(lián)

public interface ViewParent {public void requestLayout();

public void createContextMenu(ContextMenu menu);

public void bringChildToFront(View child);

.....

}

viewManager

用來添加和移除activity中的view的接口 public interface ViewManager {public void addView(View view, ViewGroup.LayoutParams params);     public void updateViewLayout(View view, ViewGroup.LayoutParams params);     public void removeView(View view); } 二.他們之間的內(nèi)在關(guān)系。

1. 對于view來說,添加到viewGroup中是通過addView();方式來實(shí)現(xiàn)的,在addView中實(shí)際上使用的是:

addViewInner(child, index, params, false);

流程是: 1.首先是對子View是否已經(jīng)包含到一個(gè)父容器中

2.對子View布局參數(shù)的處理

3.調(diào)用addInArray來添加View

4.設(shè)置父View為當(dāng)前的ViewGroup

5.焦點(diǎn)的處理

6.當(dāng)前View的AttachInfo信息

7.View樹改變的監(jiān)聽

8.子View中的mViewFlags的設(shè)置                              主要是通過    addInArray添加view,添加的實(shí)現(xiàn)為system.arrayCopy(....);

2. 對于viewGroup來說,都會(huì)顯示在在一個(gè)窗口中,每個(gè)都有一個(gè)父節(jié)點(diǎn)mParent,,最頂上的節(jié)點(diǎn)也是一個(gè)viewGroup,也就是decorView。

對于每個(gè)activity只有一個(gè)decorView也就是ViewRoot,只有一個(gè)window,window的獲取是通過下面方法獲取的。

Window mWindow = PolicyManager.makeNewWindow(this); 復(fù)制代碼 在activity中使用setContentView(),其實(shí)是使用了 window.setContentView()完成的,window.setcontentView,

還是通過LocalWindowManager.addView(view, params)來實(shí)現(xiàn)的。這里L(fēng)ocalWindowManager是實(shí)現(xiàn)了WindowManagerImpl.CompatModeWrapper

,本質(zhì)上就是WindowManager、viewManager接口中的addvidew方法。

3.  對于windowManager來說一個(gè)系統(tǒng)只有一個(gè),它是由系統(tǒng)底層實(shí)現(xiàn)的,用于負(fù)責(zé)調(diào)度當(dāng)前顯示那個(gè)窗口,消息處理我們獲得一個(gè)windowManager的方式如下: WindowManager windowManager = (WindowManager)context().getSystemService(                                     Context.WINDOW_SERVICE); 復(fù)制代碼 這里windowManager其實(shí)是一個(gè)接口,而通過getSystemService的方式。通過這個(gè)方式可以獲取很多的系統(tǒng)服務(wù),比如電話、鬧鐘、電源管理等等。

同時(shí)windowManager和幾個(gè)類之間的內(nèi)在聯(lián)系如下:

windowManager類圖關(guān)系.jpg (67.46 KB, 下載次數(shù): 0)

下載附件  保存到相冊

2013-10-10 19:02 上傳

責(zé)任編輯:

標(biāo)簽:

相關(guān)推薦:

精彩放送:

新聞聚焦
Top 精品国产精品国产免费| 亚洲天堂av影视在线| 美女作污一区二区三区| 国产精品制服诱惑丝袜的| 亚洲av 综合一区| 老熟妇乱一区二区三区| 欧美专区在线观看视频| 四房波波-五月天-四房波波| 搞黄色的网站在线观看| 午夜小视频 在线观看| 小少妇久久久久久久| 亚洲嘿嘿网站在线观看| 啊!用力操我!好爽| 91热精品视频在线播放| 亚洲图片av伦理三级| 亚洲一区二区日韩欧美久久| 亚洲av 综合一区| www人妻一区二区| 91九色popny人妻| 在线 国产区 视频| 中文字幕第一区高清av| 国语自产免费精品视频一区二区| 丰满熟妇人妻一区二区三区| 欧美精品视频一卡二卡| 日本不卡视频免费播放| 欧美vide0sde极品另类| 性色蜜月av一区二区三区| 老熟妇乱一区二区三区| 韩国三级国产精品一区| 亚洲久久久久久久久| 激情视频国产在线免费观看| 蜜桃人妻av2023| 在线观看免费视频网站色| 亚洲av天堂av在线| 蜜臀av在线观看一区| 手机在线看日韩av资源| 亚洲精品午夜福利久久| 国产精品久久久久久电 | 宾馆偷拍一区二区三区| 男人的天堂av成人网| 人妻中文字幕影音先锋| 久久精品乱码中文字幕| 99精品久久久久久噜噜| 亚洲AV无码成人精品国产一区| 青娱乐休闲在线观看视频| 麻豆传媒视频区一区二| 亚洲综合在线一区二区三区四区| 最新中文字幕不卡av| 在线精品视频这里只有精品| 欧美区一区一区三区| 18免费1000视频国产| 亚洲精品乱码久久久久99| 日本a v中文字幕网| 欧美亚洲另类综合网| 91精品一区二区三区蜜桃| 日本阿v片中文字幕在线| 中文一区二区在线播放| 天天日天天干天天啪天天射| 精品久久久久久无码中文野结衣| av黄片网站在线观看| 日韩欧美亚洲第五页| 一级毛片试看三分钟| 久久久久久久久久99蜜桃| 日本mm一区二区三区高清| 大香蕉免费在线伊人| 亚洲图片 欧美专区 自拍| 国产加勒比精品蜜臀在线观看| 欲求不满的邻居人妻一区二区三区| 日本mm一区二区三区高清| 日产国产亚洲精品系列p| 日本亚洲综合伊人久久| 在线免费观看亚洲v| 91人妻porny精品国产| 成年视频短视频在线播放| 日本mm一区二区三区高清| 国产高清欧美日韩精品| 欧美一区二区三不卡| 美女福利在线免费观看| 国产美女视频网久久69| 国产av国片精品jk制服| 欧美亚洲自拍偷拍xxx| 国产av在线播放免费| 老鸭窝大视频网站a一级| 蜜桃人妻av2023| 可以在线观看的视频你懂的| 欧美午夜理论片1000在线播放 | 97视频免费观看一区| 亚洲欧洲久久av日日更新| 欧美专区在线观看视频| 国产97在线观看视频| 九色91在线只有精品| 亚洲免费在线观看,| 国产精品国产自产拍在线| 中国男人肏女人大屄的视频| 亚洲一区二区蜜乳av| 91新视频在线免费观看| 男人的天堂av 色噜噜| 国产交换乱淫99视频| 美女和猛男诱惑操逼捅鸡鸡| 亚洲熟女乱色综合小说| 日韩中文字幕色资源| 秋霞午夜鲁丝片午夜精品久| 日韩精品网站免费观看ww| 亚洲大胆综合在线观看| 大鸡吧淫水四射视频| 男人把女人桶到爽午夜视频| 国产婷婷色三区二区一区| 国产亚洲精品久久久久久电影| 人妻性奴隶免费观看| 亚洲熟女乱色综合小说| 亚洲一点不卡福利视频| 激情啪啪理论片中文字幕| 182tv免费福利中文字幕| 欧美一区二区三区高清视频| 色偷偷东京热男人的天堂| 色婷婷综合欧美日韩亚洲| 熟女人妻伊人蜜桃视频| 9久久久久久久久久久| 中文幕av一区二区三区佐山爱| 亚洲91色精品一区二区| 亚洲经典国产一区二区三区| 国产精品视频中文无码| av男人天堂网在线观看| 一区二区三区视频直播| 北岛玲在线播放中文字幕| 日本超清有码在线观看| av制服国产丝袜黑丝网站| 中文字幕丰满人妻fsdss| 欧美色视频日本片免费看| 久久亚洲av午夜福利精品一区| 六十六节医疗保健操全套| 无套内谢少妇一二三四| av大片免费观看网站| 动漫卡通一区二区三区| 免费在线观看不卡高清av| 欧美av在线观看网址| 亚洲av日韩av在线综合av| 无码大荫蒂视频在线| 中文字幕一区二区720p| 老司机福利社免费视频| 精区一品二品精区在线91| 91人妻porny精品国产| 美女扒开腿让男人桶网站| 青青色国产在线视频网站| 欧美午夜理论片1000在线播放 | 亚洲图片 欧美专区 自拍| 色综合人妻中文字幕| 中文字幕一区二区三区人妻| 亚洲中字幕日产AV片在线| 131美女午夜免费视频| 欧美午夜理论片1000在线播放 | 天天操日日干夜夜射| 久久久久久久久久99蜜桃| 加勒比久久综合久久678| a区精品视频在线观看| 97精品视频久久久久| 中文字幕久久久aⅴ大片| 亚洲最大av无码国产网址| 强伦轩人妻一区二区三| 日本熟妇三十熟女精品区| 黄免费在线观看视频| 国产精品久久乱码无人区| ass亚洲熟妇熟女pics| 国产99热这里有精品| 中文字幕一区久久性色| 操死你 骚货 视色| 午夜少妇成人人妻av| 日韩午夜福利三级经典| av一区二区在线播放色婷婷精品| 亚洲天堂男人天堂中文字幕| 在线观看成人欧美一区| 北岛玲在线播放中文字幕| 精品久久久福利国产| 国产午夜精品1区2区3区| 裸体一区二区三区av| 欧美一级特黄大片做受日本| 国产小视频在线播放| 久久人人添人人爽添人人片va| 精品一区二区三区别视频| 色老汉av一区二区三区| 欧美一区二区三区在线爱爱| 亚洲在线中文字幕av| 亚洲av免费观看网站在线观看| 日本乱理三级在线观影视频| 强d乱码中文字幕熟女导航| 亚洲av综合在线观看免费| 色视频免费在线观看高清| 啪啪啪啪一区二区三区四区三级片| 男人日女人鸡鸡天天视频官方 | 亚洲一级中文字黄色片| 欧美国产一区二区三区| 九色porny蝌蚪少妇| 国产视频污污污在线观看| 欧美日韩国产免费福利| 亚洲熟女毛茸茸上厕所尿尿| 日韩精品视频网站免费观看| av亚洲天堂中文字幕| 国产成人亚洲一区二区三区 | 熟女俱乐部五十路 六十路| 熟妇高潮喷水在线120p| 日本国产福利视频在线观看| 大香蕉伊人久久在线观看| 免费观看亚洲女同性恋一区二区| 一区二区性视频在线观看| 啪啪啪1000国产精品| 99精品国产中文字幕| 美女扒开腿让男人桶网站| 欧美精品日韩不卡免费| 中文字幕激情亚洲精品| 一级毛片试看三分钟| 中文字幕熟女人妻丝袜电影| 熟妇av一区二区三区| 国产名人亚洲视频中文字幕| 中文字幕亚洲精品八区| 中文字幕精品一区二区三区视频 | 91精品人妻丰满熟妇| 国产精品不卡在线播放| 免费在线观看成人激情视频| 天天玩天天摸天天舔| 538精品视频国产| 三级大尺度无码视频| 中年美熟妇与少年的激情| 国产+精品+在线观看| 韩国三级国产精品一区| 欲求不满的邻居人妻一区二区三区| 婷婷国产一区二区三区| 欧美国产一区二区三区在线看| 99国产精品视频播放| 91九色成人原创视频| 蜜臀av在线观看一区| 男人的天堂av 色噜噜| 老太熟妇乱淫aaaaa片免费| 五十二老熟女高潮嗷嗷叫| 精品国产专区91精品| 日韩夫妻性生活视频在线观看免费| 国产精品综合自拍第一页| 中文字幕乱码精品一区二区三区| 粗大挺进朋友人妻身体里国产 | 全国av一卡二卡三卡免费| 天天干天天谢天天操| 日本亚洲综合伊人久久| 99国产热精品在线观看| 9l视频自拍九色9l视频不卡| aaa夜夜夜精品视频| 日本va欧美va国产综合va| 中文字幕一区久久性色| 天天操,天天射,天天日| 中文字幕_第1页_绿茶av| 久久日99久久里面有精品| 青青青久免费在线视频| 国产在线成人精选视频| 国产大女露脸自拍大叫| 亚洲中字幕日产AV片在线 | 欧美一区二区三区在线爱爱| 国产日韩欧美高清无网码| 极品扒开粉嫩小av一区二区| 啊啊啊啊在线视频观看| 人妻天天爽夜夜爽2区蜜a∨| 中年美熟妇与少年的激情| 久久久久久久毛片5| 成人免费xxxx在线| 自拍偷拍亚洲色图经典三级| 欧美老熟妇在线一区二区三区| 被插到喷水视频在线观看| 天堂av2025一区| 亚洲中文精品第一页| 五十二老熟女高潮嗷嗷叫| 日韩人妻无码一区2区3区| 欧美日韩黄色aaa| 大香蕉伊人久久在线观看| 中文字幕_第1页_绿茶av| 青青草毛片在线观看| 麻豆传媒视频区一区二| 天天日天天干天天啪天天射| 黄色的视频黑丝网站| 久久古典武侠第1页777| 99热在线这里只有精品| 日本国产福利视频在线观看| 美女作污一区二区三区| 韩国美女主播福利在线| 日韩免费一卡二卡三卡四卡五卡| 国内精自线一二三四区| 啪啪啪在线免费视频| 一级黄色片特级黄色片| huangse网站免费观看| 护士色视频亚洲婷婷| 男人天堂2017在线| 在线观看成人欧美一区| 少妇视频播放在线播放免费观看| 亚洲女人毛毛多毛耸耸| 国产主播精品在线一区| 人妻人妻干干干干人妻网站| 人鱼小姐在线观看国语版字幕| 秋霞午夜鲁丝片午夜精品久| 日韩夫妻性生活视频在线观看免费| 久久久com久久久com| 久久热高清在线观看| 中文字幕精品无码一区二区三区| 久久久精品国产综合| 激情91久久婷婷综合| 激情黄色激情综合久久| 免费可以看黄页的视频| 亚洲国产精品午夜福利久久| 99999精品视频在线观看| 亚洲精品无码中文字幕专区| 九色视频在线观看网址| 97视频免费观看一区| 老窝鸭av一区二区三区| 日韩专区欧美专区第五页| 忘忧草精品久久久久久久高清| av在线视频观看免费| 成年永久免费播放平台| 欧美极品少妇αv另类| 亚洲午夜短视频在线| 97人妻人人爱人人澡人人爽| 中文字幕丰满人妻fsdss| 国产精品福利视频资源| 秋霞网av一区二区三区中文字幕| 青青国产成人在线看| 成人中文字幕在线高清| 天天干天天操天天射天天日| 北岛玲精品一区二区三| 老鸭窝最新在线视频| 国产精品美女久久久久av精| 在线人妻中文av导航| 91人妻porny精品国产| 久久97久久97免视看| 亚洲天堂中文字幕手机在线 | 日本少妇不卡狠狠狠| japanese国产在线播放| 五月激情网激情五月| 日本老熟女人体艺术| 老司机福利社免费视频| 97精品视频久久久久| 91精品视频在线观看999| 中文字幕在线精品的视频| 久亚洲aⅴ一区二区三区写真| 97视频免费公开在线播放| 超碰青青草原免费在线观看97| 免费可以看黄页的视频| 国产 福利 一区二区| 瑟瑟视频在线网站免费观看| 日韩在线网站一区二区三区| 亚洲最新欧美偷拍视频| 国产午夜精华视频在线| 2025中文字幕在线| 中文字幕一区二区三区四区五区人 | 深夜福利成人在线观看| caoporn中文字幕视频| 精品人妻天天爽夜夜爽| 中文字幕av一区二区三区不卡| 亚洲地址一区二区三区四区| 婷婷热re99久久精品国产| 91精品久久一区二区| 爱妃视频av一区二区| 激情啪啪理论片中文字幕| 欲求不满的邻居人妻一区二区三区 | 91手机免费在线视频| 男女视频一区在线观看| 成人av泽村在线播放| 欧美成人免费观看在线看| 日韩av在线免费观看中文字幕| 50岁老熟女高潮喷水了| 99在线只有精品视频| 亚洲综合精品天堂丁香芒果| 中文字幕精品一区二区三区视频| av在线播放网址大全| 99视频精品在线免费观看| 91综合久久久久久久久久久| 人妻欲求不满作品番号| 97视频免费公开在线播放| 91精品人妻丰满熟妇| 国产一区二区三区黄片欧美| 国产视频播放一区二区三区| 色视频在线观看在线| 中文字幕亚洲精品八区| 男人的天堂av成人网| 2020最新中文字幕在线| 日本黄站一区二区在线观看| 啪啪啪啪啪啪啪啪啪日本| 日本 高清 中文字幕| 涩爱av一区二区在线播放视频| 日本丰满老熟妇bbw| 久久久久久久岛国免费播放| 91免费在线播放视频| av资源最新版在线天堂| 99久久国产亚洲精品| 亚洲av乱码一区二区三区四区| 高潮少妇高潮久久精品99| 精品久久久久久综合日本欧美| 中文热免费在线视频| 91日本av在线观看| 免费观看男人操逼的操女人的 | 东京一区二区三区av在线| 亚洲精品中文字幕原千岁| 巨大屁股女教师极品白嫩少妇| 国产91福利在线导航| 日本黄色录像第1部播放器播放| 女高中生第一次破苞av| 亚洲国产伦理久久精品| 丰满人妻一区二区三区免费视频棣| 97超碰资源总站在线观看| 强行进女小姪女小芳| 人妻中文字幕影音先锋| 91日本av在线观看| 97超碰在线中文字幕精品| 99久热精品视频在线播放| 天天干天天干天天操天天日| 日韩午夜福利三级经典| 成人av影视一区二区三区| 国产交换乱淫99视频| 国产福利小视频在线免费观看 | 国产精品福利视频资源| 欧美老熟妇在线一区二区三区| aaa夜夜夜精品视频| 欧美口爆吞精一区二区三区| 国产午夜精品1区2区3区| 中文字幕人妻丝袜二区av| 国内在线精品视频在线观看| 中文字幕丰满人妻fsdss| 久久亚洲av午夜福利精品一区| 131美女午夜免费视频| 91成人在线观看免费| 天堂av在线男女av| 高潮少妇高潮久久精品99| 亚洲av综合在线观看免费| 蓝莓小视频在线观看| 欧美大香蕉一区二区三区| 亚洲va欧美va人人爽2| 香蕉视频免费看国产精品| 日韩视频在线观看四区| 中文字幕日韩一二区| 日韩人妻熟妇精品xxx| 日韩欧美亚洲精品高清国产| 精品成人一区二区三区四区影视| 亚洲最大的中文字幕在线| 北条麻妃超碰av在线播放| 中文字幕超碰18区| 四季亚洲中文专区av| 青青草原精品资源站| 97精品视频久久久久| 人妻精品无码一区二区三区百花 | 五月天色婷婷亚洲欧美| 亚洲av 综合一区| 欧美的一区二区三区| 人妻色噜噜噜噜一区二区| 视频一区二区在线播放| 密臂av性久久久久蜜臂av| 97人人澡人人添人人爽| 韩国电影年轻的妈妈7| 可以免费直接观看的av| 国产午夜精品在线播放| 亚洲午夜激情视频在线播放| 久久精品视频女人按摩| 91久久美利坚合众国保护| 中文字幕亚洲精品熟女少妇| 啪啪啪啪啪啪啪啪啪日本| av看片资源网手机版在线播放 | 精品麻豆国产综合在线9| 欧洲亚洲国产永久精品| 国产高清精品福利私拍国产写真 | 亚洲天堂av在线免费看| 99久久99久久综合| 制服诱惑,日韩情色| 2021国产麻豆剧传媒精品入口| 中国精品视频在线观看一区二区| 国产97在线观看视频| dorcelclub欧美成人| 韩国电影年轻的妈妈7| 国产主播精品在线一区| 成人涩涩小片视频日本| 97视频免费观看一区| 日本二区三区精品免费| 瑟瑟视频在线网站免费观看| 亚洲欧美日本高清在线观看| 大香蕉在线福利导航| 男女裸交无套啪啪激情高潮| 男女视频一区在线观看| 中文字幕99精品一区| 亚洲综合一区二区在线视频| 国产婷婷色三区二区一区| 久产久91精国九品打| 人妻熟妇久久久久久xxx| 亚洲av 综合一区| 石原莉奈一区二久久影视| 97超碰人人澡香蕉| 中国男人肏女人大屄的视频| 天天操天天舔天天操| 999精品视频免费看| 五月婷婷六月久久久| 91精品国产人妻国产| 成人两性色午夜视频免费88AV| 91久久美利坚合众国保护| 欧美亚洲国产第一二区| 青草神马视频在线网址| 久久av四色米奇影视| 超碰av在线一区二区三区| 鲁久久无码五月天有码| 操骚逼啊啊啊叫一区二区三区| 一区二区三区免费精品| 国产一区二区精品调教| 日本欧美黄色网站免费| 99在线只有精品视频| 中文字幕乱码视频日本一区二区| 最新69视频在线观看| 东京一区二区三区av在线| 尹人香蕉综合网在线观看| 在线观看免费精品一区| 青娱乐休闲在线观看视频| 亚洲天堂国产精品乱伦一区| 一区二区性视频在线观看| 51国精产品一区二区三| 欧美丝袜办公室在线91| 天天爽天天爽免费视频| 亚洲中文有码字幕青青| 亚洲va欧美va国产综合久久| 最新黄色天堂av在线资源| 久久久com久久久com| 亚洲国产自拍偷拍精品| 中文在线播放一区二区三区 | 强行进女小姪女小芳| 自拍偷拍国产欧美精品| 男人天堂中文字幕av| 在线视频 中文字幕 一区二区| 美女叉开腿让男人桶视频| 鲁久久无码五月天有码| 无套内谢少妇一二三四| 欧美18vide0sex性极品| 无翼乌18禁本子全彩无遮 | 日本在线观看公司入口视频| 77字幕网77中文字幕| 国产成人自拍在线播放| 蜜桃亚洲av优女av综合久久久| 丝袜 制服 国产 欧美 日韩| 日本不卡视频免费播放| 亚洲一区二区三区在线直播| 欧美一卡二卡3卡4卡无卡十| 在线人妻中文av导航| 日韩亚洲欧美中文在线电影 | 人妻少妇精品视中文字幕国语| av中文字幕 中文字幕第一页 | 超碰国产极品尤物在线| 北条麻妃超碰av在线播放| 色狠狠久久vs北条麻妃av| 大香蕉伊人久久在线观看| 国产成人亚洲一区二区三区| 日韩级视频在线播放| 久久中文字幕永久第一页| 国产+精品+在线观看| 99青青草原在线视频| 国产区精品一区二区不卡中文| 91九色p精品久久久| 国产日韩欧美高清无网码| 青青草原精品资源站| 一色桃子av人妻熟女完整版| 大香蕉av电影在线| 特黄把女人弄爽又大又粗| 国产精品无码一区二| 亚洲最大的中文字幕在线| 538精品视频国产| 手机视频免费在线观看| 一区二区性视频在线观看| 69久久夜色精品国产69| 一区二区三区麻豆蜜桃视频| 字幕人妻一区二区视频| 国产手机av免费在线看片不卡| 日本一区二区三区综合网| 国产91色婷婷手机在线| 国产精品va在线观看老妇女| 国产高清激情在线视频| 午夜狠狠干在线视频| 欧美码一二三区线观看| 成人欧美网站免费直接看| av一区二区在线播放色婷婷精品 | 男人的天堂av成人网| youjizz少妇日本| 色综合人妻中文字幕| 欧美国产一区二区三区在线看| 中文字幕人妻免费电影| AV成人国产免费久久精品| 日本超清有码在线观看| av中文字幕 中文字幕第一页| 字幕人妻一区二区视频| 久久精品乱码中文字幕| 超碰97人妻中文字幕| 天天插天天干天天爽| 亚洲大胆综合在线观看| 欧美裸体xxxxx极品少妇| 日韩一二区内射电影| 一区二区三区视频直播| av熟女乱一区二区三区| 看全黄大黄大色大片美女| 日本激情在线看一区二区三区| 亚洲午夜激情视频在线播放| 亚洲在线视频一区二区| 国产名人亚洲视频中文字幕| caoporm超碰97| 免费一级特黄特色黄录像| 97超碰人人澡香蕉| 精品少妇人妻大乳av| 激情视频国产在线观看| 欧美大香蕉一区二区三区| 亚洲国产丰满熟女一区二区三区| 操死你 骚货 视色| 欧美三级不卡在线播放 | 亚洲av永久无码精品尤物| 最近免费中文字幕日韩| 欧美一区二区三区视频在线观看| 在线视频成人青青草久热 | 久久人人添人人爽添人人片va| 天天搡天天狠天干天| 五月天中文字幕亚洲| 人妻斩43r熟女人妻| 啊啊啊啊啊鸡巴进小穴了视频| 国产性感美女诱惑免费av| 欧美专区在线观看视频| 几把操女的逼喷水视频| 2020最新中文字幕在线| 白丝大胸美女操批内射视频| 97 在线观看视频网站| 成人免费xxxx在线| 美日韩黄色一级视频| 在线播放__91色| av制服国产丝袜黑丝网站| 国产精品视频自拍一区| 精品国产污网址在线观看| 日韩欧美 亚洲国产| 在线观看国产剧情av| 九一欧洲国产无码在线| 2022国产情侣在线视频播放| 亚洲国产成人爱av网站| 97超碰在线资源总站| 国产手机av免费在线看片不卡| 东京不太热在线观看视频| 91手机免费在线视频| 青青青在线视频免费观看手机版| 免费在线一区二区视频| 国产精品剧情在线视频| 中文字幕福利在线观看| 五月开心六月伊人色婷婷| 午夜激情片免费在线观看| 国产 福利 一区二区| 亚洲av在线观看久久久| 在线观看视频一区二区精品| 欧美在线一区二区三区| 亚洲精品中文字幕原千岁| 超级黄的有肉视频在线观看| 色视频在线观看在线| 男生殖器插女生殖器视频欧美| 国产区精品一区二区不卡中文 | 女高中生第一次破苞av| 欧美日韩国产免费福利| 日韩人妻熟妇精品xxx| 日本亚洲综合伊人久久| 国产无套水多大学生性色AV| 777爽死你无码免费看一二区| 一区二区在线欧美日韩中文| 国产av剧情网址大全| 99精品久久久久久噜噜| 久久精品日产第一区二区三区| av在线播放网址大全| 玩弄人妻少妇精品视频在线 | 日本 高清 中文字幕| 色丁香国产精品综合久久| 国产又粗又猛又大爽又黄香借| 亚洲区欧美区自拍偷拍区| 男人的天堂av 色噜噜| 大胸美女黄网站色片大全亚洲| 看国产剧的免费软件| 国产三级在线一区二区三区| 不戴胸罩的人妻电影| 青青色在线视频精品观看| 中文字幕=中文字幕| 91九色国产自拍视频| 秋霞网av一区二区三区中文字幕| 国产精品一线二线三区| 亚洲一二三区免费视频| 青青国产成人在线看| 国产精品自拍视频网站| 人妻熟妇久久久久久xxx| 中文热免费在线视频| 9久久久久久久久久久| 国产一区二区三区在线资源| 日本精品一区二区三区四区| 香蕉视频免费看国产精品| 伊人成人综合小说网| 国产区精品一区二区不卡中文| 天天爱天天做天天舔| 人妻在线一区二区三区| 最近的中文字幕一区二区| 成年永久免费播放平台| 中文字幕成熟丰满人妻| 国产av一区二区最新精品| 不戴胸罩的人妻电影| 99via精品福利影视| 亚洲国产成人精品久久久久久久久 | 亚洲欧美码免费观看视频| 精品亚洲国产亚洲国产| 有故事情节的美女免费日逼视频| 中文字幕a区一区三区| 日本黄色录像第1部播放器播放| 六十六节医疗保健操全套| 午夜美女直播福利视频| 国产精品久久久久久电| 久久热免费在线观看视频| 揉老熟女老熟妇aaa| 美女爽爽午夜作爱视频1314| 色偷偷欧美男人的天堂| 91九色黑丝长腿美女| 国产婷婷综合丁香亚洲欧洲| 国产精品久久久久久电 | 免费高清视频亚洲熟女| 99国产精品视频播放| jizz成人在线视频| 中文视频久久在线观看| 天天干天天插天天透| 真人一级一97片成人片| 美女叉开腿让男人桶视频| av在线免费观看一区| 中文字幕丰满人妻fsdss| 男人的天堂av成人网| 无码伊人久久大杳蕉中文无码| 色狠狠久久vs北条麻妃av| 天天插天天日天天操天天干| 自由的成熟女性色视频| 经典视频一区二区三区| 秋霞一区二区三区小说| 啪啪啪在线免费视频| 日本性生活视频观看免费| 视频一区二区在线观看视频| 少妇张开腿让我爽了一夜视频| 日本阿v片中文字幕在线| huangse网站免费观看| 亚洲国产欧美日韩综合| 中文字幕亚洲亚洲激情| 欧美一区二区三区视频在线观看| 国产欧美亚洲精品第一页青草| 91新视频在线免费观看| 日韩中文字幕一级乱码在线亚洲| 久久97久久97免视看| 国产性感美女诱惑免费av| 在线观看麻豆免费视频| 天天干狠狠插夜夜操| 欧美黄色网黄色欧美网| 人妻少妇精品视频专区专区| 91瑟瑟视频在线观看| 老太熟妇乱淫aaaaa片免费| 亚洲av 综合一区| 精品麻豆国产综合在线9| 成人午夜福利视频镇东影视| 欧美欧美欧美欧美欧美欧美| 欧美午夜理论片1000在线播放| 天天干天天做天天摸| 日韩欧美亚洲第五页| 国产97精品在线免费看| 色狠狠久久vs北条麻妃av| 啪啪啪啪啪啪啪啪啪日本| 在线播放__91色| 亚国产亚洲亚洲精品视频| 人妻精品无码一区二区三区百花 | 人人妻,人人干,在线| 亚洲精品久久中文字幕| 国产精品网站一区在线观看| 黄免费在线观看视频| 国产高清精品福利私拍国产写真| 伊人网av在线观看| 97久久超碰成人精品网页91| 四季亚洲中文专区av| 成人污视频在线免费观看网址| 国产精品免费视频22| 亚洲中文字幕综合av一区| 日本亚洲综合伊人久久| 欧美成人中文字幕在线视频| 538精品视频国产| 被插到喷水视频在线观看| 国产美女在线极品美女网站| 欧洲av网址在线观看| 午夜狠狠干在线视频| 91精品青草福利久久午夜| 中文字幕a区一区三区| 日韩中文字幕色资源| 啪啪啪1000国产精品| 看国产剧的免费软件| 国产91手机精品在线播放| 国产免费公开视频在线播放| 在线视频在线观看你懂的| 鲁死你资源站亚洲av一级aⅴ| 日本久久久久久久久人妻视频| 亚洲一级中文字黄色片| 亚洲无码免费一二三区视频| 老司机带带我视频完整版| 天天爱天天做天天舔| 国产精品亚洲av国产| 亚洲天堂国产精品乱伦一区| 亚洲激情四射在线观看视频| 男生捅女生逼的免费视频软件| 欧美码一二三区线观看| 青青草国产免费在线观看| 在线能看的网站你懂得| 男女上下差差发哈插插插 | 欲求不满的邻居人妻一区二区三区| 亚洲精品av成人在线观看| 又大又黄又粗又爽少妇毛片 | 手机在线一区二区三区| 欧美日韩精品亚洲欧美| 人妻天天爽夜夜爽2区蜜a∨| 啪啪啪在线观看免费视频| 国产主播在线露脸观看| 日韩视频在线观看四区| 富婆按摩高潮一区二区三区91 | 男女啪啪自拍露脸视频| 99国产热精品在线观看| 中文字幕一区二区三区人妻| 欧美老熟妇乱子伦视频在线观看| 99via精品福利影视| 青青草原精品资源站| 男人插女人逼视频播放| 无套内射黑丝美女91| 亚洲一级中文字黄色片| 国产中文字幕88av| 欧美的一区二区三区| 把鸡鸡伸进去的视频| 99久久无色码中文字幕免费| 婷婷国产一区二区三区| 中文字幕av一区二区三区不卡| 中文字字幕在线中文乱码2019| 少妇人妻肉欲短视频| 中文字幕一二区二三区人妻专区| 天天干天天操天天射天天日| 香蕉视频免费看国产精品| 亚洲人妻一区二区三区久久精品| 欧美亚洲国产第一二区| 老头插进去好多水'视频| 人妻 日韩 制服 中文 在线| 巨大屁股女教师极品白嫩少妇| 日本中文字幕第三区| 狠狠综合久久亚洲av蜜臀| 免费看亚洲av的网站| 午夜动漫福利在线观看| 蜜桃黄视频在线观看| 日本欧美在线免费观看视频 | 可以在线观看的视频你懂的| 青青久在线观看免费视频| 亚洲国产成人精品久久久久久久久| 嫩草伊人久久精品少妇av网站| 亚洲 自拍 色综合图区av网站| 在线观看免费精品一区| 91九色国产自拍视频| 天天操日日干夜夜操| 色丁香国产精品综合久久| av蜜臀一区二区三区| 日日夜夜草日日夜夜干| 国产无套水多大学生性色AV| 亚洲精品无码中文字幕专区| 精品少妇人妻av免费麻豆| 亚洲av日韩av在线综合av| 精品国产成人在线免费| 91成人国产在线观看九色| 制服诱惑,日韩情色| 国产精品视频自拍一区| 成年免费毛片视频不卡| 成人av中文字幕网址| 51国精产品一区二区三| 97视频免费公开在线播放| 欧美精品色呦呦首页| 人妻熟妇久久久久久xxx| 日韩一区=区三区四区| 亚洲免费不卡一区二区三区| 欧美日韩精品亚洲欧美| 视频一区二区在线播放| 在线免费观看国产欧美日韩| 日本丰满人妻免费电影| 都市激情中文字幕蜜桃 | 精品三区漫画图片分类| 午夜两性操一操在线观看嗯嗯啊| 欧美色高清vvvvvv| 宝贝腿开大点我添添公漫画| 天天插天天干天天爽| 午夜少妇成人人妻av| 天堂av在线男女av| 91极品尤物国产在线播放| 一区二区三区精品久久人妻| 富婆按摩高潮一区二区三区91| 天天日,天天干,天天舔| 韩国三级国产精品一区| 日本午夜色视频在线观看| gogo大尺度二区三区| 九九热线这里只有精品| 成人av黄片免费在线观看专区 | 亚洲免费在线观看,| 成人av影视一区二区三区| 日韩激情又爽aaaaa级| 中文字幕99精品一区| 日本性生活视频观看免费| 强d乱码中文字幕熟女导航| 久久久久一区二区三区四区| 欧美日韩激情图片视频另类| 精品少妇人妻av免费麻豆| 初撮日本五十路人妻| 9久久久久久久久久久| 亚洲av乱码一区二区三区四区| 综合日韩人妻一区二区三区| 亚洲av 综合一区| 97超碰在线资源总站 | 亚洲情色成人精品视频| 日产精品免费一区二区三区| 国产免费自拍视频精选| 亚洲视频资源在线播放| 欧美一区二区三区视频在线观看| 国产老女人av一区二区三区| 五月婷婷丁香中文字幕亚洲一区| 国产精成人品一区久图片| 国产一级特黄aaa片做受小说| 精品日产一匹二匹三匹四匹五匹| av精品一区二区三区免费观看| 亚洲美女福利视频免费| 日韩妹子精品视频在线观看| 人成免费视频一区二区三区| 在线播放__91色| 清纯国模自拍视频在线观看| 天天干天天日少妇网| 男人的天堂av 色噜噜| 青青操一区二区三区| 都市激情中文字幕蜜桃| 91精选一区二区三区四区| www人妻一区二区| 蜜桃人妻av2023| 人妻少妇麻豆中文字幕久久精品| 日韩级视频在线播放| 日韩亚洲中文在线视频| 男人插女人动漫视频| 青青操在线超碰传媒| av亚洲欧美一区二区| 人鱼小姐在线观看国语版字幕| 国产av剧情网址大全| 日本亚洲美女视频一区| 五月激情网激情五月| 亚洲短视频自拍偷拍| 大鸡吧淫水四射视频| 娇小型av优女大全| 操骚逼啊啊啊叫一区二区三区| 99精品一区在线观看| 色老汉av一区二区三区| 狂野欧美激情性xxxx| 91精品丝袜久久久| 中文字幕丰满人妻fsdss| 国产亚洲精品137片内射 | 午夜两性操一操在线观看嗯嗯啊| 青青草原精品资源站| 在线观看视频一区二区精品| 日韩欧美 亚洲国产| 在线精品亚洲欧美日韩| beeg欧美丰满人妻| 精品一区二区三区别视频| 可以在线观看的视频你懂的| v888av精品少妇| 最近的中文字幕一区二区| 人妻女教师的沦陷大明| 99国产精品视频播放| 久久中文字幕永久第一页| 加勒比日本一区二区三区| 九色视频在线观看网址| ntr人妻セックス在线| 日本成人av在线免费看| 91手机免费在线视频| 亚洲av免费观看网站在线观看| 91九色在线视频入口| 美女很黄很色国产av| 漂亮人妻视频免费在线播放| xxxxxx日本少妇| 日韩av在线免费观看中文字幕| 老鸭窝大视频网站a一级| 91大神长腿美女视频在线观看| 天天干人人干天天操| 97久久超碰成人精品网页91 | 午夜伦理在线在线观看视频| www国产精品人妻| 91九色在线视频播放| 人妻熟妇中文字幕免费视频| 免费在线一区二区视频| 九色porny蝌蚪少妇| 天天日天天操天天干天天舔天天射| 激情视频国产在线免费观看| 中文字幕乱码精品一区二区三区| 欧美人妖一区二区三区| 国产免费自拍视频精选| 91精品在线观看视频| 中文字幕乱码人妻在线观看| 2023天天色天天操| 人妻中文字幕影音先锋| 国产主播在线观看一区二区| 成人av黄片免费在线观看专区| 精品少妇人妻av免费麻豆| 77777色婷婷av一区二区三| 日本xxxxx久久| 亚洲国产成人久久无码| 精品人妻一区二区三区18p| 日日av拍夜夜添久久免费老牛| 97精品视频久久久久| 青青青久免费在线视频| 亚洲天堂中文字幕手机在线 | 欧美图区一区二区三区| 中文乱码在线观看一区| 成人欧美网站免费直接看| 国产精品视频中文无码| 色五月婷婷综合国产在线| 国产精品亚洲av国产| 91精品久久久久久久99蜜臀| 50岁老熟女高潮喷水了| 色老汉av一区二区三区| 中文字幕亚洲专区婷婷| 可以在线观看的av网站| 91精品青草福利久久午夜| 一区二区三区日韩高清| youjizzcom精品少妇| 欧美在线一区二区三区| 看国产剧的免费软件| 污污污的视频免费在线观看| 午夜一分钟视频免费在线观看| 日韩午夜小视频合集| 91精品在线观看视频| 国产精品国产三级区别第一集 | 国产主播在线露脸观看| 91九色porny蝌蚪主页| 经典视频一区二区三区| 成人免费xxxx在线| 趣夜视频在线免费观看| 最近免费中文字幕日韩| 国产亚洲精品137片内射| 91精品青草福利久久午夜| 国产成年无码av片在线| 精品一区二区三区最新| 人妻少妇麻豆中文字幕久久精品| 免费看黄片免费看视频| 大胸美女黄网站色片大全亚洲| 国产精品蜜臀在线观看| 免费在线观看成人激情视频| 欧美老熟妇在线一区二区三区 | 99精品国产九九国产精品| 亚洲一点不卡福利视频| 久久人人妻人人做人人爽涩爱| 国产精品一国产精品免费| 五月婷婷丁香中文字幕亚洲一区| 极品美女少妇高潮喷水| 精品久久久久久成人| 777精品久久久久久久| 日本中文字幕第三区| 亚洲va欧美va国产综合定档| 亚洲精品av成人在线观看| 黄色的视频黑丝网站| 粉嫩玉足夹茎视频在线看| 亚洲一区二区蜜乳av| 182tv免费福利中文字幕| 欧美猛少妇色xxxxxhd| 91av在线网址观看| 亚国产亚洲亚洲精品视频| 99久久久久久久久96久久| www国产精品人妻| 久9热精品视频在线播放| 成人自拍在线观看视频| 久久久久久久久91精品视频| 中文字幕日韩一二区| 青青青久免费在线视频| 在线观看免费的黄色片| 青青青在线视频免费观看手机版| 丰满女人的毛片久久久久久| 亚洲第一中文视频 | av大片免费观看网站| 免费av在线亚洲精品| 欧美 亚洲 国产 日韩一| 国产黄色片在线观看网站| 亚洲最大av无码国产网址| 激情91久久婷婷综合| 91高清免费在线播放| 欧美在线中文字幕第一页| 两人在沙发激情的视频| 日本欧美视频免费观看| 色视频免费在线观看高清| 欧美美女色视频免费看| 在线成人中文字幕网站| 嫩草伊人久久精品少妇av网站| 少妇性感美女一区二区三区四区| 熟女成人国产精品视频| 九色91蝌蚪porn| 大香蕉太香蕉在线免费看| av男人天堂网在线观看| 日本在线观看公司入口视频| 日韩不卡免费一区二区三区视频| 最近免费中文字幕日韩| 五月天久草亚洲香蕉| 一本久道久久综合狠狠躁| 成人av毛片免费观看| 国产主播av在线观看| 日韩中文字幕一级乱码在线亚洲| 国产精品免费手机在线观看| 国产av电影网毛片| 99国产精品视频播放| 国产高清精品福利私拍国产写真| 国产美女在线极品美女网站| 久久人人添人人爽添人人片va | 日韩高清亚洲精品国产欧美| 欧美的一区二区三区| 六月丁香六月在线视频| 日本激情在线看一区二区三区| 少妇被无套内谢免费观看| 亚洲熟女毛茸茸上厕所尿尿| 国产精品美女久久久久av精| 免费在线视频 中文字幕| 国产高清 国产av| av蜜臀一区二区三区| av蜜臀免费在线观看| 黄片激情视频国产免费| 91精品在线观看视频| 日日日日日日日夜夜夜夜夜| 亚洲中文精品第一页| 亚洲美女啪啪邪恶视频| 久久久久久久岛国免费播放| 日本特黄免费一级大片| 亚洲综合在线蜜臀av| 九一欧洲国产无码在线| 天天日,天天干,天天舔| 少妇喷水视频在线观看| 久久久com久久久com| 亚洲天堂av成人在线观看| 中文字幕 亚洲轻轻av| 欧美一区二区三区高清视频| 自拍偷拍国产欧美精品| 亚洲国产综合精品中文字幕| 天天综合网精品视频天天看| 亚洲另类校园春色小说| 卡通动漫中文字幕在线观看| 国产91福利在线导航| 4438x视频在线| 亚洲国产伦理久久精品| 漂亮人妻视频免费在线播放| 午夜久久在线观看视频| 免费av在线亚洲精品| 91精品青草福利久久午夜| 9l视频自拍蝌蚪9l成人熟妇| 少妇高潮一区二区三区在线| 亚洲精品视频在线99| 美女爽爽午夜作爱视频1314| 中文字幕一区二区720p| 亚洲天堂国产精品乱伦一区| 深夜黄色福利网站在线观看| 亚洲影视精品一区二区| 免费可以看黄页的视频| 亚洲国产丰满熟女一区二区三区 | 国产名人亚洲视频中文字幕| 日本亚洲综合伊人久久| 丰满熟妇xxxx性久久久| 在线观看一区二精品视频| 男人插女人阴穴的视频| 国产精品福利视频资源| av大片免费观看网站| 老窝鸭av一区二区三区| 日本国产精品第一页久久| 日本熟妇三十熟女精品区| 日韩一区=区三区四区| 一区二区三区四区无人区| 青青操在线超碰传媒| 精品国产成人在线免费| 强行进女小姪女小芳| 少妇张开腿让我爽了一夜视频| 蜜桃精品噜噜噜成人av小说| 免费观看男人操逼的操女人的| 91精选国产九色porny| 国产主播av在线观看| 中文字幕欧美人妻精品精品| a区精品视频在线观看| 国产精选黄片免费观看| 日韩亚洲欧美中文在线电影 | 91福利在线观看免费| 蜜桃黄视频在线观看| 亚洲国产长腿丝袜av天堂| 粉嫩玉足夹茎视频在线看| 日本国产一区二区三区视频| 天天看天天舔天天摸| 亚洲av无日韩毛片久久| 精品国产精品国产免费| 亚洲国产伦理久久精品| 中文视频久久在线观看| 日本少妇不卡狠狠狠| 国语自产精品视频在线看一大j8| 亚洲精品av成人在线观看| 天天干狠狠插夜夜操| 精品久久久福利国产| 欧美日韩精品亚洲欧美| 搞黄色的网站在线观看| 9久久久久久久久久久| 亚洲天堂av影视在线| 青青草原精品资源站| 蜜桃亚洲av优女av综合久久久| 97精品视频久久久久| 看全黄大黄大色大片美女| 精品视频在线观看剧情| 老鸭窝最新在线视频| 五月天中文字幕亚洲| 日本99精品一区二区三区| 久久99国产精品久久99蜜月| 久久久三级高清免费| 五月天色婷婷亚洲欧美| 国产精品免费观看91| 久久精品视频女人按摩| 日本黄站一区二区在线观看| 欧美老熟妇在线一区二区三区| 欧美亚洲国产激情在线| 亚洲AV永久青草无码士清品| 中文字幕中文字幕在线一区| 白丝大胸美女操批内射视频| caopron在线成人免费| 久久久三级高清免费| 男人日女人鸡鸡天天视频官方| 日韩高清亚洲精品国产欧美| 狼人 成人 综合 亚洲| 色综合天天综合网天天狠天| 精品少妇在线观看视频| 一卡二卡成人久久精品| 制服乱伦强奸中文字幕| 婷婷色在线免费视频| 一区二区三区水蜜桃视频| 91中文日韩免费精品| 免费一级特黄特色大片88av| 亚洲欧美另类离制服丝袜| v888av精品少妇| 宝贝腿开大点我添添公漫画| 中文字幕丝袜人妻乱一区三区| 在线 国产区 视频| 中文字幕 av 在线| 欧洲老妇人一区二区三区| 亚洲国产伦理久久精品| 尹人香蕉综合网在线观看| 蜜桃视频app网站入口| 97se狠狠狠狠狼鲁亚洲综合色| 搞黄色的网站在线观看| 午夜精品婷婷午夜精品| 夜夜撸夜夜干夜夜操| beeg欧美丰满人妻| 亚洲精品视频在线蜜桃| 91精品在线观看视频| 亚洲欧美码免费观看视频 | 狠狠色丁香久久综合频道日韩| 三级视频欧美视频亚洲视频| 天天草天天日天天舔| 久久香蕉欧美日韩av蜜桃| 亚洲一二三区免费视频| 亚洲综合一区二区在线视频| 最近免费中文字幕日韩| 蜜桃人妻av2023| 亚洲最大av无码国产网址 | 国产 福利 一区二区| 精品亚洲永久免费精品网站| 国产视频在线观看一区二区极品| 免费可以看黄页的视频| 91精品丝袜久久久| 97视频免费公开在线播放| 美女被鸡操黄片入口| av黄片网站在线观看| 777精品久久久久久久| 在线视频 中文字幕 一区二区| 91精品国产人妻国产| 蜜桃人妻av2023| 91精品国语对白人妻刺激使劲| 一级av中文字幕在线观看| 亚洲欧美另类离制服丝袜| 中文字幕_第1页_绿茶av| 久久青草在线观看视频| 中文av字幕在线观看| 亚洲区欧美区自拍偷拍区 | 天天透天天插天天日| 男人天堂中文字幕av| 亚洲欧美三级在线观看视频| 五十六十日本老熟妇牲| 亚洲国产丰满熟女一区二区三区 | 蜜臀国产精品久久久久久| 一区二区性视频在线观看 | 亚洲精品视频在线蜜桃| 日韩妹子精品视频在线观看| 成人午夜福利视频镇东影视| 欧美日韩国产免费福利| 国语自产免费精品视频一区二区 | 青草神马视频在线网址| 男生殖器插女生殖器视频欧美| 视频一区二区在线观看视频| 亚洲va欧美va国产综合定档| 久久久三级高清免费| 国内在线精品视频在线观看| 石原莉奈一区二久久影视| 亚洲欧美综合一区二区三区四区| av在线免费一区二区| av精品一区二区三区免费观看| 久久97久久97免视看| www精品一区二区三区| 97香蕉在线17c| 精品人妻天天爽夜夜爽| 人妻少妇精品视频在线观看| 国产综合无码视频呢在线| 人妻 日韩 制服 中文 在线| 国产高清欧美日韩精品| 欧美 亚洲 国产 日韩一| 人妻熟女中文字幕电影| av色伊人久久综合一区二区 | 国产成年无码av片在线| 成人区人妻精品一区二区不卡蜜臀| 人妻天天爽夜夜爽2区蜜a∨| 精品99久久久久久久久| 97国产精品人人爽人人做| 国产手机av免费在线看片不卡| 三级大尺度无码视频| 蜜桃黄视频在线观看| 91久久人澡人妻天天做天天爽| 精品黑丝袜一区二区三区| 午夜小视频免费在线| 日韩毛片免费视频观看| 青青草视频在线观看播放影院免费 | 国产老女人av一区二区三区| 亚洲人妻一区二区三区久久精品| 少妇视频播放在线播放免费观看| 一区二区三区视频直播| 亚洲精品视频在线蜜桃| 在线看不卡日本av| 九色视频在线观看网址| 日韩精品久久日日躁夜夜躁| 亚洲va欧美va国产综合定档| 成人区人妻精品一区二区不卡蜜臀| 中国精品视频在线观看一区二区 | 天堂av在线一区少妇| 精品人妻一区二区三区18p | 台湾性dvd性色av| 中文字幕a区一区三区| 免费观看亚洲女同性恋一区二区| 国产一二三区在线播放| 国产免费自拍视频精选| 广州最大的成人免费视频| 男女啪啪视频免费国产| 污视频免费网站观看| 中文字幕乱码视频日本一区二区| 久久99国产精品久久99蜜月| 亚洲三级在线一区二区观看| 丰满熟妇人妻一区二区三区| 九色porny蝌蚪少妇| 国产精品自拍视频网站| 日韩黄色a影视在线免费观看网站| 精品久久久久久综合日本欧美| 国产精品久久久久久无码不卡| 中文字幕在线观看操穴视频| 日韩不卡免费一区二区三区视频| 97人妻人人爱人人澡人人爽| 日日躁夜夜躁狠狠躁av蜜臀| 日韩夫妻性生活视频在线观看免费| 九色91蝌蚪porn| 瑟瑟视频在线网站免费观看| 嗯嗯呐插进来嘛吸奶| 水蜜桃在线视频一区二区三区| 97se狠狠狠狠狼鲁亚洲综合色| 日韩精品网站免费观看ww| 欧美亚洲变态另类在线观看| 久久古典武侠第1页777| 美女穿白丝被啪啪到高潮| 黄色片在线免费观看日韩不卡| 日韩一二三区免费播放视频| 国产福利小视频在线免费观看 | 日本成人av在线免费看| 亚洲清纯国产com| 一区二区三区四区蜜桃在线| 亚洲人成网站在线播放| 女人的小鸡鸡真人免费视频 | 久久精品亚洲一区二区三| 伊人成人综合小说网| 蜜桃精品噜噜噜av| 紫川动漫在线观看免费完整版| 粗大挺进朋友人妻身体里国产| 国内人妻自拍视频在线| 欧美日韩精品免费看| 东京一区二区三区av在线| 国产在线av免费观看| 揉老熟女老熟妇aaa| 娇小型av优女大全| 一卡二卡成人久久精品| 91精品免费在线播放| 精品成人一区二区三区四区影视| 欧美精品日韩不卡免费| 亚洲国产精品久久久久秋霞1| 亚洲一区二区三区在线直播| 性色蜜月av一区二区三区| 亚洲精品在线免费观看视频| 人人爱精品人人艹人人干| 国产亚洲精品137片内射| 91免费在线播放视频| 国产精品视频综合一区二区| 男人操女人逼视频免费| 亚洲av丝袜诱惑在线| 老司机福利在线免费观看视频| 国产精品免费观看91| 一区二区三区四区无人区| 国产老头视频在线观看| 日韩高清亚洲精品国产欧美| 日本午夜色视频在线观看| 2019天天操天天日天天射| 亚洲最新欧美偷拍视频| 性美女毛片久久a区| 2019天天操天天日天天射| 激情黄色激情综合久久| 天堂av在线一区少妇| 爱妃视频av一区二区| 99999精品视频在线观看| 免费观看男人操逼的操女人的| 加勒比人妻av系列专区| 国产91色婷婷手机在线| 欧美日韩一区二区a∨视频| 日本超清有码在线观看| 亚洲久久久久久久久| 天天插天天舔天天日| 青草神马视频在线网址| 国产高清 国产av| 亚洲国产精品va在线观看香蕉| 国产成年女人在线观看| 久久精品乱码中文字幕| 四季av在线一区二区三区| 麻豆免费成人小视频| 国产97精品在线免费看| 自拍偷拍国产欧美精品| 中文字幕丰满人妻fsdss| 91极品尤物国产在线播放| 亚洲国产成人爱av网站| 日本成人av在线免费看| 中文字幕欧美人妻精品精品| 在线免费观看亚洲v| av大片免费观看网站| 免费看日本特黄特色| 538精品视频国产| 精品亚洲永久免费精品网站| 男女啪啪自拍露脸视频| 亚洲av永久无码精品尤物| 国产 精品 日韩 人妻| 人妻熟妇中文字幕免费视频| 弄爽新婚人妻第五部美妙人妻 | 操的少妇嗷嗷叫视频| 在线步兵一区二区三区| 青青草手机免费在线视频| 亚洲欧美清纯另类图片小说| 亚洲一区二区三区在线直播| 韩国美女主播福利在线| 精品国产精品国产免费| 夜夜撸夜夜干夜夜操| 亚洲av 综合一区| 8x8x国产在线观看一区二区| 女友97年白嫩漂亮在线看| 国产不卡剧情在线观看| 精品久久久中文字幕熟女| av男人天堂网在线观看| 99via精品福利影视| 日本丰满少妇毛茸茸| 中文字幕丰满人妻fsdss| 亚洲熟女资源一区二区| 午夜一分钟视频免费在线观看| 欧美 国产 一区二区三区| 视频一区二区在线观看视频| 97人妻少妇熟女av| 中文字幕丝袜人妻乱一区三区| 加勒比人妻av系列专区| 17夜人妻人人澡人妻| 日本久久久久久久久人妻视频| 亚洲一二三区免费视频| 可以在线观看的视频你懂的| 国产精品美女久久久久av精| 亚洲的国产中文字幕的av| 啪啪啪啪啪啪啪在线观看| 色偷偷欧美男人的天堂| 青青青久免费在线视频| 日本精品一区二区三区四区| 黑人中出日本人妻系列| 91九色porny蝌蚪主页| 成人av网站在线观看| 亚洲图片偷拍30pxxx| 亚洲欧美清纯另类图片小说| 国产精品久久久久久无码不卡 | 午夜无码精品一区二区三区| 可以免费直接观看的av| av资源最新版在线天堂| 精品国精品国自产在产国产 | 免费看亚洲av的网站| 人妻熟妇久久久久久xxx| 丰满的人妻免费在线观看| 青青草毛片在线观看| 国产日日夜夜精品视频免费| 天天草天天日天天舔| 人妻欲求不满作品番号| 插美女阴道流水视频| 啊啊啊啊在线视频观看| 欧美国产亚洲自拍偷拍| 免费一级特黄特色黄录像| 在线观看的a站视频| 亚洲经典国产一区二区三区| 色姑娘天天干天天操| 天天操日日干夜夜射| 人妻色噜噜噜噜一区二区| 欧美的一区二区三区| 被大鸡吧操骚B真爽视频| 一区二区啪视频在线观看| 欧美一区二区三不卡| 啪啪啪啪啪啪啪啪啪日本| 国产亚洲精品a77777| beeg欧美丰满人妻| 日本女人牲交的视频| 推荐国产福利一区二区三区| 日韩中文字幕色资源| 91精选一区二区三区四区| 国语自产免费精品视频一区二区| 午夜美女直播福利视频| 国产精品美女久久久久av精| 国产亚洲精品久久久久久电影| 丝袜美腿av一区二区| 手机在线一区二区三区| 漂亮人妻口爆深喉免费视频| 精品在线观看一区二区视频 | 深夜黄色福利网站在线观看| 欧美码一二三区线观看| 中文字幕超碰18区| 亚洲女人毛毛多毛耸耸| 日韩视频在线观看四区| 亚洲av乱码一区二区三区四区| 好吊一区二区三区视频| av在线免费一区二区| 色偷偷东京热男人的天堂| 中文字幕一区二区三区人妻| 91热精品视频在线播放| 美女穿白丝被啪啪到高潮| 日韩av专场一区二区 | 成人自拍在线观看视频| 熟妇人妻一区二区三区| 东京不太热在线观看视频| 99via精品福利影视| 欧美大屁股撅起来射精视频| 91日本av在线观看| 特黄特黄的日韩爽大片| 538精品视频国产| 97久久超碰成人精品网页91| 亚洲精品无码中文字幕专区| 日本熟艳妇A站黄色视频| 成年永久免费播放平台| 日本va欧美va国产综合va| 激情黄色激情综合久久| 蜜桃视频app网站入口| 人妻女教师的沦陷大明| 亚洲熟女乱色综合小说| 成人污视频在线免费观看网址| 免费网站黄色在线观看不卡 | 欧美日韩高清无毒不卡| 日韩在线网站一区二区三区 | 午夜动漫福利在线观看| 91精品丝袜久久久| 国产高清激情在线视频| 欧洲亚洲国产永久精品| 男人日女人鸡鸡天天视频官方| 亚国产亚洲亚洲精品视频| 亚洲av蜜臀在线观看| 69久久夜色精品国产69| av蜜臀免费在线观看| 亚洲中文字幕综合av一区| 2023天天色天天操| caoporn中文字幕视频| 视频免费在线观看网| 日韩精品视频啊啊啊| 五月天在线观看视频精品| 日本熟艳妇A站黄色视频| 日本最新区免费中文字幕| 精品人妻人人做人碰人人爽| 99久久国产亚洲精品| 国产91色婷婷手机在线| 国产精品国产自产拍在线| 免费一级特黄特色黄录像| 国产精品免费手机在线观看| 国产55夜色66夜色男人的天堂| 操的少妇嗷嗷叫视频| 美女扒开腿让男人桶网站| 天天操,天天射,天天日| 偷怕自拍在线免费观看| 天天草天天日天天舔| 亚洲人妻无吗中文字幕| 免费网站黄色在线观看不卡| 午夜小视频免费在线| 中文字幕99精品一区| 国内自拍偷拍视频第一页| 国产又粗又猛又大爽又黄香借| 色www亚洲国产张柏芝| 日韩中文av在线观看| 日韩午夜福利三级经典| 国产中文字幕88av| 五月天久草亚洲香蕉| 在线观看免费的黄色片| 强d乱码中文字幕熟女导航| 国产 精品 日韩 人妻| 女人的小鸡鸡真人免费视频| 男人天堂中文字幕av| 91九色免费在线观看| 亚洲制服丝袜日韩欧美制服| 一区二区在线欧美日韩中文| 日本一道免费一二三区| 欧美在线中文字幕第一页| av中文字幕巨乳人妻| 国产又粗又猛又大爽又黄香借 | 日本在线不卡视频播放| 97精品视频久久久久| 青青青在线视频免费观看手机版| 久久免费视频精品8| 久久久精品国产亚洲av水| 国产午夜精华视频在线| 成人专区禁18处网站| 邪恶老湿精品一区二区| 中文字幕乱码视频日本一区二区| 丰满老熟女av在线| av自拍偷拍一区二区| 午夜小视频免费在线| 日韩夫妻性生活视频在线观看免费 | av熟女40到50岁名字| 国产 精品 日韩 人妻| 三级大尺度无码视频| 欧美口爆吞精一区二区三区| 97视频免费公开在线播放| 九色91在线只有精品| 日韩精品在线观看直播 | 亚洲综合熟女久久30p| 天天干天天谢天天操| 床戏高潮呻吟声片段大全| 在线视频成人青青草久热 | 影音先锋婷婷五月青青草视频在线| 熟女视频一区二区在线观看| 国产人妖综合在线视频| 中文字幕亚洲天堂av在线| 人妻色噜噜噜噜一区二区| 日韩欧美免费看的惊悚片电影| 啪啪啪啪啪啪啪啪啪日本| 一级特黄夫妻生活大片| 蜜桃系列一区二区观看|