2015-01-25 5 views
0

내 안드로이드 애플 리케이션을위한 스플래시 화면에서 일하고 있습니다. 화면은 내 MainActivity.java에서 시작하는데, onCreate() 메소드에는 다음 코드가 들어 있습니다. 또한 같은 액티비티 클래스는 onResume() 메서드에서 맵을로드하고 activity_main.xml 인 새 레이아웃을로드합니다. 그 XML은 검은 화면과 배경 화면이 없습니다.응용 프로그램을로드하는 스플래시 화면 및로드 백분율을 보여주는 텍스트

MainActivity.java는

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
       WindowManager.LayoutParams.FLAG_FULLSCREEN); 

     setContentView(R.layout.loading_screen); 
     progressBar = (ProgressBar) findViewById(R.id.progressBar1); 
     textView = (TextView) findViewById(R.id.textView1); 

     new Thread(new Runnable() { 
      public void run() { 
       while (progressStatus < 100) { 
        progressStatus += 1; 

        handler.post(new Runnable() { 
         public void run() { 
          progressBar.setProgress(progressStatus); 
          textView.setText(progressStatus + "/" 
            + progressBar.getMax()); 
         } 
        }); 
        try { 

         Thread.sleep(200); 
        } catch (InterruptedException e) { 
         e.printStackTrace(); 
        } 
       } 
      } 
     }).start(); 

     compass = new CompassSensor(this, compassHandler); 
    } 

loading_screen.xml 내 레이아웃은 다음과 같다.

loading_screen.xml는

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

<RelativeLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:background="@drawable/splash_screen_loading" xmlns:android="http://schemas.android.com/apk/res/android"> 

     <ProgressBar 
      android:id="@+id/progressBar1" 
      style="?android:attr/progressBarStyleLarge" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      android:layout_centerHorizontal="true" 
      android:layout_marginBottom="25dp" /> 

     <TextView 
      android:id="@+id/textView1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_alignTop="@+id/progressBar1" 
      android:layout_marginLeft="15dp" 
      android:text="Large Text" 
      android:textAppearance="?android:attr/textAppearanceLarge" /> 
    </RelativeLayout> 

내가 대향있어 문제점은 검은 화면 앱 로딩 중에 도시이다. 문제를 디버그하려했지만 모든 노력은 쓸모가 없었습니다. Plz 도움.

+0

UI 스레드에서 Looper.getMainLooper()를 사용하여 상태를 변경하는 방법은 무엇입니까? 또한 onResume()에서지도를로드하는 방법은 무엇입니까? AsyncTask를 사용하여지도 데이터를로드 할 수 있다고 생각합니다. – Wonil

답변

1

시각적으로 변경하려는 경우 onCreate에서 시도하지 마십시오. onCreate 동안 사용자에게 아무 것도 표시되지 않습니다. 나는 Thread.sleep(200)을 알고 있습니다.

onResume, ,, super.onResume 이후로 시도해보십시오. 당신이 그것을 묘사 한 방식으로, R.layout.loading_screen도 나타나지 않을 것입니다.

또한지도를로드하는 데 AsyncTask을 사용하는 경우 개발자는 진행 상황 게시 방법을 알 수 있습니다. 다음을보십시오 : AsyncTask. 어쩌면 비동기 작업에도 이전 작업 (진행률은 R.layout.loading_screen)을 추가 할 수 있습니다.

+0

감사합니다 @ 니콜라 Tulimirovic, 나는 스플래시 화면을 실행할 수 있지만 지금 문제는지도를로드하는 과정이 onResume에서 시작되어야한다는 것입니다. .sqldb 파일이 특정 폴더에 있습니다. 이제는 super.resume() 전에이 코드를 전부 넣으면 스플래시 화면이 완벽하게 실행되지만 Hunder 백분율을로드하면 코드가 실행되지 않고 논리적으로 보입니다. 내가 코드를 건너 뛸 수 없지만 내가 묻는 것은 응용 프로그램이 프로세스를로드하는 동안 왜 스플래시 화면이 MainActivity.java의 oncreate 메서드에서 작동하지 않는 것입니까? '코드' –

+0

@SaifHaider : MainAcitivity를 시작하는 소개 활동 (기본, 실행기)을 추가하는 것을 고려 했습니까? 나는 이것이 절름발이로 보일지 모르지만, CleanArea (MainActivity에 대한 레이아웃 선택이 없음)가 될 수도 있습니다. intent-filter와 관련하여 MainActivity가 이제 보이는 것처럼 IntroActivity가 보이도록 매니페스트를 편집하는 것을 잊지 마십시오. –

+0

당신은 옳습니다. 나는 ur 조언을 위해 고맙습니다. –