androidactivity背景
A. android編程中,Activity默認的背景色是白色還是黑色啊
android編程中,Activity默認的背景色是白色,主要是因為其變成軟體默認的是白色。要想改變其背景顏色,只需在Background Color選項里進行更改即可。
當一個 Activity 實例被創建、銷毀或者啟動另外一個 Activity 時,它在這四種狀態之間進行轉換,這種轉換的發生依賴於用戶程序的動作。
(1)androidactivity背景擴展閱讀
在android 中,Activity 擁有四種基本狀態:
1、Active/Running
一個新 Activity 啟動入棧後,它顯示在屏幕最前端,處理是處於棧的最頂端(Activity棧頂),此時它處於可見並可和用戶交互的激活狀態,叫做活動狀態或者運行狀態(active or running)。
2、Paused
當 Activity失去焦點, 被一個新的非全屏的Activity
或者一個透明的Activity
被放置在棧頂,此時的狀態叫做暫停狀態(Paused)。
此時它依然與窗口管理器保持連接,Activity依然保持活力(保持所有的狀態,成員信息,和窗口管理器保持連接),但是在系統內存極端低下的時候將被強行終止掉。所以它仍然可見,但已經失去了焦點故不可與用戶進行交互。
3、Stopped
如果一個Activity被另外的Activity完全覆蓋掉,叫做停止狀態(Stopped)。它依然保持所有狀態和成員信息,但是它不再可見,所以它的窗口被隱藏,當系統內存需要被用在其他地方的時候,Stopped的Activity將被強行終止掉。
4、Killed
如果一個Activity是Paused或者Stopped狀態,系統可以將該Activity從內存中刪除,Android系統採用兩種方式進行刪除,要麼要求該Activity結束,要麼直接終止它的進程。當該Activity再次顯示給用戶時,它必須重新開始和重置前面的狀態。
參考資料來源:網路—android編程
參考資料來源:網路—android開發
參考資料來源:網路—activity
B. 如何在Android中實現懸浮Activity
這里主要有三個任務:
計算已有的Activity的尺寸並確定它的新坐標位置;
使Activity透明,可以看見其背景;
處理背景使其不能再和用戶進行交互。
計算窗口大小
前面提到,我們需要以一個已有的手機APP為基礎(使用了ActionBarSherlock庫),這個庫我們已經以一個外部庫的形式集成到項目中,並帶有源代碼。
如果對ABS的源碼很熟悉或者曾對原生ActionBar的構架有了解,就會發現:如果改變Activity的大小,那在調用setContentView方法的時候,功能沒有實現:ActionBar的大小和位置都沒有變化。這時要做的就是在更高的級別里操作,在系統繪制ActionBar的時候——ABS或者原生的ActionBar,這時候還沒有任何窗口的數據,這樣我們就可以按照需要調整了。
最顯而易見的方式就是改變Window的尺寸,所以這里需要以下這段代碼:
看起來不錯,效果已經基本實現了。
還有一個小問題:以上測試的都是在Nexus7 android4.3上執行,而這個App在Nexus7 的android4.2版本中,Activity沒有顯示。
經過多次調試和日誌檢查後,發現我們的Activity(就叫MainActivity吧)沒有被銷毀(沒有調用onDestroy方法),所以Android系統就把它忽略了,沒有繪制它。為什麼呢?因為Android 4.4 KitKat新增了一個優化演算法。因為這個優化演算法,Android系統看到Activity為全屏顯示模式(不管WindowManager的改變),就會繪制這個MainActivity,但是它之上的東西就被忽略了,所以我們就看不到任何顯示了。
我們研究了下這個問題,然後發現對話框和其他不全屏顯示的部件都可以正常繪制,所以我們需要在主題theme里加上這幾行:
1
2
3
4
<item name="android:windowIsFloating">true</item>
<item name="android:windowCloseOnTouchOutside">false</item>
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:backgroundDimEnabled">true</item>
這樣問題就解決了。綜上所述,我們就實現了一個懸浮、透明的Activity。
C. android 怎樣去掉兩個activity切換時的白屏
A 應用,activity之間的跳轉動畫我也加了,默認背景android:windowBackground也加了,之前一直沒有問題。
但是最近在做新的B應用,B里邊有個功能是打開A,在SplashActivity->MainActivity的時候,如果這時候MainAtivity已經被銷毀了會出現白屏。
原因是因為我的MainActivity是singleTask的。
D. android 網路獲取圖片並在activity上顯示
在Android應用中,獲取網路圖片並在Activity中顯示,是一個常見的需求。首先,你需要使用HttpURLConnection或OkHttp等網路庫來下載圖片。這里,我們可以使用OkHttp,因為它提供了簡潔且高效的API。
以下是一個簡單的示例代碼,用於從網路獲取圖片並將其設置為Activity的背景:
1. 添加依賴
在項目級build.gradle文件中添加OkHttp依賴:
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
2. 獲取網路圖片
使用OkHttp發起網路請求獲取圖片。這里我們使用一個簡單的GET請求:
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url("https://example.com/image.png").build();
Response response = client.newCall(request).execute();
if (response.isSuccessful()) {
byte[] bytes = response.body().bytes();
Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
}
3. 設置圖片為Activity背景
獲取到圖片後,可以將其設置為Activity的背景。我們可以在Activity的onCreate方法中完成這一操作:
ImageView imageView = findViewById(R.id.background_image);
imageView.setImageBitmap(bitmap);
View backgroundView = findViewById(R.id.activity_background);
backgroundView.setBackground(new BitmapDrawable(getResources(), bitmap));
以上步驟展示了如何從網路獲取圖片並在Android應用的Activity中顯示。值得注意的是,為了提升用戶體驗,應當確保網路請求非同步執行,避免阻塞主線程。
此外,在實際應用中,還需要處理可能出現的異常情況,比如網路請求失敗或圖片下載失敗等。可以使用try-catch語句來捕獲並處理這些異常。
通過這種方式,我們可以在Android應用中輕松實現從網路獲取圖片並在Activity中展示的功能。