做Android的應該經常會看見桌面上顯示歌詞,或者流量監控的懸浮窗。今天通過一個簡單的實例來學習。
先看看效果。
1. 先建一個top_window.xml。這個就是用來在桌面上顯示的控件。
- <?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:background="#ffffff"
- android:orientation="vertical" >
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="點我就能移動~"
- android:textColor="#000000" />
- </LinearLayout>
2. 建一個類繼承自Application
- /*
- * 主要用到兩個類WindowManager, WindowManager.LayoutParams. 對窗口進行管理.
- */
- package com.orgcent.desktop;
-
- import android.app.Application;
- import android.content.Context;
- import android.view.LayoutInflater;
- import android.view.MotionEvent;
- import android.view.View;
- import android.view.WindowManager;
- import android.view.View.OnTouchListener;
-
- public class BaseAppliction extends Application
- {
- WindowManager mWM;
- WindowManager.LayoutParams mWMParams;
-
- @Override
- public void onCreate()
- {
- mWM = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
- final View win = LayoutInflater.from(this).inflate(
- R.layout.top_window, null);
-
- win.setOnTouchListener(new OnTouchListener()
- {
- float lastX, lastY;
-
- public boolean onTouch(View v, MotionEvent event)
- {
- final int action = event.getAction();
-
- float x = event.getX();
- float y = event.getY();
- if (action == MotionEvent.ACTION_DOWN)
- {
- lastX = x;
- lastY = y;
- } else if (action == MotionEvent.ACTION_MOVE)
- {
- mWMParams.x += (int) (x - lastX);
- mWMParams.y += (int) (y - lastY);
- mWM.updateViewLayout(win, mWMParams);
- }
- return true;
- }
- });
-
- WindowManager wm = mWM;
- WindowManager.LayoutParams wmParams = new WindowManager.LayoutParams();
- mWMParams = wmParams;
- wmParams.type = 2002; //type是關鍵,這裡的2002表示系統級窗口,你也可以試試2003。可取查幫助文檔
- wmParams.format = 1;
- wmParams.flags = 40;
-
- wmParams.width = 100;//設定大小
- wmParams.height = 30;
-
- wm.addView(win, wmParams);
- }
- }
其他的不用更改,直接運行即可看到效果。
源碼下載:
免費下載地址在 http://linux.linuxidc.com/
用戶名與密碼都是www.linuxidc.com
具體下載目錄在 /2012年資料/8月/19日/Android開發---制作桌面可移動控件