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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android桌面悬浮窗进阶,QQ手机管家小火箭效果实现

發布時間:2025/6/15 Android 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android桌面悬浮窗进阶,QQ手机管家小火箭效果实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這次我們將代碼的重點放在火箭升空的效果上,因此簡單起見,就直接在模仿360手機衛士懸浮窗的那份代碼的基礎上繼續開發了,如果你還沒有看過那篇文章的話,建議先去閱讀?Android桌面懸浮窗效果實現,仿360手機衛士懸浮窗效果?。

比起普通的桌面懸浮窗,現在我們需要在拖動懸浮窗的時候將懸浮窗變成一個小火箭,并且在屏幕的底部添加一個火箭發射臺。那么我們就從火箭發射臺開始編寫吧,首先創建launcher.xml作為火箭發射臺的布局文件,如下所示:

[html]?view plaincopy
  • <?xml?version="1.0"?encoding="UTF-8"?>??
  • <LinearLayout??
  • ????xmlns:android="http://schemas.android.com/apk/res/android"??
  • ????android:layout_width="wrap_content"??
  • ????android:layout_height="wrap_content"??
  • ????android:orientation="vertical"??
  • ????>??
  • ??????
  • ????<ImageView???
  • ????????android:id="@+id/launcher_img"??
  • ????????android:layout_width="200dp"??
  • ????????android:layout_height="88dp"??
  • ????????android:src="@drawable/launcher_bg_hold"??
  • ????????/>??
  • ??????
  • </LinearLayout>??
  • 可以看到,這里的ImageView是用于顯示當前火箭發射臺狀態的。我事先準備好了兩張圖片,一張是當小火箭未拖動到火箭發射臺時顯示的,一張是當小火箭拖動到火箭發射臺上時顯示的。

    接下來創建RocketLauncher類,作為火箭發射臺的View,代碼如下所示:

    [java] view plaincopy
  • public?class?RocketLauncher?extends?LinearLayout?{??
  • ??
  • ????/**?
  • ?????*?記錄火箭發射臺的寬度?
  • ?????*/??
  • ????public?static?int?width;??
  • ??
  • ????/**?
  • ?????*?記錄火箭發射臺的高度?
  • ?????*/??
  • ????public?static?int?height;??
  • ??
  • ????/**?
  • ?????*?火箭發射臺的背景圖片?
  • ?????*/??
  • ????private?ImageView?launcherImg;??
  • ??
  • ????public?RocketLauncher(Context?context)?{??
  • ????????super(context);??
  • ????????LayoutInflater.from(context).inflate(R.layout.launcher,?this);??
  • ????????launcherImg?=?(ImageView)?findViewById(R.id.launcher_img);??
  • ????????width?=?launcherImg.getLayoutParams().width;??
  • ????????height?=?launcherImg.getLayoutParams().height;??
  • ????}??
  • ??
  • ????/**?
  • ?????*?更新火箭發射臺的顯示狀態。如果小火箭被拖到火箭發射臺上,就顯示發射。?
  • ?????*/??
  • ????public?void?updateLauncherStatus(boolean?isReadyToLaunch)?{??
  • ????????if?(isReadyToLaunch)?{??
  • ????????????launcherImg.setImageResource(R.drawable.launcher_bg_fire);??
  • ????????}?else?{??
  • ????????????launcherImg.setImageResource(R.drawable.launcher_bg_hold);??
  • ????????}??
  • ????}??
  • ??
  • }??

  • RocketLauncher中的代碼還是非常簡單的,在構建方法中調用了LayoutInflater的inflate()方法來將launcher.xml這個布局文件加載進來,并獲取到了當前View的寬度和高度。在updateLauncherStatus()方法中會進行判斷,如果傳入的參數是true,就顯示小火箭即將發射的圖片,如果傳入的是false,就顯示將小火箭拖動到發射臺的圖片。

    新增的文件只有這兩個,剩下的就是要修改之前的代碼了。首先修改MyWindowManager中的代碼,如下所示:

    [java] view plaincopy
  • public?class?MyWindowManager?{??
  • ??
  • ????/**?
  • ?????*?小懸浮窗View的實例?
  • ?????*/??
  • ????private?static?FloatWindowSmallView?smallWindow;??
  • ??
  • ????/**?
  • ?????*?大懸浮窗View的實例?
  • ?????*/??
  • ????private?static?FloatWindowBigView?bigWindow;??
  • ??
  • ????/**?
  • ?????*?火箭發射臺的實例?
  • ?????*/??
  • ????private?static?RocketLauncher?rocketLauncher;??
  • ??
  • ????/**?
  • ?????*?小懸浮窗View的參數?
  • ?????*/??
  • ????private?static?LayoutParams?smallWindowParams;??
  • ??
  • ????/**?
  • ?????*?大懸浮窗View的參數?
  • ?????*/??
  • ????private?static?LayoutParams?bigWindowParams;??
  • ??
  • ????/**?
  • ?????*?火箭發射臺的參數?
  • ?????*/??
  • ????private?static?LayoutParams?launcherParams;??
  • ??
  • ????/**?
  • ?????*?用于控制在屏幕上添加或移除懸浮窗?
  • ?????*/??
  • ????private?static?WindowManager?mWindowManager;??
  • ??
  • ????/**?
  • ?????*?用于獲取手機可用內存?
  • ?????*/??
  • ????private?static?ActivityManager?mActivityManager;??
  • ??
  • ????/**?
  • ?????*?創建一個小懸浮窗。初始位置為屏幕的右部中間位置。?
  • ?????*/??
  • ????public?static?void?createSmallWindow(Context?context)?{??
  • ????????WindowManager?windowManager?=?getWindowManager(context);??
  • ????????int?screenWidth?=?windowManager.getDefaultDisplay().getWidth();??
  • ????????int?screenHeight?=?windowManager.getDefaultDisplay().getHeight();??
  • ????????if?(smallWindow?==?null)?{??
  • ????????????smallWindow?=?new?FloatWindowSmallView(context);??
  • ????????????if?(smallWindowParams?==?null)?{??
  • ????????????????smallWindowParams?=?new?LayoutParams();??
  • ????????????????smallWindowParams.type?=?LayoutParams.TYPE_SYSTEM_ALERT;??
  • ????????????????smallWindowParams.format?=?PixelFormat.RGBA_8888;??
  • ????????????????smallWindowParams.flags?=?LayoutParams.FLAG_NOT_TOUCH_MODAL??
  • ????????????????????????|?LayoutParams.FLAG_NOT_FOCUSABLE;??
  • ????????????????smallWindowParams.gravity?=?Gravity.LEFT?|?Gravity.TOP;??
  • ????????????????smallWindowParams.width?=?FloatWindowSmallView.windowViewWidth;??
  • ????????????????smallWindowParams.height?=?FloatWindowSmallView.windowViewHeight;??
  • ????????????????smallWindowParams.x?=?screenWidth;??
  • ????????????????smallWindowParams.y?=?screenHeight?/?2;??
  • ????????????}??
  • ????????????smallWindow.setParams(smallWindowParams);??
  • ????????????windowManager.addView(smallWindow,?smallWindowParams);??
  • ????????}??
  • ????}??
  • ??
  • ????/**?
  • ?????*?將小懸浮窗從屏幕上移除。?
  • ?????*/??
  • ????public?static?void?removeSmallWindow(Context?context)?{??
  • ????????if?(smallWindow?!=?null)?{??
  • ????????????WindowManager?windowManager?=?getWindowManager(context);??
  • ????????????windowManager.removeView(smallWindow);??
  • ????????????smallWindow?=?null;??
  • ????????}??
  • ????}??
  • ??
  • ????/**?
  • ?????*?創建一個大懸浮窗。位置為屏幕正中間。?
  • ?????*/??
  • ????public?static?void?createBigWindow(Context?context)?{??
  • ????????WindowManager?windowManager?=?getWindowManager(context);??
  • ????????int?screenWidth?=?windowManager.getDefaultDisplay().getWidth();??
  • ????????int?screenHeight?=?windowManager.getDefaultDisplay().getHeight();??
  • ????????if?(bigWindow?==?null)?{??
  • ????????????bigWindow?=?new?FloatWindowBigView(context);??
  • ????????????if?(bigWindowParams?==?null)?{??
  • ????????????????bigWindowParams?=?new?LayoutParams();??
  • ????????????????bigWindowParams.x?=?screenWidth?/?2??
  • ????????????????????????-?FloatWindowBigView.viewWidth?/?2;??
  • ????????????????bigWindowParams.y?=?screenHeight?/?2??
  • ????????????????????????-?FloatWindowBigView.viewHeight?/?2;??
  • ????????????????bigWindowParams.type?=?LayoutParams.TYPE_PHONE;??
  • ????????????????bigWindowParams.format?=?PixelFormat.RGBA_8888;??
  • ????????????????bigWindowParams.gravity?=?Gravity.LEFT?|?Gravity.TOP;??
  • ????????????????bigWindowParams.width?=?FloatWindowBigView.viewWidth;??
  • ????????????????bigWindowParams.height?=?FloatWindowBigView.viewHeight;??
  • ????????????}??
  • ????????????windowManager.addView(bigWindow,?bigWindowParams);??
  • ????????}??
  • ????}??
  • ??
  • ????/**?
  • ?????*?將大懸浮窗從屏幕上移除。?
  • ?????*/??
  • ????public?static?void?removeBigWindow(Context?context)?{??
  • ????????if?(bigWindow?!=?null)?{??
  • ????????????WindowManager?windowManager?=?getWindowManager(context);??
  • ????????????windowManager.removeView(bigWindow);??
  • ????????????bigWindow?=?null;??
  • ????????}??
  • ????}??
  • ??
  • ????/**?
  • ?????*?創建一個火箭發射臺,位置為屏幕底部。?
  • ?????*/??
  • ????public?static?void?createLauncher(Context?context)?{??
  • ????????WindowManager?windowManager?=?getWindowManager(context);??
  • ????????int?screenWidth?=?windowManager.getDefaultDisplay().getWidth();??
  • ????????int?screenHeight?=?windowManager.getDefaultDisplay().getHeight();??
  • ????????if?(rocketLauncher?==?null)?{??
  • ????????????rocketLauncher?=?new?RocketLauncher(context);??
  • ????????????if?(launcherParams?==?null)?{??
  • ????????????????launcherParams?=?new?LayoutParams();??
  • ????????????????launcherParams.x?=?screenWidth?/?2?-?RocketLauncher.width?/?2;??
  • ????????????????launcherParams.y?=?screenHeight?-?RocketLauncher.height;??
  • ????????????????launcherParams.type?=?LayoutParams.TYPE_PHONE;??
  • ????????????????launcherParams.format?=?PixelFormat.RGBA_8888;??
  • ????????????????launcherParams.gravity?=?Gravity.LEFT?|?Gravity.TOP;??
  • ????????????????launcherParams.width?=?RocketLauncher.width;??
  • ????????????????launcherParams.height?=?RocketLauncher.height;??
  • ????????????}??
  • ????????????windowManager.addView(rocketLauncher,?launcherParams);??
  • ????????}??
  • ????}??
  • ??
  • ????/**?
  • ?????*?將火箭發射臺從屏幕上移除。?
  • ?????*/??
  • ????public?static?void?removeLauncher(Context?context)?{??
  • ????????if?(rocketLauncher?!=?null)?{??
  • ????????????WindowManager?windowManager?=?getWindowManager(context);??
  • ????????????windowManager.removeView(rocketLauncher);??
  • ????????????rocketLauncher?=?null;??
  • ????????}??
  • ????}??
  • ??
  • ????/**?
  • ?????*?更新火箭發射臺的顯示狀態。?
  • ?????*/??
  • ????public?static?void?updateLauncher()?{??
  • ????????if?(rocketLauncher?!=?null)?{??
  • ????????????rocketLauncher.updateLauncherStatus(isReadyToLaunch());??
  • ????????}??
  • ????}??
  • ??
  • ????/**?
  • ?????*?更新小懸浮窗的TextView上的數據,顯示內存使用的百分比。?
  • ?????*??
  • ?????*?@param?context?
  • ?????*????????????可傳入應用程序上下文。?
  • ?????*/??
  • ????public?static?void?updateUsedPercent(Context?context)?{??
  • ????????if?(smallWindow?!=?null)?{??
  • ????????????TextView?percentView?=?(TextView)?smallWindow??
  • ????????????????????.findViewById(R.id.percent);??
  • ????????????percentView.setText(getUsedPercentValue(context));??
  • ????????}??
  • ????}??
  • ??
  • ????/**?
  • ?????*?是否有懸浮窗(包括小懸浮窗和大懸浮窗)顯示在屏幕上。?
  • ?????*??
  • ?????*?@return?有懸浮窗顯示在桌面上返回true,沒有的話返回false。?
  • ?????*/??
  • ????public?static?boolean?isWindowShowing()?{??
  • ????????return?smallWindow?!=?null?||?bigWindow?!=?null;??
  • ????}??
  • ??
  • ????/**?
  • ?????*?判斷小火箭是否準備好發射了。?
  • ?????*??
  • ?????*?@return?當火箭被發到發射臺上返回true,否則返回false。?
  • ?????*/??
  • ????public?static?boolean?isReadyToLaunch()?{??
  • ????????if?((smallWindowParams.x?>?launcherParams.x?&&?smallWindowParams.x??
  • ????????????????+?smallWindowParams.width?<?launcherParams.x??
  • ????????????????+?launcherParams.width)??
  • ????????????????&&?(smallWindowParams.y?+?smallWindowParams.height?>?launcherParams.y))?{??
  • ????????????return?true;??
  • ????????}??
  • ????????return?false;??
  • ????}??
  • ??
  • ????/**?
  • ?????*?如果WindowManager還未創建,則創建一個新的WindowManager返回。否則返回當前已創建的WindowManager。?
  • ?????*??
  • ?????*?@param?context?
  • ?????*????????????必須為應用程序的Context.?
  • ?????*?@return?WindowManager的實例,用于控制在屏幕上添加或移除懸浮窗。?
  • ?????*/??
  • ????private?static?WindowManager?getWindowManager(Context?context)?{??
  • ????????if?(mWindowManager?==?null)?{??
  • ????????????mWindowManager?=?(WindowManager)?context??
  • ????????????????????.getSystemService(Context.WINDOW_SERVICE);??
  • ????????}??
  • ????????return?mWindowManager;??
  • ????}??
  • ??
  • ????/**?
  • ?????*?如果ActivityManager還未創建,則創建一個新的ActivityManager返回。否則返回當前已創建的ActivityManager。?
  • ?????*??
  • ?????*?@param?context?
  • ?????*????????????可傳入應用程序上下文。?
  • ?????*?@return?ActivityManager的實例,用于獲取手機可用內存。?
  • ?????*/??
  • ????private?static?ActivityManager?getActivityManager(Context?context)?{??
  • ????????if?(mActivityManager?==?null)?{??
  • ????????????mActivityManager?=?(ActivityManager)?context??
  • ????????????????????.getSystemService(Context.ACTIVITY_SERVICE);??
  • ????????}??
  • ????????return?mActivityManager;??
  • ????}??
  • ??
  • ????/**?
  • ?????*?計算已使用內存的百分比,并返回。?
  • ?????*??
  • ?????*?@param?context?
  • ?????*????????????可傳入應用程序上下文。?
  • ?????*?@return?已使用內存的百分比,以字符串形式返回。?
  • ?????*/??
  • ????public?static?String?getUsedPercentValue(Context?context)?{??
  • ????????String?dir?=?"/proc/meminfo";??
  • ????????try?{??
  • ????????????FileReader?fr?=?new?FileReader(dir);??
  • ????????????BufferedReader?br?=?new?BufferedReader(fr,?2048);??
  • ????????????String?memoryLine?=?br.readLine();??
  • ????????????String?subMemoryLine?=?memoryLine.substring(memoryLine??
  • ????????????????????.indexOf("MemTotal:"));??
  • ????????????br.close();??
  • ????????????long?totalMemorySize?=?Integer.parseInt(subMemoryLine.replaceAll(??
  • ????????????????????"\\D+",?""));??
  • ????????????long?availableSize?=?getAvailableMemory(context)?/?1024;??
  • ????????????int?percent?=?(int)?((totalMemorySize?-?availableSize)??
  • ????????????????????/?(float)?totalMemorySize?*?100);??
  • ????????????return?percent?+?"%";??
  • ????????}?catch?(IOException?e)?{??
  • ????????????e.printStackTrace();??
  • ????????}??
  • ????????return?"懸浮窗";??
  • ????}??
  • ??
  • ????/**?
  • ?????*?獲取當前可用內存,返回數據以字節為單位。?
  • ?????*??
  • ?????*?@param?context?
  • ?????*????????????可傳入應用程序上下文。?
  • ?????*?@return?當前可用內存。?
  • ?????*/??
  • ????private?static?long?getAvailableMemory(Context?context)?{??
  • ????????ActivityManager.MemoryInfo?mi?=?new?ActivityManager.MemoryInfo();??
  • ????????getActivityManager(context).getMemoryInfo(mi);??
  • ????????return?mi.availMem;??
  • ????}??
  • ??
  • }??

  • MyWindowManager是所有桌面懸浮窗的管理器,這里我們主要添加了createLauncher()、removeLauncher()和updateLauncher()這幾個方法,分別用于創建、移除、以及更新火箭發射臺懸浮窗。另外還添加了isReadyToLaunch()這個方法,它是用于判斷小火箭是否已經拖動到火箭發射臺上了。判斷的方式當然也很簡單,只需要對小火箭的邊界和火箭發射臺的邊界進行檢測,判斷它們是否相交就行了。

    接下來還需要修改FloatWindowSmallView中的代碼,當手指拖動懸浮窗的時候要將它變成小火箭,如下所示:

    [java] view plaincopy
  • public?class?FloatWindowSmallView?extends?LinearLayout?{??
  • ??
  • ????/**?
  • ?????*?記錄小懸浮窗的寬度?
  • ?????*/??
  • ????public?static?int?windowViewWidth;??
  • ??
  • ????/**?
  • ?????*?記錄小懸浮窗的高度?
  • ?????*/??
  • ????public?static?int?windowViewHeight;??
  • ??
  • ????/**?
  • ?????*?記錄系統狀態欄的高度?
  • ?????*/??
  • ????private?static?int?statusBarHeight;??
  • ??
  • ????/**?
  • ?????*?用于更新小懸浮窗的位置?
  • ?????*/??
  • ????private?WindowManager?windowManager;??
  • ??
  • ????/**?
  • ?????*?小懸浮窗的布局?
  • ?????*/??
  • ????private?LinearLayout?smallWindowLayout;??
  • ??
  • ????/**?
  • ?????*?小火箭控件?
  • ?????*/??
  • ????private?ImageView?rocketImg;??
  • ??
  • ????/**?
  • ?????*?小懸浮窗的參數?
  • ?????*/??
  • ????private?WindowManager.LayoutParams?mParams;??
  • ??
  • ????/**?
  • ?????*?記錄當前手指位置在屏幕上的橫坐標值?
  • ?????*/??
  • ????private?float?xInScreen;??
  • ??
  • ????/**?
  • ?????*?記錄當前手指位置在屏幕上的縱坐標值?
  • ?????*/??
  • ????private?float?yInScreen;??
  • ??
  • ????/**?
  • ?????*?記錄手指按下時在屏幕上的橫坐標的值?
  • ?????*/??
  • ????private?float?xDownInScreen;??
  • ??
  • ????/**?
  • ?????*?記錄手指按下時在屏幕上的縱坐標的值?
  • ?????*/??
  • ????private?float?yDownInScreen;??
  • ??
  • ????/**?
  • ?????*?記錄手指按下時在小懸浮窗的View上的橫坐標的值?
  • ?????*/??
  • ????private?float?xInView;??
  • ??
  • ????/**?
  • ?????*?記錄手指按下時在小懸浮窗的View上的縱坐標的值?
  • ?????*/??
  • ????private?float?yInView;??
  • ??
  • ????/**?
  • ?????*?記錄小火箭的寬度?
  • ?????*/??
  • ????private?int?rocketWidth;??
  • ??
  • ????/**?
  • ?????*?記錄小火箭的高度?
  • ?????*/??
  • ????private?int?rocketHeight;??
  • ??
  • ????/**?
  • ?????*?記錄當前手指是否按下?
  • ?????*/??
  • ????private?boolean?isPressed;??
  • ??
  • ????public?FloatWindowSmallView(Context?context)?{??
  • ????????super(context);??
  • ????????windowManager?=?(WindowManager)?context??
  • ????????????????.getSystemService(Context.WINDOW_SERVICE);??
  • ????????LayoutInflater.from(context).inflate(R.layout.float_window_small,?this);??
  • ????????smallWindowLayout?=?(LinearLayout)?findViewById(R.id.small_window_layout);??
  • ????????windowViewWidth?=?smallWindowLayout.getLayoutParams().width;??
  • ????????windowViewHeight?=?smallWindowLayout.getLayoutParams().height;??
  • ????????rocketImg?=?(ImageView)?findViewById(R.id.rocket_img);??
  • ????????rocketWidth?=?rocketImg.getLayoutParams().width;??
  • ????????rocketHeight?=?rocketImg.getLayoutParams().height;??
  • ????????TextView?percentView?=?(TextView)?findViewById(R.id.percent);??
  • ????????percentView.setText(MyWindowManager.getUsedPercentValue(context));??
  • ????}??
  • ??
  • ????@Override??
  • ????public?boolean?onTouchEvent(MotionEvent?event)?{??
  • ????????switch?(event.getAction())?{??
  • ????????case?MotionEvent.ACTION_DOWN:??
  • ????????????isPressed?=?true;??
  • ????????????//?手指按下時記錄必要數據,縱坐標的值都需要減去狀態欄高度??
  • ????????????xInView?=?event.getX();??
  • ????????????yInView?=?event.getY();??
  • ????????????xDownInScreen?=?event.getRawX();??
  • ????????????yDownInScreen?=?event.getRawY()?-?getStatusBarHeight();??
  • ????????????xInScreen?=?event.getRawX();??
  • ????????????yInScreen?=?event.getRawY()?-?getStatusBarHeight();??
  • ????????????break;??
  • ????????case?MotionEvent.ACTION_MOVE:??
  • ????????????xInScreen?=?event.getRawX();??
  • ????????????yInScreen?=?event.getRawY()?-?getStatusBarHeight();??
  • ????????????//?手指移動的時候更新小懸浮窗的狀態和位置??
  • ????????????updateViewStatus();??
  • ????????????updateViewPosition();??
  • ????????????break;??
  • ????????case?MotionEvent.ACTION_UP:??
  • ????????????isPressed?=?false;??
  • ????????????if?(MyWindowManager.isReadyToLaunch())?{??
  • ????????????????launchRocket();??
  • ????????????}?else?{??
  • ????????????????updateViewStatus();??
  • ????????????????//?如果手指離開屏幕時,xDownInScreen和xInScreen相等,且yDownInScreen和yInScreen相等,則視為觸發了單擊事件。??
  • ????????????????if?(xDownInScreen?==?xInScreen?&&?yDownInScreen?==?yInScreen)?{??
  • ????????????????????openBigWindow();??
  • ????????????????}??
  • ????????????}??
  • ????????????break;??
  • ????????default:??
  • ????????????break;??
  • ????????}??
  • ????????return?true;??
  • ????}??
  • ??
  • ????/**?
  • ?????*?將小懸浮窗的參數傳入,用于更新小懸浮窗的位置。?
  • ?????*??
  • ?????*?@param?params?
  • ?????*????????????小懸浮窗的參數?
  • ?????*/??
  • ????public?void?setParams(WindowManager.LayoutParams?params)?{??
  • ????????mParams?=?params;??
  • ????}??
  • ??
  • ????/**?
  • ?????*?用于發射小火箭。?
  • ?????*/??
  • ????private?void?launchRocket()?{??
  • ????????MyWindowManager.removeLauncher(getContext());??
  • ????????new?LaunchTask().execute();??
  • ????}??
  • ??
  • ????/**?
  • ?????*?更新小懸浮窗在屏幕中的位置。?
  • ?????*/??
  • ????private?void?updateViewPosition()?{??
  • ????????mParams.x?=?(int)?(xInScreen?-?xInView);??
  • ????????mParams.y?=?(int)?(yInScreen?-?yInView);??
  • ????????windowManager.updateViewLayout(this,?mParams);??
  • ????????MyWindowManager.updateLauncher();??
  • ????}??
  • ??
  • ????/**?
  • ?????*?更新View的顯示狀態,判斷是顯示懸浮窗還是小火箭。?
  • ?????*/??
  • ????private?void?updateViewStatus()?{??
  • ????????if?(isPressed?&&?rocketImg.getVisibility()?!=?View.VISIBLE)?{??
  • ????????????mParams.width?=?rocketWidth;??
  • ????????????mParams.height?=?rocketHeight;??
  • ????????????windowManager.updateViewLayout(this,?mParams);??
  • ????????????smallWindowLayout.setVisibility(View.GONE);??
  • ????????????rocketImg.setVisibility(View.VISIBLE);??
  • ????????????MyWindowManager.createLauncher(getContext());??
  • ????????}?else?if?(!isPressed)?{??
  • ????????????mParams.width?=?windowViewWidth;??
  • ????????????mParams.height?=?windowViewHeight;??
  • ????????????windowManager.updateViewLayout(this,?mParams);??
  • ????????????smallWindowLayout.setVisibility(View.VISIBLE);??
  • ????????????rocketImg.setVisibility(View.GONE);??
  • ????????????MyWindowManager.removeLauncher(getContext());??
  • ????????}??
  • ????}??
  • ??
  • ????/**?
  • ?????*?打開大懸浮窗,同時關閉小懸浮窗。?
  • ?????*/??
  • ????private?void?openBigWindow()?{??
  • ????????MyWindowManager.createBigWindow(getContext());??
  • ????????MyWindowManager.removeSmallWindow(getContext());??
  • ????}??
  • ??
  • ????/**?
  • ?????*?用于獲取狀態欄的高度。?
  • ?????*??
  • ?????*?@return?返回狀態欄高度的像素值。?
  • ?????*/??
  • ????private?int?getStatusBarHeight()?{??
  • ????????if?(statusBarHeight?==?0)?{??
  • ????????????try?{??
  • ????????????????Class<?>?c?=?Class.forName("com.android.internal.R$dimen");??
  • ????????????????Object?o?=?c.newInstance();??
  • ????????????????Field?field?=?c.getField("status_bar_height");??
  • ????????????????int?x?=?(Integer)?field.get(o);??
  • ????????????????statusBarHeight?=?getResources().getDimensionPixelSize(x);??
  • ????????????}?catch?(Exception?e)?{??
  • ????????????????e.printStackTrace();??
  • ????????????}??
  • ????????}??
  • ????????return?statusBarHeight;??
  • ????}??
  • ??
  • ????/**?
  • ?????*?開始執行發射小火箭的任務。?
  • ?????*??
  • ?????*?@author?guolin?
  • ?????*/??
  • ????class?LaunchTask?extends?AsyncTask<Void,?Void,?Void>?{??
  • ??
  • ????????@Override??
  • ????????protected?Void?doInBackground(Void...?params)?{??
  • ????????????//?在這里對小火箭的位置進行改變,從而產生火箭升空的效果??
  • ????????????while?(mParams.y?>?0)?{??
  • ????????????????mParams.y?=?mParams.y?-?10;??
  • ????????????????publishProgress();??
  • ????????????????try?{??
  • ????????????????????Thread.sleep(8);??
  • ????????????????}?catch?(InterruptedException?e)?{??
  • ????????????????????e.printStackTrace();??
  • ????????????????}??
  • ????????????}??
  • ????????????return?null;??
  • ????????}??
  • ??
  • ????????@Override??
  • ????????protected?void?onProgressUpdate(Void...?values)?{??
  • ????????????windowManager.updateViewLayout(FloatWindowSmallView.this,?mParams);??
  • ????????}??
  • ??
  • ????????@Override??
  • ????????protected?void?onPostExecute(Void?result)?{??
  • ????????????//?火箭升空結束后,回歸到懸浮窗狀態??
  • ????????????updateViewStatus();??
  • ????????????mParams.x?=?(int)?(xDownInScreen?-?xInView);??
  • ????????????mParams.y?=?(int)?(yDownInScreen?-?yInView);??
  • ????????????windowManager.updateViewLayout(FloatWindowSmallView.this,?mParams);??
  • ????????}??
  • ??
  • ????}??
  • ??
  • }??

  • 這里在代碼中添加了一個isPressed標識位,用于判斷用戶是否正在拖動懸浮窗。當拖動的時候就調用updateViewStatus()方法來更新懸浮窗的顯示狀態,這時懸浮窗就會變成一個小火箭。然后當手指離開屏幕的時候,也會調用updateViewStatus()方法,這時發現isPressed為false,就會將懸浮窗重新顯示出來。

    同時,當手指離開屏幕的時候,還會調用MyWindowManager的isReadyToLaunch()方法來判斷小火箭是否被拖動到火箭發射臺上了,如果為true,就會觸發火箭升空的動畫效果。火箭升空的動畫實現是寫在LaunchTask這個任務里的,可以看到,這里會在doInBackground()方法中執行耗時邏輯,將小火箭的縱坐標不斷減小,以讓它實現上升的效果。當縱坐標減小到0的時候,火箭升空的動畫就結束了,然后在onPostExecute()方法中重新將懸浮窗顯示出來。

    另外,在AndroidManifest.xml文件中記得要聲明兩個權限,如下所示:

    [html]?view plaincopy
  • <uses-permission?android:name="android.permission.SYSTEM_ALERT_WINDOW"?/>??
  • <uses-permission?android:name="android.permission.GET_TASKS"?/>??
  • 代碼就只有這么多,接下來我們運行一下看看效果吧。在主界面點擊Start Float Window按鈕可以開啟懸浮窗并回到桌面,然后拖動懸浮窗后就會變成小火箭的狀態,將它拖動到屏幕底部火箭發射臺上,然后放手,小火箭就會騰空而起了,如下圖所示:

    下載:http://download.csdn.net/detail/sinyu890807/6786059

    總結

    以上是生活随笔為你收集整理的Android桌面悬浮窗进阶,QQ手机管家小火箭效果实现的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    亚洲精品久久激情国产片 | 黄色特级一级片 | 韩国一区在线 | 久久国产精品偷 | 91系列在线观看 | 中文一区二区三区在线观看 | 欧美日韩电影在线播放 | 精品九九九九 | www.久久99 | 国产一区av在线 | 成人中文字幕在线 | 美女视频黄频 | 日本精品在线 | 狠狠色丁香婷婷综合久小说久 | 日韩电影中文 | 国产亚洲精品久久久久动 | 91自拍成人| 日韩动态视频 | 久久免费播放 | 精品特级毛片 | 国产高清99| 午夜精品一区二区三区四区 | 在线免费观看麻豆视频 | www.五月婷婷| 人人干狠狠干 | 国产在线观看午夜 | 一区二区三区在线免费观看 | 国内精品在线观看视频 | 久久综合久久综合久久综合 | 亚洲成人av一区二区 | 婷婷丁香色 | 91九色成人| 亚洲精品久久在线 | av不卡免费在线观看 | 国产一区二区精 | 日韩精品首页 | 美国人与动物xxxx | 日韩高清不卡在线 | 国产精品久久艹 | 亚洲第二色| 免费h视频 | 国内精品毛片 | 91成人精品 | 久久综合九色综合久久久精品综合 | 天天操天天色天天射 | 超碰在线人人爱 | 三级黄免费看 | 日韩大陆欧美高清视频区 | 色婷婷欧美 | 欧美日韩性生活 | 天天做天天干 | 少妇视频在线播放 | 97超级碰碰| 国产福利久久 | 久久久人 | 欧美二区在线播放 | 在线成人免费 | 久久亚洲欧美日韩精品专区 | 亚洲精品免费在线播放 | 久久9精品 | 午夜少妇 | 亚洲精品久久久久久国 | 人人舔人人爱 | 欧美激情另类 | 国语对白少妇爽91 | 久久久久女人精品毛片九一 | 在线成人欧美 | 日韩在线观看高清 | 综合色婷婷 | 成人夜晚看av | 网址你懂的在线观看 | 日韩欧美精品在线观看视频 | 99精品视频精品精品视频 | 日批视频在线播放 | 中文伊人 | 蜜臀av麻豆| 91精品国产91热久久久做人人 | 欧美日韩精品免费观看 | 久青草视频 | 最近2019好看的中文字幕免费 | 亚洲另类在线视频 | 久久久久久久久久久福利 | 人人干在线| 亚洲黄色片 | www四虎影院| 麻豆精品国产传媒 | 成人黄大片 | 精品国产一区二区三区久久久蜜臀 | 久久久久国产一区二区三区四区 | 国产精品美女视频 | 国产呻吟在线 | 亚洲h视频在线 | 欧美成人播放 | 色综合久久88色综合天天6 | 亚洲不卡av一区二区三区 | 国产黄色在线看 | 亚洲黄色激情小说 | 2024国产精品视频 | 日韩高清成人 | 激情综合网五月激情 | 69绿帽绿奴3pvideos | 高清av影院 | 久久精品9 | 一二三精品视频 | 久久国产一二区 | 黄网av在线 | 日韩欧美精品在线观看视频 | 99久久精品无免国产免费 | 久久综合精品国产一区二区三区 | 韩日电影在线 | 超碰在线98| 日韩有码中文字幕在线 | 六月丁香婷婷网 | 亚洲午夜精品一区 | 99久久夜色精品国产亚洲 | 樱空桃av| 久久99精品久久久久婷婷 | 免费看三级 | 久久国产精品99久久久久久老狼 | 欧美美女视频在线观看 | 国产成人高清在线 | 毛片在线播放网址 | 亚洲aⅴ乱码精品成人区 | 免费观看性生交大片3 | 久久精品欧美日韩精品 | 天天做天天爱夜夜爽 | 91视频 - x99av | 免费看91的网站 | 久久五月天色综合 | 婷婷色5月 | 91精品欧美一区二区三区 | 久青草影院| 97成人精品视频在线观看 | 深夜免费福利网站 | 日韩国产精品久久久久久亚洲 | 久久99国产精品自在自在app | 中文字幕丝袜一区二区 | 国内精品久久久久久久 | 国产欧美精品xxxx另类 | 国产精品一区二区av | 91在线91拍拍在线91 | 综合天堂av久久久久久久 | 国产福利网站 | 久久国产精品一区二区三区四区 | 黄p网站在线观看 | 热久久免费视频精品 | 97国产情侣爱久久免费观看 | 三上悠亚在线免费 | 日韩在线观看一区二区 | 国产精品无av码在线观看 | 国产不卡在线播放 | 成人免费视频免费观看 | 一区二区三区久久 | 国产精品久久久久av福利动漫 | 日韩电影一区二区在线观看 | 日韩在线播放av | 中文字幕免费高清av | 亚洲欧洲久久久 | 国产精品久久久久久久久久久久午夜片 | 欧美一级片免费 | 精品欧美日韩 | 久久久亚洲麻豆日韩精品一区三区 | 四虎在线观看视频 | 亚洲女人av | 国产资源av| 久久久久久久久久久久久久av | 国产精品久久久久久高潮 | 国产性xxxx | 人人藻人人澡人人爽 | 99久久精品国产一区二区三区 | 国内揄拍国产精品 | av福利超碰网站 | 天天天天天天操 | 人人舔人人干 | 免费看的黄色录像 | 色视频在线免费 | 国产精品美女久久久久久久久 | 国产一区二区在线看 | 国产精品99久久久精品 | 久久综合五月天婷婷伊人 | 国产拍揄自揄精品视频麻豆 | 香蕉视频免费看 | 日本精品视频在线观看 | 色av男人的天堂免费在线 | 中文字幕国产精品 | 久久情侣偷拍 | 91精品久久久久久久久久入口 | 在线观看视频 | 亚洲五月综合 | 日本久久免费视频 | 国产美女精品视频 | 国产精品一区二区无线 | avhd高清在线谜片 | 日韩免费 | 99色资源 | 久久国产成人午夜av影院宅 | 黄色影院在线免费观看 | 亚洲一区二区三区精品在线观看 | 色综合中文综合网 | 97免费视频在线 | 超碰97在线资源站 | 久久免费一级片 | 玖玖玖影院 | 国产免费国产 | 超碰个人在线 | 久久久精品一区二区 | 四虎影视8848aamm | 久久久久国产精品免费网站 | 成人久久18免费网站图片 | 亚洲激情视频在线 | 亚洲欧美日韩一二三区 | 天天骚夜夜操 | 国产精品国内免费一区二区三区 | 不卡的av在线 | 日韩在线观看视频中文字幕 | 91毛片在线| 亚洲精品国产欧美在线观看 | 国产精品久久久久久久久久久久冷 | 国产精品久久久久久久毛片 | 久久久99精品免费观看app | 91麻豆精品国产 | 夜色资源站国产www在线视频 | 在线日韩一区 | 国产精品久久久久久五月尺 | 亚洲综合狠狠干 | 国产69久久精品成人看 | 国产香蕉在线 | 人人看人人草 | 美女视频黄,久久 | 国产高清免费视频 | 亚洲国产精品成人综合 | 精品国产伦一区二区三区观看说明 | 日韩视频1| 青青草国产精品 | www.色五月 | 久久男人视频 | 午夜美女av | 中文字幕永久免费 | 国产精品久久久免费看 | 国产精品手机在线观看 | 久久国产视频网 | 午夜免费久久看 | 欧美一级黄大片 | 亚州精品视频 | 亚洲男模gay裸体gay | 久久深夜福利免费观看 | 天天摸天天舔天天操 | 久草久草视频 | 国产录像在线观看 | 国产中文字幕一区二区三区 | 亚洲成人免费观看 | 亚洲一区二区三区四区在线视频 | 在线视频91 | 日本三级中文字幕在线观看 | 欧美大香线蕉线伊人久久 | 日韩精品黄 | 久草影视在线 | 亚洲春色综合另类校园电影 | 日韩欧美电影网 | 黄色av三级在线 | 亚洲春色综合另类校园电影 | 久久久久久久久影视 | 欧美aⅴ在线观看 | 91精品免费在线视频 | 日本在线观看视频一区 | 青青久草在线视频 | 精品久久久久久综合日本 | 亚洲成人黄色av | 超碰99在线 | 成人a视频 | 亚洲黄色av网址 | 黄色一区二区在线观看 | 久久精品视频99 | 在线色资源 | 亚洲人xxx | 成人永久免费 | 午夜在线免费观看 | 九九免费在线视频 | 久草视频中文 | 天天艹天天干天天 | 欧美一级久久久 | 免费在线观看一级片 | 国产一区电影在线观看 | 精品国产一区二区三区久久久 | 亚洲砖区区免费 | 日本精品一区二区三区在线观看 | 精品一区二区三区四区在线 | 91看片在线播放 | 狠狠色噜噜狠狠狠狠 | 午夜久久福利 | 成人午夜精品久久久久久久3d | 国产美女免费观看 | 国产小视频精品 | 国产美女免费观看 | 国产99久久精品一区二区永久免费 | 综合久久影院 | 免费看三片 | 日韩精品视频在线观看网址 | 欧美9999| 日本特黄一级 | 69精品在线观看 | 欧美aa一级片 | 韩国av免费 | 在线 国产一区 | 亚洲v欧美v国产v在线观看 | 国产 日韩 中文字幕 | 深爱激情站 | 成人免费观看视频大全 | 天天操天天操天天操 | 精品久久久久一区二区国产 | 国产精品久久久久久一区二区 | 亚洲天天 | 婷婷精品在线视频 | 国产精品久久久久婷婷 | 亚洲涩涩网 | 精品国精品自拍自在线 | 日本一区二区免费在线观看 | 中文字幕第 | 97电影网手机版 | 午夜av一区二区三区 | 黄色成人毛片 | 91九色视频观看 | 欧洲在线免费视频 | 国内精品久久久久久久影视麻豆 | 99在线高清视频在线播放 | 精品国产伦一区二区三区观看方式 | 日韩毛片在线免费观看 | 国产精品久久一区二区三区不卡 | 欧美一区成人 | 奇米7777狠狠狠琪琪视频 | 激情av资源| 久久久久久久精 | 久久久久久免费毛片精品 | 91尤物国产尤物福利在线播放 | 日韩av一区二区在线影视 | 久久这里只有精品首页 | 国产在线探花 | 国产精品免费在线 | 色婷婷视频在线观看 | 免费热情视频 | 91丨九色丨蝌蚪丰满 | 中国一级特黄毛片大片久久 | 欧美精品免费一区二区 | 国产九色在线播放九色 | 婷婷电影在线观看 | 中文字幕刺激在线 | 99精彩视频在线观看免费 | 日韩免费一级电影 | 91九色蝌蚪视频在线 | 天天干天天干天天干天天干天天干天天干 | 亚洲精品动漫成人3d无尽在线 | 在线色亚洲 | 精品久久久成人 | 在线免费观看黄色小说 | 国内少妇自拍视频一区 | 免费精品在线观看 | 日韩va欧美va亚洲va久久 | 区一区二区三在线观看 | 天天操天天曰 | 人人干人人艹 | 97免费视频在线 | 国产在线观看你懂得 | 成年人精品 | 免费91麻豆精品国产自产在线观看 | 在线直播av | 99久久精品国产毛片 | av国产网站 | 欧美精品在线免费 | 韩日三级av | 欧美日韩在线免费观看 | 亚洲综合色视频 | 精品福利av | 亚洲视频免费在线看 | 亚洲精品日韩一区二区电影 | av激情五月 | 在线小视频国产 | 国产色视频一区二区三区qq号 | 国产精品一区欧美 | 欧美一二三区在线观看 | 久久久久www | 久久精彩 | 日韩一片| av免费网站 | 视频在线观看入口黄最新永久免费国产 | 最近字幕在线观看第一季 | 成人a级免费视频 | 久久视频在线观看中文字幕 | 亚洲欧美日韩精品久久奇米一区 | 最近高清中文在线字幕在线观看 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 国产涩涩网站 | 高潮久久久久久久久 | 久久久免费观看完整版 | 国产精品久久久久久久久免费看 | 国产福利av在线 | 国产精品午夜av | 日韩在线电影一区 | 伊人天天干 | 激情网综合 | 久久精品99国产精品 | 久久视精品 | 久久噜噜少妇网站 | 免费在线精品视频 | 中文字幕在线观看1 | 欧洲精品码一区二区三区免费看 | 久久国产精品99久久久久 | 国产精品系列在线观看 | 色婷婷丁香 | 国产精品中文字幕av | 国产成人精品一区二区 | 五月天伊人 | 日韩精品久久中文字幕 | 99精品视频一区二区 | 91九色蝌蚪国产 | 久久99精品国产99久久6尤 | 岛国片在线| 激情视频免费在线观看 | 香蕉97视频观看在线观看 | 欧洲精品久久久久毛片完整版 | 成片免费观看视频大全 | 欧美一级欧美一级 | 午夜91在线 | 免费情趣视频 | 日韩免费观看高清 | 黄色毛片一级片 | 日韩成人av在线 | 亚洲精品美女久久17c | 五月婷婷一区二区三区 | 精品视频123区在线观看 | 91电影福利 | 99色亚洲 | 欧美一级黄色网 | 久久精品99精品国产香蕉 | 欧美片一区二区三区 | 久久久久免费精品国产小说色大师 | 深夜免费网站 | 国产99久久久欧美黑人 | 成年人免费电影 | 91精品久久久久久粉嫩 | 夜色成人av| 五月婷婷伊人网 | 久久国产精品免费一区二区三区 | 中文字幕在线观看免费 | av中文在线观看 | www.97视频| 成人在线观看资源 | 成人中文字幕+乱码+中文字幕 | 超碰在线免费97 | 国产精品一区二区免费视频 | 九九视频网 | 九九九热 | 国产免费亚洲高清 | 91精品国产综合久久福利 | 91一区在线观看 | 久久er99热精品一区二区三区 | 五月天婷婷在线播放 | 国产丝袜在线 | 中文字幕 二区 | 国产成人免费在线观看 | 国产午夜精品一区 | 香蕉视频网址 | 国产精品福利无圣光在线一区 | 国产精品男女啪啪 | 在线看v片成人 | 国产91精品看黄网站 | 狠狠干免费 | 在线小视频 | av线上免费观看 | 国产免费xvideos视频入口 | 在线观看视频日韩 | 久久夜av| 久久综合色播五月 | 黄色小网站免费看 | www.亚洲黄色 | 久久免费精品视频 | 国产在线a| 久久精品一二三区 | 欧美日韩一级在线 | 亚洲人成免费 | 天天干夜夜夜操天 | 国产精品午夜av | 干狠狠 | 久久精品一区二区三 | 高清av不卡 | 97电影院网| 欧美最爽乱淫视频播放 | 高清在线一区 | 欧美一区视频 | 99久久精品国产一区二区成人 | 欧美一区二区三区在线视频观看 | 91精品蜜桃 | 免费高清男女打扑克视频 | 亚洲国产成人精品在线观看 | 亚洲区精品 | 伊人伊成久久人综合网小说 | 免费a级黄色毛片 | 欧美国产一区在线 | 亚洲女同videos| 国产黄色一级大片 | 亚洲视频h | 五月天色中色 | 97精品国产97久久久久久春色 | 中文字幕在线第一页 | 日日夜夜操av| 人人爽人人爽av | 久久久久久毛片精品免费不卡 | av中文字幕不卡 | 欧美日本国产在线观看 | 国产高清视频免费最新在线 | 三级黄色a | av先锋影音少妇 | 欧美在线视频精品 | a亚洲视频 | 成人黄色短片 | 人人人爽| 午夜精品久久久久久 | 在线中文字幕一区二区 | 国产成人精品福利 | 337p日本大胆噜噜噜噜 | 日韩av成人在线观看 | 狠狠激情中文字幕 | 午夜狠狠操 | 日日操日日插 | 少妇bbbb搡bbbb桶 | 99视频精品视频高清免费 | 在线小视频你懂得 | 99久久精品无码一区二区毛片 | 久久久久综合 | 中文字幕国产在线 | 免费网站看av片 | 最近更新的中文字幕 | 久久久久亚洲a | 国内精品美女在线观看 | 在线观看福利网站 | 少妇av网 | av在线8 | 麻豆免费精品视频 | 国产成人香蕉 | 91av视频免费在线观看 | 丝袜制服天堂 | 一级黄色片在线 | 国产精品女人网站 | 中文字幕在线视频网站 | 欧美国产日韩一区二区三区 | 久久黄色网 | 人人爽人人插 | 日日夜夜干 | 欧美一区二区在线刺激视频 | 久久免费视频1 | 成人亚洲欧美 | 国产美女网站视频 | 91插插插网站 | 中文字幕韩在线第一页 | 成人高清在线观看 | 久久免费观看少妇a级毛片 久久久久成人免费 | 天天爱综合 | 国内精品久久久久久久久久 | 免费观看的黄色片 | 黄色日视频 | 欧美在一区 | 精品中文字幕在线播放 | 九九九九免费视频 | 在线观看亚洲国产 | 在线亚洲成人 | 九九热在线免费观看 | 高潮毛片无遮挡高清免费 | 精品一区二区精品 | 狠狠狠狠狠狠 | 亚洲国产999| 亚洲一级电影在线观看 | av品善网| www国产亚洲精品久久麻豆 | 九精品| 日日日日| 亚洲精品视频免费在线 | 99久久久国产精品免费99 | 精品国产乱码久久久久久浪潮 | 国产手机视频在线观看 | 久久精品人人做人人综合老师 | 久久免费的精品国产v∧ | 亚洲高清视频在线播放 | av资源在线观看 | 欧美午夜理伦三级在线观看 | 国产精品一区二区美女视频免费看 | 亚洲一区精品人人爽人人躁 | 97精品国自产拍在线观看 | 欧美一级久久 | 91网页版免费观看 | 欧美少妇xxx | 久久久国产精品亚洲一区 | 亚洲午夜久久久久久久久久久 | 玖玖在线免费视频 | 国产 日韩 在线 亚洲 字幕 中文 | 激情久久久久久久久久久久久久久久 | 国产视频在线观看免费 | 欧美在线视频a | 成人免费视频网站 | 欧美日比视频 | 亚洲成人黄色网址 | 麻花传媒mv免费观看 | 在线观看精品一区 | 中文字幕亚洲不卡 | 91精品网站在线观看 | 欧美乱大交 | 亚洲免费不卡 | 婷婷在线精品视频 | www.超碰97.com | 国产精品久久久久久久久免费看 | 91精品免费视频 | 日本久草电影 | 日本三级久久 | 五月综合色婷婷 | 另类老妇性bbwbbw高清 | 国产精品网址在线观看 | 在线观看视频福利 | 精品久久国产一区 | 天天操天天干天天爽 | 不卡视频在线 | 亚洲精品av中文字幕在线在线 | 香蕉手机在线 | 欧美激情在线看 | 91视频在线免费观看 | 久久精品国产一区二区 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 日韩视频免费播放 | 亚洲精品一区二区在线观看 | 成人在线播放免费观看 | 国产精品xxxx18a99 | 日韩毛片在线免费观看 | 日本精品一区二区三区在线观看 | 久久草在线视频国产 | 丁香六月在线 | 久久久综合香蕉尹人综合网 | 亚洲精品动漫在线 | 午夜久久福利 | 奇米网在线观看 | 在线观看视频一区二区三区 | bbbbb女女女女女bbbbb国产 | 久久免费视频7 | 激情综合色综合久久 | 久久av免费 | 欧美韩国日本在线 | 香蕉在线视频观看 | 香蕉在线观看 | 在线观看中文字幕dvd播放 | 黄色av网站在线观看免费 | 最新日本中文字幕 | 高清精品在线 | 亚洲激情网站免费观看 | 国产精品久久久久久久久久久久午 | 中文字幕国产一区 | 日韩精品一区二区三区在线播放 | 国产一区高清在线 | 91大神精品视频在线观看 | 天天色天天操天天爽 | 久久精品一二三区白丝高潮 | 不卡国产视频 | 天天操网站| 91九色最新地址 | 久久精品影片 | 精品国产乱码久久 | 99热在线观看免费 | 911国产在线观看 | 狠狠网站 | 在线看av的网址 | 区一区二区三区中文字幕 | 国产精品视频免费在线观看 | 婷婷丁香激情网 | 99re热精品视频| 久草视频在线播放 | 在线免费观看视频 | 国产成人精品综合久久久久99 | 五月天久久 | 亚洲闷骚少妇在线观看网站 | 中文字幕xxxx | 日韩欧美国产视频 | 就要色综合 | 麻豆视频免费入口 | 久久都是精品 | 在线播放 日韩专区 | 欧美成人精品在线 | 日韩精品电影在线播放 | 精品视频成人 | 丁香六月伊人 | 99久热在线精品视频成人一区 | 91中文字幕网 | 久久精品欧美日韩精品 | 久久五月精品 | 天天干,天天射,天天操,天天摸 | 久久亚洲欧美日韩精品专区 | 91黄色成人 | 五月综合激情婷婷 | 国产涩图| 91精品爽啪蜜夜国产在线播放 | 国产原创在线 | 探花视频在线观看+在线播放 | 欧美成年网站 | 视频二区在线 | 免费成人黄色av | av电影免费看 | 欧美巨大荫蒂茸毛毛人妖 | 成人资源站 | 999超碰| 久久av在线| 久久手机精品视频 | 日日爱视频 | 国产精品视频内 | 免费看一级特黄a大片 | 超碰97公开 | 精品九九久久 | 色综合天天天天做夜夜夜夜做 | 国产一性一爱一乱一交 | a特级毛片| 一区二区三区国 | 日韩中文字幕在线 | 久黄色 | 成人影视片| 欧美精品乱码久久久久久按摩 | 日韩精品在线观看av | 国产免费叼嘿网站免费 | 天天干天天做天天爱 | 在线观看亚洲国产精品 | 久久婷婷一区二区三区 | 在线日韩亚洲 | 激情欧美日韩一区二区 | 欧美成人手机版 | 久精品视频在线观看 | 国产精品小视频网站 | 成人av资源在线 | 草久热 | 精品欧美一区二区精品久久 | 欧美午夜a | 久久久久久久综合色一本 | 色综合天天射 | 免费视频一二三区 | 国产精品成人一区 | 中文字幕日韩国产 | 久久亚洲免费视频 | 999抗病毒口服液 | 伊人婷婷激情 | 在线国产能看的 | 日韩一区二区三区高清免费看看 | 成人h动漫精品一区二 | 久久久久国产精品免费网站 | 久久精久久精 | 996久久国产精品线观看 | 69精品久久久 | 国内外成人在线视频 | 日韩理论在线播放 | 国产精品入口麻豆www | 最近日本韩国中文字幕 | 天堂网一区二区三区 | 欧美日韩高清免费 | 欧美日韩在线免费观看视频 | 久草在线资源免费 | 成人毛片在线视频 | www.91av在线 | 久久久久久久久久久久久9999 | 婷婷精品国产欧美精品亚洲人人爽 | 免费91麻豆精品国产自产在线观看 | 婷婷激情av| 亚洲第一久久久 | 成人国产网站 | 免费成人av网站 | 欧美另类xxxx | 日本超碰在线 | 97国产视频 | 亚洲日本va在线观看 | 久久精品视频在线看 | 国产视频首页 | 韩国三级av在线 | 国产精品久久久久久一区二区三区 | www视频免费在线观看 | 日韩亚洲国产精品 | 亚洲欧美在线综合 | 91成人在线观看高潮 | 久久精品999| 国产高清在线视频 | 在线av资源 | 国产高清永久免费 | 国产一区电影在线观看 | 日韩av一区二区在线 | 天天天综合网 | 久草视频免费在线观看 | 国产精品18久久久久久久网站 | 五月婷婷欧美视频 | 日韩精品最新在线观看 | 精品在线观看一区二区三区 | 久久久久久草 | 九九热免费在线观看 | 国产精品九九九九九 | 日本久久久久久久久久 | 欧美孕妇与黑人孕交 | 一区三区视频 | 日韩专区av | 国产精品资源在线 | 香蕉成人在线视频 | a级国产乱理论片在线观看 特级毛片在线观看 | 国产精品美女网站 | 大荫蒂欧美视频另类xxxx | 亚洲专区在线播放 | 二区精品视频 | 一区二区视频欧美 | 91视频啪 | 免费观看性生交 | 婷婷久久综合九色综合 | 亚洲第一区在线观看 | 一区二区影视 | 福利久久久 | 国产精品久久久久久麻豆一区 | 超碰人人草 | 四虎国产精品免费观看视频优播 | 成人免费xyz网站 | 免费三级骚 | 成人av资源网站 | 91丨九色丨国产女 | 成片人卡1卡2卡3手机免费看 | 天天做天天爱天天综合网 | 福利视频第一页 | 最近免费观看的电影完整版 | 国产人在线成免费视频 | 国产精品久久久久久久久久 | 日韩欧美综合视频 | 麻豆国产精品视频 | 五月天激情综合 | 天天射网站 | 黄色一级大片在线免费看产 | 91精品视频免费看 | 91av影视| 激情综合中文娱乐网 | 91精品在线免费观看 | 在线免费观看羞羞视频 | 成人在线免费小视频 | 成年人在线 | 国产色a在线观看 | 91九色精品 | 四虎国产精 | 91视频在线免费看 | 欧美日韩网址 | 日韩久久久久久久久 | 国产成人精品亚洲a | 欧美性色综合网站 | 激情久久综合 | 开心激情五月网 | 毛片网免费 | 日韩欧美在线播放 | 久久精品电影院 | 99精品国产aⅴ | 视频一区二区视频 | 五月婷激情 | 99精品亚洲 | 欧美日韩国产一二 | 久久夜视频 | 在线观看av麻豆 | 久久精品官网 | 色综合天天狠天天透天天伊人 | 中文字幕一区二区在线播放 | 国产精品福利午夜在线观看 | www.夜色321.com | 欧美日韩xxx| 精品国产精品久久 | 免费三级黄色片 | 在线观看免费视频你懂的 | 久日视频| 日日爽视频 | 国产福利一区在线观看 | 久久久久久久久久久久99 | 深爱激情丁香 | 国产高清久久久久 | 超碰成人网 | 一级黄色大片在线观看 | 91视频传媒 | 射射色 | 中文字幕在线观看网站 | 国产日韩在线视频 | 久久免费视频这里只有精品 | 久久久久 免费视频 | 精品久久久久久久久久久久久久久久 | 久久国产精品成人免费浪潮 | 91人人在线 | 日本少妇久久久 | 97视频在线免费播放 | 亚洲午夜激情网 | 国产日韩视频在线 | 国产精品成人久久 | 精品国产视频在线观看 | 蜜臀久久99精品久久久无需会员 | 中文字幕精品视频 | 国产又粗又长的视频 | av电影免费在线看 | 国产精品永久免费 | 一区二区中文字幕在线 | 国产精品国产三级国产aⅴ无密码 | 成人少妇影院yyyy | 精品专区一区二区 | 天天干天天操天天拍 | 国产午夜亚洲精品 | 亚洲1级片| 免费福利在线播放 | 日韩欧美一区二区在线播放 | 久久伊人精品一区二区三区 | 色999视频 | 九九九免费视频 | 97成人在线观看视频 | 久久99亚洲精品久久久久 | 啪一啪在线| 69精品人人人人 | 久久草精品 | 日韩欧美一区二区三区黑寡妇 | 欧美激情视频在线观看免费 | 亚洲黄色在线观看 | 欧美性色19p| 韩日精品在线 | 亚洲老妇xxxxxx | 99精品免费 | 一级一片免费看 | 黄色成人小视频 | 国产亚洲精品bv在线观看 | 在线国产91 | 天天干人人干 | 福利久久久 | 久久国产精品一二三区 | 麻豆系列在线观看 | 免费看精品久久片 | a色视频 | 国产亚洲精品久久19p | 91福利社区在线观看 | 97超碰.com| 成年人三级网站 | 996久久国产精品线观看 | 日狠狠 | 狠狠插天天干 | 国产一区麻豆 | 91九色国产蝌蚪 | 99色国产 | 国产成人免费高清 | 久草在线免费看视频 | 亚洲资源一区 | 99精品久久久| 色天天综合久久久久综合片 | 99亚洲精品在线 | 国产精品免费在线视频 | 在线视频 成人 | 99视频网站 | 公与妇乱理三级xxx 在线观看视频在线观看 | 成人h在线观看 | 99re在线视频观看 | 波多野结依在线观看 | 欧美 日韩 国产 成人 在线 | 精品视频9999 | 日韩精选在线 | 中文成人字幕 | 四虎国产精品免费观看视频优播 | av在线亚洲天堂 | 精品国模一区二区三区 | 国产精品一区二区久久国产 | 日韩黄色免费在线观看 | 男女啪啪视屏 | 久久精品99久久久久久 | 亚洲精品资源在线观看 | 精品国产网址 | 国产精品普通话 | 久久手机精品视频 | 91色一区二区三区 | 91久久国产精品 | 午夜视频在线观看一区二区三区 | 天天激情天天干 | 国产精品一区二区三区观看 | 天天色天天色天天色 | 91视频久久久久久 | 色综合狠狠干 | 中文视频在线看 | 国产一区二区高清 | 日韩视频一区二区 | 77国产精品| 久久精品国产99 | 91九色蝌蚪视频网站 | 成人免费观看视频网站 | 免费在线观看污网站 | 中文字幕综合在线 | 欧美日韩一区二区久久 | 夜夜操天天操 | 日韩电影中文字幕在线观看 | 欧美日韩免费在线观看视频 | 黄污网站在线观看 | 91麻豆国产福利在线观看 | 五月天伊人 | 色综合色综合久久综合频道88 | 成 人 黄 色 视频免费播放 | 麻豆精品在线 | 一级黄色片在线播放 | 国产精品原创视频 | 久久久久 免费视频 | 国产综合久久 | 国产精品久久久久久吹潮天美传媒 | 婷婷综合久久 | 中文字幕在线日本 | 久久久电影网站 |