成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

讓你的應用"飄"起來!Android懸浮窗+自動吸邊效果實戰

移動開發 Android
重要注意事項1. 版本適配:Android 8.0+要用TYPE_APPLICATION_OVERLAY類型。2. 內存管理:記得在onDestroy里移除視圖!3. 用戶體驗:拖動時可以考慮增加半透明效果。4. 權限提示:優雅地引導用戶開啟權限

先搞張"通行證"(權限篇)

在AndroidManifest里掛個牌子

<!-- 告訴系統:我要開懸浮窗啦! -->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

這就像在游樂園門口掛了個"VIP通道"的牌子~

向用戶申請"特別通行證"

// 檢查是不是Android 6.0以上的"高級游樂園"
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    // 看看通行證有沒有過期
    if (!Settings.canDrawOverlays(this)) {
        // 申請權限
        Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
                Uri.parse("package:" + getPackageName()));
        startActivityForResult(intent, 1001);
    } else {
        showFloatingWindow(); // 亮出我們的懸浮窗!
    }
}

圖片圖片

創建會"跑"的懸浮窗(核心實現)

懸浮窗基礎配置

// 窗口管家(WindowManager)登場
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);

// 給懸浮窗穿件"衣服"
ImageView floatView = new ImageView(this);
floatView.setImageResource(R.drawable.ic_float); 

// 懸浮窗的"身份證信息"
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
    ViewGroup.LayoutParams.WRAP_CONTENT,
    ViewGroup.LayoutParams.WRAP_CONTENT,
    Build.VERSION.SDK_INT >= Build.VERSION_CODES.O ? 
        WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY : // Android 8.0+用這個
        WindowManager.LayoutParams.TYPE_PHONE,                // 老版本用這個
    WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, // 別搶焦點,做個安靜的美窗
    PixelFormat.TRANSLUCENT // 半透明效果更高級
);

// 初始位置:屏幕左上角+向下偏移100像素
params.gravity = Gravity.START | Gravity.TOP;
params.x = 0;
params.y = 100;

// 把懸浮窗"放"到屏幕上
windowManager.addView(floatView, params);

圖片圖片

讓懸浮窗"動"起來

floatView.setOnTouchListener(new View.OnTouchListener() {
    private int startX, startY;
    private float touchX, touchY;

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN: // 手指按下
                startX = params.x;
                startY = params.y;
                touchX = event.getRawX(); // 記錄觸點X
                touchY = event.getRawY(); // 記錄觸點Y
                return true;

            case MotionEvent.ACTION_MOVE: // 手指滑動
                // 計算新位置
                params.x = startX + (int)(event.getRawX() - touchX);
                params.y = startY + (int)(event.getRawY() - touchY);
                windowManager.updateViewLayout(floatView, params);
                return true;

            case MotionEvent.ACTION_UP: // 手指松開
                autoAttachToEdge(); // 觸發吸邊效果
                return true;
        }
        return false;
    }
});

磁吸邊效果實現(魔法時刻)

private void autoAttachToEdge() {
    int screenWidth = getResources().getDisplayMetrics().widthPixels;
    int viewCenterX = params.x + floatView.getWidth()/2;

    // 判斷離哪邊近
    if(viewCenterX < screenWidth/2) {
        params.x = 0; // 吸到左邊緣
    } else {
        params.x = screenWidth - floatView.getWidth(); // 吸到右邊緣
    }

    // 添加彈性動畫
    ValueAnimator animator = ValueAnimator.ofInt(params.x, targetX);
    animator.addUpdateListener(animation -> {
        params.x = (int) animation.getAnimatedValue();
        windowManager.updateViewLayout(floatView, params);
    });
    animator.setDuration(300).start();
}

圖片圖片

重要注意事項

1. 版本適配:Android 8.0+要用TYPE_APPLICATION_OVERLAY類型

2. 內存管理:記得在onDestroy里移除視圖!

3. 用戶體驗:拖動時可以考慮增加半透明效果

4. 權限提示:優雅地引導用戶開啟權限

快來打造屬于你的"桌面小精靈"吧!代碼在手,創意我有,讓你的應用瞬間擁有靈魂~ ??

源碼:https://github.com/Reathin/Sample-Android/tree/master/module_float

責任編輯:武曉燕 來源: 沐雨花飛碟
相關推薦

2022-07-28 14:33:32

webviewweb頁面

2011-05-24 15:29:05

程序CC++

2025-03-28 03:20:00

MySQL數據庫搜索

2016-03-04 10:50:02

ios圓角高效添加

2013-07-23 10:30:48

Android Des應用創新

2017-01-22 17:25:55

Android放大鏡效果源碼分析

2013-07-05 10:26:40

Android

2012-07-01 03:23:31

JBuilder

2020-09-29 07:54:05

Express 飛起

2011-04-13 10:51:58

MATLAB

2024-11-22 06:00:00

自動鎖定WinForm

2010-07-27 14:00:53

Flex ComboB

2022-10-09 18:14:31

訂單系統分庫分表

2011-05-04 11:26:47

優化

2015-12-01 13:51:52

Webrtc

2013-06-25 11:21:35

Android開發幻燈片效果Gallery

2010-09-10 14:33:32

SQL循環語句

2011-09-02 13:54:31

Ubuntu

2012-09-03 09:21:51

2025-04-15 00:00:00

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕在线观看一区二区 | a黄视频| 久久久久久亚洲精品 | 欧美电影一区 | 在线a视频网站 | 欧美一级久久 | 亚洲综合免费 | 99视频在线播放 | 亚洲成人中文字幕 | 久久久久久亚洲精品不卡 | 亚洲国产aⅴ成人精品无吗 欧美激情欧美激情在线五月 | 欧美日韩视频 | 精品三级在线观看 | 狠狠干美女 | 国产精品地址 | 欧美日韩一区二区三区视频 | 日本一区二区三区在线观看 | 青青草精品| 亚洲色图综合 | 欧美国产日韩一区二区三区 | 欧美日韩精品久久久免费观看 | 亚洲精品国产精品国自产在线 | 国产农村妇女毛片精品久久麻豆 | 欧美精品一区二区三区蜜桃视频 | 国产精品久久久久久久久久久久 | 在线国产视频 | 久久综合久久综合久久 | 国产免费又黄又爽又刺激蜜月al | 国产成人av在线播放 | 欧美在线一区二区三区 | 一区二区精品视频 | 香蕉久久网 | 日韩欧美黄色 | www久久国产 | av黄色在线观看 | 久久精品日产第一区二区三区 | 欧美a视频| 久草资源在线视频 | 日韩av啪啪网站大全免费观看 | 日韩免费一区 | 成人欧美一区二区三区在线播放 |