1. 程式人生 > >為activity設定主題theme

為activity設定主題theme

在實踐中有這麼一個需求,有一個BaseActivity,相同佈局放置在這個Activity中,其他Activity繼承自BaseActivity。為了使所有Activity都統一使用背景圖片,一般做法是在BaseActivity的根佈局中設定背景圖片,但是這樣會有一個不好的效果就是當程式第一次啟動的時候也就是主Activity啟動的時候,會有一陣黑屏時間,如果主Activity做的事情比較多的話,這個黑屏時間就會很長(直觀感覺就是啟動很慢)。於是有資料就說,自定義activity的theme,設定屬性android:windowBackground為需要的背景圖片,這樣程式啟動的時候,背景圖片會立馬顯示出來,給人的感覺就是啟動很快了。

於是按照上面所說的方法,自定義了一個theme,並在manifest中設定給主activity

styles檔案中自定義theme

<style name="MyTheme" parent="android:Theme.NoTitleBar.Fullscreen"/>
    <style name="BaseTheme" parent="MyTheme">
        <item name="android:windowBackground">@mipmap/home_bg</item>
    </style>

manifest中設定
<activity
            android:name=".MainActivity"
           
            android:theme="@style/BaseTheme"
            >

雖然實現了主activity的背景,但是其他activity也同樣需要這個背景。我在想是不是給BaseActivity設定theme屬性,而其他activity繼承自BaseActivity,這樣就不需要為每個activity設定theme了。而事實並非如此,我在manifest中只設置了BaseActivity的theme,其他activity的theme都未設定,雖然其他activity都繼承自BaseActivity,但是這個在manifest中設定的theme並未傳遞到其子類中。這是什麼原因呢?

其實,用程式碼的方法也是可以把這個theme傳遞給其子activity的。具體這樣做:

public class BaseActivity extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
//        setTheme(R.style.BaseTheme);
        setContentView(R.layout.base_title);
    }
}
就是在BaseActivity中的onCreate方法,在setContentView之前載入這個自定義的Theme。這樣其他activity繼承自BaseActivity就繼承了其theme。

但是這樣做了之後就出現了一個問題,程式啟動的時候,背景有閃爍,究其原因就是,我的BaseTheme繼承自系統預設的

android:Theme.NoTitleBar.Fullscreen
這效果是顯示系統預設的背景,也就是當我啟動activity的時候,先出現了系統預設的背景,很快又在出現我自己設定的背景圖片。這樣效果就差了許多。

所以,在menifest中設定theme和在程式碼中設定theme還是有區別的,只能說明,manifest中設定的theme優先執行與在onCreate中設定的theme。所以還是老實的在manifest中的對應activity中設定theme吧。

相關推薦

activity設定主題theme

在實踐中有這麼一個需求,有一個BaseActivity,相同佈局放置在這個Activity中,其他Activity繼承自BaseActivity。為了使所有Activity都統一使用背景圖片,一般做法是在BaseActivity的根佈局中設定背景圖片,但是這樣會有一個不好的

設定Activity主題對話方塊時報錯解決方案

將Activity設定為對話方塊的方法: 報錯資訊如下:  09-18 12:50:31.530 22599-22599/com.gb.activityreview E/AndroidRuntime: FATAL EXCEPTION: main Process:

如何Eclipse安裝主題(Color Theme)

導致 ins XML oid tail 為我 phi 下載地址 itl Eclipse版本: Eclipse Java EE IDE for Web Developers.Version: Juno Service Release 1Build id: 20120920-0

pycharm 主題 theme 設定 調整 仿sublime

選擇File->Settings 首先選擇整體的theme 在font中scheme選擇monokai,但是並不能進行更改,比如字型大小,如果要進行進一步地調整,選擇save as,這

將一個activity設定全屏顯示的三種方法

方式一:動態編碼方式 //去掉視窗標題 requestWindowFeature(Window.FEATURE_NO_TITLE); //隱藏頂部的狀態列 getWindow().addFlags

android 浮層簡單實現、activity設定Theme

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="fill_parent"     android:layout_height="fill_parent

【菜鳥學安卓】- DrawerLayout + Toolbar 與主題theme 顏色設定

