Activity啟動的同時啟動幀動畫的幾種解決方案

2022-08-09 01:39:12 字數 1954 閱讀 4391

在做專案開發過程中,有http網路耗時請求,為了良好的使用者體驗,肯定會出現乙個載入框,之前用的是progressbar,通過控制bar的顯示和隱藏來體現載入的過程,但是出現了乙個問題,當請求到資料到資料部署到控制項上時,也有乙個耗時(在低端手機上盡顯),這時候就出現了bar卡頓的現象,給使用者造成卡的感覺,體驗極其不好,所以就想到了用另外一種方式:載入幀動畫。在發起請求時就開始幀動畫,資料部署完就停止動畫。

當activty啟動時我會發情http請求同時載入幀動畫,載入幀動畫也是乙個耗時過程,如果不做處理,會出現動畫停滯的現象,所以就得把動畫的預裝載和啟動放到兩個不同的方法中,在activity中肯定是先執行oncreate方法,所以在oncreate中先預裝載動畫,在onwindowsfocused方法中再啟動動畫,動畫就順利啟動了。但是在開發過程中又遇到乙個問題,我的專案首頁是個tabhost,初始化焦點都在actmain上,比如第二個選項卡所對應的act就不會執行onwindowsfocus方法,當時讓我很頭疼,後來終於找到了解決的方法。一下就列出act啟動時同時啟動幀動畫的幾種解決方案,我用的是3 和4,在不同情況下選用不同的啟動方案。

幀動畫:

第一種方式啟動幀動畫:(在activity啟動時會自動執行動畫)

animationdrawable ad;

imageview iv = (imageview) findviewbyid(r.id.animation_view);

iv.setbackgroundresource(r.drawable.animation);

ad = (animationdrawable) iv.getbackground();

iv.getviewtreeobserver().addonpredrawlistener(opdl);

//當乙個檢視樹將要繪製時產生事件,可以新增乙個其事件處理函式

onpredrawlistener opdl=new onpredrawlistener()

};第二種方式啟動動畫:(在activity啟動時會自動執行動畫)

imageview image = (imageview) findviewbyid(r.id.animation_view);

image.setbackgroundresource(r.anim.oldsheep_wait);

animationdrawable = (animationdrawable) image.getbackground();

runanim runanim=new runanim();

runanim.execute("");

class runanim extends asynctask

return "";

}} 第三種方式啟動動畫:(在activity啟動時會自動執行動畫)

imageview image = (imageview) findviewbyid(r.id.animation_view);

image.setbackgroundresource(r.anim.oldsheep_wait);

animationdrawable = (animationdrawable) image.getbackground();

image.post(new runnable()

});第四種方式啟動動畫:(在activity啟動時會自動執行動畫)

imageview image = (imageview) findviewbyid(r.id.animation_view);

image.setbackgroundresource(r.anim.oldsheep_wait);

animationdrawable = (animationdrawable) image.getbackground();

@override

public void onwindowfocuschanged(boolean hasfocus)

小小經驗,拿出來分享下,望大俠們吐槽!

activity 啟動模式

在android的中activity 有4種啟動方式 standard singletop singletask singleinstance 下面就分輕重點講講這些啟動方式。1 standard啟動方式 這種方式也是系統預設的。說的簡單點,我們在使用startactivity 方法的時候,系統就會...

activity啟動模式

1 對於使用standard 模式的活動,系統不會在乎這個活動是否已經在返回棧中存在,每次啟動都會建立該活動的乙個新的例項。例如a啟動a,a再接著啟動a,a繼續啟動a,然後再分別出棧,如圖所示 2 當活動的啟動模式指定為 singletop,在啟動活動時如果發現返回棧的棧頂已經是該活動,則認為可以直...

Activity啟動模式

兩種方式可以定義activity啟動模式 manifest intent intent定義的啟動模式優先於manifest 不管activity執行在乙個新的任務還是與啟動它的activity同樣的任務,返回鍵總是把使用者帶到之前的activity。然而,如果啟動乙個singletask的activ...