android重復執行
1. Android屏幕變化引起Fragment折疊的解決辦法
奇葩問題年年有,今天又碰到一個,最近呢,在項目開發維護中遇到這樣一個bug,vivo某某型號手機,三指頭同時下滑,瞅瞅效果圖,屏幕露出半個桌面來,而我們的應用布局發生重疊,不得不佩服我們的測試小姐姐,這樣奇葩問題,你都找得到,怎麼辦呢,網路谷歌唄!
這樣子,在當前頁面的Activity中的onCreate方法中輸出日誌,當頁面首次打開的時候有日誌輸出,當三個手指下滑的時候,又有日誌輸出,ok,到這里問題已經明朗,Activity重新創建了,顯然因為生命周期方法重復執行導致它承載的Fragment出現了布局折疊問題。
當手機屏幕變化笑銀培,比如橫豎屏切換,布局變化,屏幕尺寸改變等,在不經過設搏仿置時activity會被重新啟動創建,而且還不止一次,而要防止這碰唯個現象的發生,就需要配置configChanges這個屬性了。
找到了原因,那麼開始實施解決方案。
在AndroidManifest.xml中配置configChanges這個屬性如下
當配置完成後,再次發布程序到手機,日誌不在重復列印,頁面也能夠正常顯示。
這樣配置
android:configChanges="orientation"
那麼橫豎屏切換時就不會重新創建activity,那麼這個屬性到底是什麼意思呢?
首先,要了解Android默認在情況下,在系統的配置改變的情況下會重新創建activity,這個很好理解,因為系統環境變了,當然要重新創建activity來適應這個改變嘍。但是在很多時候我們不想在系統配置改變時重新載入activity,那麼就需要
android:configChanges=「xxx|xxx」這個樣子來搞定了。這里的xxx表這不同的系統配置的改變。
這里的xxx包含了很多種,就像我上邊寫的,可以用|來連接多個值。下面簡單介紹下各個值的不同含義:
喝飽水,閉上嘴,往前走,靠雙腿。
2. android兩個animation無限循環怎麼做
據我所知,想直接給AnimationSet設置重復,是不行的。不過你可以這樣來:
final int transDuration = 2000;
final int alphaDuration = 1000;
AnimationSet set = new AnimationSet(false);
set.setRepeatMode(Animation.RESTART);
TranslateAnimation translateAnimation = new TranslateAnimation(0, 0, 0, 300);
translateAnimation.setInterpolator(new Interpolator() {
@Override
public float getInterpolation(float arg0) {
float ret = arg0 / (1.0f * transDuration / (transDuration + alphaDuration));
return ret < 1 ? ret : 1;
}
});
translateAnimation.setRepeatCount(Animation.INFINITE);
translateAnimation.setDuration(transDuration + alphaDuration);
AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0);
alphaAnimation.setRepeatCount(Animation.INFINITE);
alphaAnimation.setDuration(alphaDuration);
alphaAnimation.setStartOffset(transDuration);
set.addAnimation(translateAnimation);
set.addAnimation(alphaAnimation);
view.startAnimation(set);
或者像其他所說的,通過在一個動畫結束後開始另外一個動畫的方式。
3. android R文件重復 該怎麼辦
試試用 android.R.drawable.xxx ,這個來引用找到系統自帶的圖標 這個圖標需要你在android.jar包裡面的res.drawable包。
首先,一般此類問題都是由於資源文件出問題導致的,即使資源文件並沒有報錯。
遇到此類問題,首先可以嘗試以下兩種方法:
1、右擊你的Android項目——>Android Tools——>Fix Project Properties即可。
2、清理下項目:使用菜單Project——>clean——>選中需要clean的項目
當但有時候eclipse也無法解決問題,此時就需要自己去找問題了。