模仿知乎的過程中一直被這個主題顏色困擾,特意寫個Demo ,來理一理這個東西,加強記憶。 貼上效果圖: 主要是兩種主題顏色的切換,註釋應該已經寫的很詳細了,主要的內容都在下面這個styles的設定裡面。 styles.xml: <resources xmln

Android Activity設定dialog樣式,去掉標題欄

我用了requestWindowFeature(Window.FEATURE_NO_TITLE); 和在AndroidManifest.xml中: 註冊Activity時加上如下的一句配置。 <activity android:name=".A

Activity設定無標題欄主題樣式

去掉Activity上的所有標題欄,在styles.xml中進行設定主題樣式,由於該樣式在清單檔案<application>節點中進行了配置,所以對整個專案中的Activity都能生效   <style name="AppTheme"parent="App

程式設計師大牛必備的裝逼神器(Eclipse主題Theme設定

一個牛逼的程式設計師,除了有牛逼的技術,還要有高逼格的風格,說白了,就和人一樣,單是內在美還不行,必須外表也要美,就好比,一個乞丐,他內在美,但是全身臭氣熏天,和一個老闆,他不但內在美,而且一身正氣。你覺的那個更受歡迎呢?我們作為一個牛逼的程式設計師亦是如此。以下是我在這個官

(9)launcher3 之 外部 更換主題Theme APP demo 實現原理以及demo

解壓 work ace fontsize 思路 con 鎖屏 解壓文件夾 更新 先說下我的思路: luancher3裏面更換圖標的邏輯例如以下: 先從APP資源包裏查詢--數據庫查詢--其它地方查詢ICON 因此,我們僅僅須要把 從數據庫獲取ICON 代碼提前到 從A

交換機設定

華為 交換機 端口 限制 進system-viewdis acl all觀察rule 對應的advanced ACl號碼是多少進對應的advanced ACL : acl number XXXX執行添加ruel XX XXXXX.......... 復制查詢到現有的修改添加ctrl+z

pycharm -- 導入主題(theme)

開發 pytho file 程序 idt 自己的 nbsp 感謝 RM 前情提要 眾所周知,隨著python語言的不斷流行,越來越多的程序員開始用python來開發自己的項目以及產品。 pycharm作為一款流行的IDE,被越來越多的程序員所接受和使用。 盡管pycha

android:將activity設定成對話方塊模式

方法有兩個: 第一種是activity繼承的是Activity public class FirstActivity extends Activity 這時候需要在Androidmanifest.xml中為<activity>標籤新增新屬性 <activity

iOS設定主題顏色方便使用

在AppDelegate.h檔案中宣告一個全域性變數: @property UIColor *zhuTiColor; 在AppDelegate.m中,新增:@synthesize zhuTiColor; 然後在 (BOOL)application:(UIApp

VS2017設定主題和程式碼字型

從Visual Studio Marketplace下載主題外掛 VS2017帶有一個軟體超市(Visual Studio Marketplace),可以和Eclipse一樣從軟體超市中下載各種外掛,來擴充套件VS的功能。VS2017自帶的主題比較少,但我們可以從軟體超市下載安裝。 按照如下步驟下載主題外

Linux下命令設定別名的方法

               我們都知道,在管理和維護Linux系統的過程中,將會使用到大量命令,有一些很長的命令或用法經常被用到,重複而頻繁的輸入某個很長命令或用法是不可取的。這時可以使用 別名 功能將這個過程簡單化。Linu

終端設定代理

通過cmd命令列執行某些命令,如果這些命令去國外站點下載什麼檔案,卻下載不下來的時候,我們就只能科學上網了。 但是 ShadowSocks 這類工具儘管開啟了全域性代理,但是cmd裡依舊無法下載成功。 這種全域性代理只針對使用IE代理的程式才全域性,不是像VPN那樣的全域性。當然也更

java中ChromeDriver設定代理IP

ChromeOptions options = new ChromeOptions(); // 設定代理ip String ip = "ip:port"; options.addArguments("--proxy-server=http://" + ip); WebDriver driver =

移動OMU,華MA5620設定網口共享

超變態的移動一個8口的MA5620,居然只能第一個口訪問資料,網上查了一下辦法修改掉 插上console口 賬號:root 密碼:mduadmin enable config display current-configuration undo 掉valan 102-107 把2