Android開發中Activity背景透明與文本置頂顯示的方法

來源:互聯網
上載者:User

“第二屆
Google 暑期大學生部落格分享大賽 - 2011 Android 成長篇 ”

    在某些應用情境中,我們會需要使Activity的背景透明,如開發一個惡作劇應用,使用者在觸控螢幕幕任意位置的時候,螢幕呈現"哢喳"碎裂的圖片。在這種情況下可以讓這個Activity設定為Translucent的主題。同樣某些應用會需要讓一些部分內容置頂顯示在所有Activity之上,如開發一個音樂播放器同步顯示歌詞時,當播放器在後台運行時,需要歌詞在切換不同Activity時始終置頂顯示著,這種情況可以通過Android的System
Overlay實現。

   下面這個簡單例子實現了前面所說的需求,圖1是運行這個例子後的,其中"Google Android"TextView以TYPE_SYSTEM_OVERLAY放在了螢幕的中央。

圖1,顯示了這個Activity的背景即主畫面,當按下HOME鍵後,並滑動到右邊第三個螢幕時,Google Android在這個過程中一直存在,並不影響使用者的操作,效果2:


                                圖1                                      
                             圖2

布局XML代碼

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"      package="com.limitfan.overlay"      android:versionCode="1"      android:versionName="1.0">    <uses-sdk android:minSdkVersion="4" />    <application android:icon="@drawable/icon" android:label="@string/app_name">         <!--設定android:theme的主題為透明無標題列 -->        <activity android:theme="@android:style/Theme.Translucent.NoTitleBar" android:name=".AndroidOverlayActivity" android:label="@string/app_name">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application>       <!--置頂顯示需要的許可權 -->     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /></manifest>

Activity代碼

package com.limitfan.overlay;import android.app.Activity;import android.os.Bundle;import android.view.WindowManager;import android.widget.TextView;public class AndroidOverlayActivity extends Activity {    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                //獲得WindowManager對象        WindowManager wm = (WindowManager)getApplicationContext().getSystemService(WINDOW_SERVICE);            WindowManager.LayoutParams params = new WindowManager.LayoutParams();            params.type = WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY;           params.width = WindowManager.LayoutParams.WRAP_CONTENT;            params.height = WindowManager.LayoutParams.WRAP_CONTENT;            //設定始終顯示的TextView對象        TextView tv = new TextView(this);            tv.setText("Google Android");        wm.addView(tv, params);      }}


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.