歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android開發---制作桌面可移動控件

做Android的應該經常會看見桌面上顯示歌詞,或者流量監控的懸浮窗。今天通過一個簡單的實例來學習。

先看看效果。

1. 先建一個top_window.xml。這個就是用來在桌面上顯示的控件。

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3. android:layout_width="wrap_content"  
  4. android:layout_height="wrap_content"  
  5. android:background="#ffffff"  
  6. android:orientation="vertical" >  
  7. <TextView  
  8. android:layout_width="wrap_content"  
  9. android:layout_height="wrap_content"  
  10. android:text="點我就能移動~"  
  11. android:textColor="#000000" />  
  12. </LinearLayout>   

2. 建一個類繼承自Application

  1. /* 
  2. * 主要用到兩個類WindowManager, WindowManager.LayoutParams. 對窗口進行管理. 
  3. */  
  4. package com.orgcent.desktop;  
  5.   
  6. import android.app.Application;  
  7. import android.content.Context;  
  8. import android.view.LayoutInflater;  
  9. import android.view.MotionEvent;  
  10. import android.view.View;  
  11. import android.view.WindowManager;  
  12. import android.view.View.OnTouchListener;  
  13.   
  14. public class BaseAppliction extends Application  
  15. {  
  16.     WindowManager mWM;  
  17.     WindowManager.LayoutParams mWMParams;  
  18.   
  19.     @Override  
  20.     public void onCreate()  
  21.     {  
  22.         mWM = (WindowManager) getSystemService(Context.WINDOW_SERVICE);  
  23.         final View win = LayoutInflater.from(this).inflate(  
  24.                 R.layout.top_window, null);  
  25.   
  26.         win.setOnTouchListener(new OnTouchListener()  
  27.         {  
  28.             float lastX, lastY;  
  29.   
  30.             public boolean onTouch(View v, MotionEvent event)  
  31.             {  
  32.                 final int action = event.getAction();  
  33.   
  34.                 float x = event.getX();  
  35.                 float y = event.getY();  
  36.                 if (action == MotionEvent.ACTION_DOWN)  
  37.                 {  
  38.                     lastX = x;  
  39.                     lastY = y;  
  40.                 } else if (action == MotionEvent.ACTION_MOVE)  
  41.                 {  
  42.                     mWMParams.x += (int) (x - lastX);  
  43.                     mWMParams.y += (int) (y - lastY);  
  44.                     mWM.updateViewLayout(win, mWMParams);  
  45.                 }  
  46.                 return true;  
  47.             }  
  48.         });  
  49.   
  50.         WindowManager wm = mWM;  
  51.         WindowManager.LayoutParams wmParams = new WindowManager.LayoutParams();  
  52.         mWMParams = wmParams;  
  53.         wmParams.type = 2002//type是關鍵,這裡的2002表示系統級窗口,你也可以試試2003。可取查幫助文檔   
  54.         wmParams.format = 1;  
  55.         wmParams.flags = 40;  
  56.   
  57.         wmParams.width = 100;//設定大小   
  58.         wmParams.height = 30;  
  59.   
  60.         wm.addView(win, wmParams);  
  61.     }  
  62. }  

其他的不用更改,直接運行即可看到效果。

源碼下載:

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /2012年資料/8月/19日/Android開發---制作桌面可移動控件

Copyright © Linux教程網 All Rights Reserved