我是新來的android編程,我最近搜索了一個對象的簡單的淡出動畫。我把它放在我的代碼中,測試它,它是波濤洶涌。我檢查了日誌,看到這個:I /編舞師(12759):跳過40幀!該應用程序可能在其主線程上做了太多工作
11-05 19:19:21.319:我/編舞(12759):跳過了40幀!應用程序可能在其主線程上做了太多工作。
這是我在MainActivity類
private MainActivity actMain;
FadeIn fadeClass = new FadeIn();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.view_switcher);
actMain = this;
new Thread() {
@Override
public void run() {
// If there are stories, add them to the table
try {
// code runs in a thread
runOnUiThread(new Runnable() {
@Override
public void run() {
fadeClass.animation(actMain);
}
});
} catch (final Exception ex) {
Log.i("---", "Exception in thread");
}
}
}.start();
}
而且從淡入類代碼:
private View view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void animation(Activity context) {
final View view = context.findViewById(R.id.fadeOutLayer);
Animation fadeOut = new AlphaAnimation(1f, 0f);
fadeOut.setDuration(3000);
fadeOut.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
view.setVisibility(View.GONE);
}
});
view.startAnimation(fadeOut);
}
謝謝!
對不起,愚蠢的問題,但我該怎麼辦運行onActivityCreated?這似乎並沒有工作: \t public void onActivityCreated(){ \t \t fadeClass.animation(actMain); \t} – 2014-11-05 17:47:50
在代碼中有一些我不明白的地方。爲什麼你的FadeIn類有一個onCreate方法?爲什麼它會誇大內容視圖?你想在包含在你的R.layout.activity_main中的視圖中應用動畫嗎?您可以將您的動畫方法放入MainActivity中,並將視圖(或視圖的引用)作爲參數傳遞。在onCreate中保存對動畫視圖的引用(findviewbyId),並在方法animation中使用此引用。關於onActivityCreated,我錯了(它在Fragments中使用),抱歉。在onResume或onCreate中使用它。 – Nescafemix 2014-11-06 10:41:11