2010-02-08 3 views
18

나는 간단한 어플리케이션을 가지고있다. 넷에서 XML 피드를로드하기 시작한다. 뉴스 목록을 검색 한 다음 선택한 뉴스 항목의 세부 정보를 읽을 수있다. 내가하고 싶은 것은 스플래시 화면입니다. 즉, 응용 프로그램을 클릭하자마자 이미지 (응용 프로그램 이름)를 표시하고로드 한 후에 만 ​​뉴스 목록을 표시해야합니다.시작 화면을 만드는 방법 (앱 시작시 화면이 표시됨)?

나는 비슷한 문제에 대해 읽었고 보통 사람들은 FrameLayout을 사용한다고 말했지만 실제로는 분류 할 수 없다. 시작된 첫 번째 활동에서이 작업을 수행 할 수 있는지 확실하지 않습니다. 어쩌면이 스플래시 이미지를 하나의 활동에 표시하고 내 뉴스 목록을 표시하는 활동 만 호출해야합니까?

나는 수행 할 때

+4

스플래시 화면은 아무 도움이되지 않지만 앱을 더 느리게 시작할 수 있음을 알고 있습니다. 사용하지 마십시오. – Johan

+0

나는 그 단점이 스플래시 화면에서 얻게 될 이점보다 훨씬 크다고 생각한다. –

+21

2 초 또는 3 초 (또는 그 이상) 동안 검은 색 화면을 보지 않고도 단점을 보지 않고, 이미지를보고 있습니다. 내 생각에 훨씬 좋았습니다. 적어도 앱이 시작되었음을 알았습니다. – pambuk

답변

35

안드로이드 당신이 시작 화면을 사용하여 활용 제안 ... 개발하는 동안 아이폰은 안드로이드의 응용 프로그램의 매니페스트에서이 기능을 가지고 좋은 것, 응용 프로그램 설정에서 시작 화면을 설정할 수 있다는 사실을 알고 시작시에 긴 계산. 안드로이드 개발자 웹 사이트에서 발췌 한 내용 - 응답 성 설계 :

"응용 프로그램에 시간이 많이 소요되는 초기 설정 단계가있는 경우 스플래시 화면을 보거나 기본보기를 가능한 빨리 렌더링하고 정보를 비동기 적으로 채우는 것이 좋습니다 어느 경우 든 사용자가 응용 프로그램이 고정되어 있지 않다고 인식하지 못하게하려면 진행 상황을 어떻게 든 표시해야합니다. " - Android 개발자 사이트

AsyncTask를 사용하여 진행중인 대화 상자를 표시하는 활동을 만들면 인터넷에서 XML 피드를 다운로드하여 구문 분석하고 필요한 경우 db에 저장 한 다음 뉴스 피드를 표시합니다. 도움이


public class SplashScreen extends Activity{ 
    @Override 
    public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     // set the content view for your splash screen you defined in an xml file 
     setContentView(R.layout.splashscreen); 

     // perform other stuff you need to do 

     // execute your xml news feed loader 
     new AsyncLoadXMLFeed().execute(); 

    } 

    private class AsyncLoadXMLFeed extends AsyncTask<Void, Void, Void>{ 
     @Override 
     protected void onPreExecute(){ 
      // show your progress dialog 

     } 

     @Override 
     protected Void doInBackground(Void... voids){ 
      // load your xml feed asynchronously 
     } 

     @Override 
     protected void onPostExecute(Void params){ 
      // dismiss your dialog 
      // launch your News activity 
      Intent intent = new Intent(SplashScreen.this, News.class); 
      startActivity(intent); 

      // close this activity 
      finish(); 
     } 

    } 
} 

희망 : 마무리를 호출하여 시작 활동을 닫습니다()

여기 골격 코드입니다!

+1

문제 해결, 감사 :) – pambuk

+1

Ultimate :) thanks – Naruto

+0

안녕하세요, 여러 개의 피드가 있고 두 번째 피드로드를 시작하고 싶습니다. 첫 번째 피드가 완료된 후 첫 번째 활동에 표시됩니다. 이 예제에서는 동시 스레드를 어떻게 수행합니까? – Zac

1

이 문제는 여전히 오래되었지만 여전히이 문제에 직면 해있는 사람들에게는이 간단한 을 사용하여 스플래시 화면을 표시 할 수 있습니다.

SplashBuilder 
     .with(this, savedInstanceState) 
     .show(); 

스플래시 화면이 표시되는 동안 실행될 SplashTask을 설정할 수 있습니다.

관련 문제