android开发启动画面,Android开发笔记——如何正确实现App启动页
啟動(dòng)頁(yè)在當(dāng)前的Android APP中有著廣泛的使用,在Material Design規(guī)范出來(lái)之前,Android官方是不推薦使用啟動(dòng)頁(yè)的,理由是讓用戶在啟動(dòng)APP后干等是一種浪費(fèi)時(shí)間的行為。Material Design 則制定了LaunchScreen 規(guī)范,用于在APP啟動(dòng)的時(shí)候合理的利用從啟動(dòng)到實(shí)際渲染出主界面之間這段時(shí)間,顯示一個(gè)LauncherScreen用來(lái)展示一些品牌元素等信息,避免顯示一個(gè)枯燥的空白界面。
APP啟動(dòng)過(guò)程
APP的啟動(dòng)過(guò)程可以參考這里。這里主要簡(jiǎn)單介紹下APP冷啟動(dòng)的過(guò)程。
APP冷啟動(dòng)開始時(shí),系統(tǒng)會(huì)做以下三個(gè)任務(wù):
加載并啟動(dòng)app
展示一個(gè)空白Window
創(chuàng)建app進(jìn)程
在上面的第二個(gè)步驟中,WindowManager 使用Activity主題中定義的背景和狀態(tài)欄顏色的屬性來(lái)繪制一個(gè)臨時(shí)的展示UI。
當(dāng)APP進(jìn)程創(chuàng)建后,APP進(jìn)程會(huì)做以下幾件事:
創(chuàng)建app對(duì)象
創(chuàng)建app的主進(jìn)程
創(chuàng)建MainActivity
inflating views
執(zhí)行Layout過(guò)程
執(zhí)行界面繪制
當(dāng)首次繪制完成后,系統(tǒng)會(huì)將之前展示的空白window移除,并展示創(chuàng)建好的MainActivity。在某些大型APP中,這個(gè)過(guò)程可能會(huì)有1-5秒。
啟動(dòng)頁(yè)實(shí)現(xiàn)原理
從上面的啟動(dòng)分析可以知道,WindowManager是根據(jù)Activity主題中定義的背景等屬性來(lái)創(chuàng)建一個(gè)臨時(shí)preview window的。我們?cè)贏ctivity的主題style中設(shè)置windowBackground屬性來(lái)設(shè)置這個(gè)preview window的顯示內(nèi)容。使用layer-list可以創(chuàng)建一個(gè)包含logo的drawable對(duì)象:
android:src="@drawable/logo"
android:gravity="center"/>
創(chuàng)建一個(gè)自定義Theme:
true
@null
true
實(shí)現(xiàn)方式
谷歌官方推薦的啟動(dòng)頁(yè)實(shí)現(xiàn)方式是在將LauncherScreen和MainActivity合二為一。首先創(chuàng)建按照之前說(shuō)的原理創(chuàng)建一個(gè)啟動(dòng)頁(yè)Theme,并在Manifest中將其作為MainActivity的默認(rèn)Theme。然后在MainActivity的onCreate方法中,在onCreate()和setContentView()之前使用setTheme方法,重新設(shè)置主界面的主題。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// Make sure this is before calling super.onCreate
setTheme(R.style.Theme_MyApp);
super.onCreate(savedInstanceState);
// ...
}
}
這樣做的好處有以下幾點(diǎn):
不需要額外的Activity實(shí)現(xiàn)啟動(dòng)頁(yè)
沒(méi)有overdraw的問(wèn)題,因?yàn)橹匦略O(shè)置主題后,之前的繪畫層也一并移除了。
當(dāng)然,如果你需要根據(jù)schema或者其他方式從啟動(dòng)頁(yè)路由到不同的界面的功能,使用單獨(dú)的啟動(dòng)頁(yè)Activity也是一個(gè)不錯(cuò)的選擇。
總結(jié)
以上是生活随笔為你收集整理的android开发启动画面,Android开发笔记——如何正确实现App启动页的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: c语言图片见水印,[求助]C语言 bmp
- 下一篇: android win7 共享网络打印机