1. 程式人生 > >Android中可自由移動懸浮視窗的實現

Android中可自由移動懸浮視窗的實現

本文為參加Google暑期大學生部落格分享大賽特別撰寫。


—————————————————————-

大家對懸浮窗概念不會陌生,相信每臺電腦桌面的右上角都會有這麼一個東西,它總是出現在所有頁面的頂端(Top Show)。但在Android平臺中如何實現這樣的效果呢?先來看一看效果圖。

FloatView

看見在Google搜尋框上面的那個Icon圖片了嘛。下面我就來詳細介紹一下在Android平臺下懸浮視窗的實現,並讓它能夠隨手指的觸控而移動。

一、實現原理及移動思路

呼叫WindowManager,並設定WindowManager.LayoutParams的相關屬性,通過WindowManager的addView方法建立View,這樣產生出來的View根據WindowManager.LayoutParams屬性不同,效果也就不同了。比如建立系統頂級視窗,實現懸浮視窗效果!然後通過覆寫懸浮View中onTouchEvent方法來改變windowMananager.LayoutParams中x和y的值來實現自由移動懸浮視窗。

二、示例程式碼

先來看一看懸浮View的程式碼,這裡用一個ImageView作為演示

01 public class MyFloatView extends ImageView {
02 private float mTouchStartX;
03 private float mTouchStartY;
04 private float x;
05 private float y;
06
07 private WindowManager wm=(WindowManager)getContext().getApplicationContext().getSystemService("window");
08 //此wmParams變數為獲取的全域性變數,用以儲存懸浮視窗的屬性
09 private WindowManager.LayoutParams wmParams = ((MyApplication)getContext().getApplicationContext()).getMywmParams();
10
11 public MyFloatView(Context context) {
12 super(context);    
13

相關推薦

Android自由移動懸浮視窗實現

本文為參加Google暑期大學生部落格分享大賽特別撰寫。 —————————————————————- 大家對懸浮窗概念不會陌生,相信每臺電腦桌面的右上角都會有這麼一個東西,它總是出現在所有頁面的頂端(Top Show)。但在Android平臺中如何實

android實現 桌面移動懸浮視窗實現

現在很多應用都有這樣的功能,比如360等安全衛士,手機管家之內的應用。 效果圖: 一、實現原理及移動思路呼叫WindowManager,並設定WindowManager.LayoutParams的相關屬性,通過WindowManager的addView方法建立View,這

android實現自由移動、監聽點選事件的懸浮

最近因為專案需要,自己實現了個可以自由移動,並且長按可以跳出一個控制播放的,額,大的懸浮窗。 好,開始吧。首先我們先聊許可權,懸浮窗需要在manifest中宣告一個許可權: <uses-permission android:name="androi

Qt實現半透明、無邊框、自由移動、不規則的窗體

先出示效果圖一張,如果不是讀者需要的,讀者可以看完效果圖之後就關閉本網頁啦。 功能要點 視窗無邊框 可自由拖動 背景透明度自定義 邊框可設定為異形 實現步驟                 第1步:新建一個QWidget的子類,這裡命名為BaseWidge

AndroidXposed框架篇-微信實現本地視頻發布到朋友圈功能

快速定位 adb 本地 ref jad jadx mps 頁面 視頻 微信非常龐大,還好有一些強大的工具,下面就來總結收獲的知識。 一、使用adb shell dumpsys activity top命令快速定位頁面 二、使用Jadx進行方法跟蹤時候如果發現沒有結

android的跨程序通訊的實現(一)——遠端呼叫過程和aidl

android在設計理念上強調元件化,元件之間的依賴性很小。我們往往發一個intent請求就可以啟動另一個應用的activity,或者一個你不知道在哪個程序的service,或者可以註冊一個廣播,只要有這個事件發生你都可以收到,又或者你可以查詢一個contentProvider獲得你想要的資料,這其

Android儲存圖片到本地功能實現

文章轉載自http://blog.csdn.net/ccpat/article/details/45314175  感謝原作者~ 本文描述將一個Bitmap物件儲存為一個圖片檔案的主要步驟。儲存的圖片檔案能夠立刻在系統相簿和相簿中找到。 我使用的是一張drawabl

AndroidListView下拉重新整理的實現

ListView中的下拉重新整理是非常常見的,也是經常使用的,看到有很多同學想要,那我就整理一下,供大家參考。那我就不解釋,直接上程式碼了。 這裡需要自己重寫一下ListView,重寫程式碼如下: package net.loonggg.listview; impor

AndroidTextView不獲取焦點可以實現跑馬燈的效果

第一種: Animation ani = new TranslateAnimation(310f, -400f, 0.0f, 0.0f);   ani.setDuration(10000);   ani.setRepeatCount(500);   ani.se

Androidscrollview巢狀webview的實現

Android中,預設情況下,scrollview中如果再巢狀一個webview,會出現webview無法展示的以及這個scrollview無法滑動的問題,因為scrollview需要根據內部的內容計算高度,webview也需要更具內部的內容計算高度,而且他們都

Android夜間模式的三種實現方式

參考:https://www.jianshu.com/p/f3aaed57fa15 在本篇文章中給出了三種實現日間/夜間模式切換的方案: 使用 setTheme 的方法讓 Activity 重新設定主題; 設定 Android Support Library 中的 UiMode

android左右滑動輸入框

  在網上無意看到一個UI動畫,使用者輸入身份證資訊時可以左右滑動輸入框進行輸入,並且資訊可以實時顯示。閒下之餘,自己就動手用程式碼實現出來了,廢話不多說,開始講講如何實現製作的。 1,佈局製作   先寫一個主介面avtivity_main,這裡只是顯示

Android圓形圖的幾種實現方式

在Android開發中,圓形圖片是很常見的,例如淘寶的寶貝,QQ的聯絡人頭像等都是圓形的圖片, 但是Android原生的ImageView又不能顯示圓形的圖片,這就需要我們自己去實現一個圓形圖了 一、自定義View實現圓形圖 我們可以去改造Android系統自帶的Imag

AndroidXposed框架篇-微信實現本地視訊釋出到朋友圈功能

本文轉載自微信實現本地視訊釋出到朋友圈功能 前一篇文章已經詳細介紹瞭如何使用Xposed框架編寫搖色子和剪刀石頭布作弊器,本文繼續介紹如何使用Xposed框架編寫微信外掛將本地小視訊釋出到朋友圈,這裡還是使用微信6.3.9版本進行操作。 微信6.3.9.ap

android自定義畫布Canvas的實現

一、要求:1.畫布繪製控制元件的方法,控制元件應該是一個可以自定義的;2.畫布是可以縮放,且提供一個縮放的方法供外使用;3.控制元件之間連線的方法;4.畫布縮放之後手勢滑動的識別實現; 二、在github裡面種找到了一個類似度挺高的開源專案: github中的第三方的開源專

Android圓角,圓形圖片的實現

android圖片的圓形圓角圖片的設計有多種方式 1、使用框架 2、自定義元件 3、圖片剪下 下面從最簡單的框架開始介紹 1、使用框架, Fresco是Facebook提供的開源圖片載入庫,Fresco中實現了各種載入過程以及載入後的圖片繪製,整體都很強大。 下面簡單介紹

Android 背景滑動登入介面 「 實現不壓縮背景彈出鍵盤 」

Android 背景可滑動登入介面 廢話不多說,先看下實現後的效果: 實現思路 看到上邊 gif 圖的效果,主要列舉一下實現過程過程中遇到的難點。 如何使鍵盤彈出時候不遮擋底部登入佈局; 當鍵盤彈出的時候如何不壓縮背景

android的熱詞搜尋的實現

熱詞搜尋的實現方法其實就是平常SDK專案中view的實現方法,根據實際的需求新建出相應個數的textview。 首先通過createTextView方法實現textview的建立,程式碼如下: /* * 建立一新的熱詞View */ pr

Android使用SharedPreferences儲存資料以實現資料共享

在Android中,我們可以使用SharedPreferences來儲存資料,以實現資料的共享。 (以一個使用者登入為例) 簡介: 首先我們需要了解一下SharedPreferences類,Share

android無限輪播圖的實現(程式碼+文章+視訊)

Android開發中無限輪播圖的實現 前面在我們的論壇裡頭看到有同學們提問,怎麼樣去實現無限輪播。所以晚上回來就錄製了視訊了! 實現方式 最簡單的方式,就是使用viewpager來實現咯! 我們一開始只是實現圖片在viewPager上面可以滑動起