2011年1月7日 星期五

[Android][Dev tip] 在手機畫面上加上一個浮水印

其實這是一個沒啥用的技巧(至少我還想不出應用), 就是加上一個像是浮水印的東西在畫面上, 不管在哪都會出現的, 像是這樣:

因為這個image要讓他一直不會消失, 所以他並不會是一個Activity, 因為Activity會有他的生命週期, 離開後就沒了, 所以要透過WindowManager去加上這個ImageView, 而且加上View的動作必須要給Background service去處理(這樣也就可以去做一些變化, 或動畫之類的)

首先, 要建立一個Service, 要達成這目的也很簡單, 在onCreate加上:

WindowManager wm = (WindowManager) this

.getSystemService(Service.WINDOW_SERVICE);

 

ImageView logo = new ImageView(this);

logo.setImageResource(R.drawable.onepieceoverlay);

WindowManager.LayoutParams lparam = new WindowManager.LayoutParams(

WindowManager.LayoutParams.WRAP_CONTENT,

WindowManager.LayoutParams.WRAP_CONTENT,

WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, 0, PixelFormat.TRANSLUCENT);

lparam.gravity = Gravity.RIGHT | Gravity.TOP;

wm.addView(logo, lparam);

這樣就好了, 其實很簡單, 就是透過WindowManager在system overlay上加個view

但這樣還不會work, 因為少了一個permission, 所以必須在AndroidManifest裡面加上

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"></uses-permission>

這樣就好了

不過system overlay沒辦法接touch event, 所以這邊放的view真的只是拿來放好看的