真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Android開發(fā)中怎么實(shí)現(xiàn)Activity切換

今天就跟大家聊聊有關(guān)Android開發(fā)中怎么實(shí)現(xiàn)Activity切換,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

創(chuàng)新互聯(lián)建站是一家專業(yè)提供陽(yáng)朔企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站制作、成都做網(wǎng)站、HTML5、小程序制作等業(yè)務(wù)。10年已為陽(yáng)朔眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。

具體如下:

這里要實(shí)現(xiàn)的目的是:

有3個(gè)Activity: A,B,C,從A中可以進(jìn)入B,B中可以進(jìn)入C,并且B和C之間可能需要多次相互切換,因此不能使用普通的startActivity-finish方式,因?yàn)橹匦聞?chuàng)建Activity比較耗時(shí)。當(dāng)這個(gè)Activity內(nèi)容比較多時(shí),重復(fù)創(chuàng)建很大的影響了流暢性。(即實(shí)現(xiàn)類似于QQ上 選擇照片頁(yè)面-選擇相冊(cè)頁(yè)面,這兩個(gè)頁(yè)面可能多次相互切換,所以不能多次創(chuàng)建)

1.從B進(jìn)入C或者從C進(jìn)入B時(shí),均使用startActivity的方式(不使用finish),并為intent添加參數(shù)FLAG_ACTIVITY_REORDER_TO_FRONT,即:

Intent intent = new Intent(B.this, C.class);
intent.addFlags(Intent.FLAG_ACTIVITY__TO_FRONT);
startActivity(intent);

在這種情況下,如果C之前沒有創(chuàng)建則會(huì)被創(chuàng)建,如果已經(jīng)創(chuàng)建了,則只會(huì)把C從Aciticy棧中搬到B的上面來,而不再重新創(chuàng)建。

2.在C中重寫onNewIntent方法,即:

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
}

該方法中的參數(shù)intent即為從B到C時(shí)startActivity的intent,在第二次進(jìn)入C時(shí),可以在此方法中根據(jù)從B中傳過來的數(shù)據(jù)更新C的頁(yè)面。(第一次進(jìn)入C時(shí)走onCreate,不會(huì)走onNewIntent)

3.在B中也重寫onNewIntent,和上述2相同。

4.在A和B中使用某個(gè)按鈕或返回鍵回到最開始的頁(yè)面A時(shí),同樣使用startActivity的方式,并為intent添加參數(shù)FLAG_ACTIVITY_CLEAR_TOP,這樣B和C都會(huì)被關(guān)閉(finish)

Intent intent = new Intent(this, A.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

5.同樣,在A中重寫onNewIntent方法,處理B或C返回時(shí)傳遞的信息。并且,在Manifest中為A添加屬性

android:launchMode="singleTop"

6.最后一個(gè)問題,由于從B到C和從C到B都使用的是startActivity的方式,因此Activity之間切換的動(dòng)畫都是 開啟新Activity 的樣式。例如,無論從B到C或者從C到B,新頁(yè)面都是從右側(cè)進(jìn)入,給人的感覺似乎一直在創(chuàng)建新Activity,很不友好。

解決這個(gè)問題的方法是自定義Activity之間切換的動(dòng)畫,目的是給用戶一種感覺:從C到B的時(shí)候是新開Activity(B從右側(cè)進(jìn)入),而從B到C的時(shí)候是“返回”(C從左側(cè)進(jìn)入)。只需一行代碼:

overridePendingTransition(in, out);

in:進(jìn)入的Activity的動(dòng)畫; out:退出的Activity的動(dòng)畫。

這里需要注意:

(1)對(duì)于普通的startActivity-finish方式,如果需要自定義Activity之間切換的動(dòng)畫,只需將上述代碼寫在startActivity或finish之后即可:
(2)但是,本文中由于使用了FLAG_ACTIVITY_REORDER_TO_FRONT的方式,上述動(dòng)畫將只在第一次創(chuàng)建頁(yè)面B或C的時(shí)候有效。解決方法是,將上述代碼寫在onNewIntent中。例如從B到C,則在C中onNewIntent中寫上這行代碼,指定C進(jìn)入的樣式和B退出的樣式。

7.動(dòng)畫資源:

(1)Activity從左側(cè)退出:

<?xml version="1.0" encoding="utf-8"?>

(2)Activity從右側(cè)退出:

<?xml version="1.0" encoding="utf-8"?>

(3)Activity從左側(cè)進(jìn)入:

<?xml version="1.0" encoding="utf-8"?>

(4)Activity從右側(cè)進(jìn)入:

<?xml version="1.0" encoding="utf-8"?>

看完上述內(nèi)容,你們對(duì)Android開發(fā)中怎么實(shí)現(xiàn)Activity切換有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


當(dāng)前名稱:Android開發(fā)中怎么實(shí)現(xiàn)Activity切換
網(wǎng)站URL:http://weahome.cn/article/ggdeid.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部