2013-06-11 6 views
1

나는 Phonegap + Jquery 모바일을 사용하는 안드로이드 애플 리케이션에서 일하고 있으며, 애플 리케이션을 시작할 때 하나의 스플래시 스크린이 보이지만, 그것은 정적 png 파일입니다. 사용자가 앱이로드 될 때까지 기다리는 동안 스플래시 화면에서 회 전자 또는 진행 막대와 같은 로딩 표시기를 요청합니다.안드로이드 phonegap 애플 리케이션의 스플래시 화면에 회 전자를 추가하는 방법

예를 들어 스플래시 화면에 진행률 표시 줄을 표시하지만 작동하지 않습니다. 아래 코드는 내 코드입니다.

주요 자바 :

super.onCreate(savedInstanceState); 

final Activity activity = this; 
final ProgressBar progessBar1; 
View footer = View.inflate(getContext(), R.layout.spinner, null); 
root.addView(footer); 

progessBar1 = (ProgressBar) findViewById(R.id.progressBar1); 

this.appView.setWebChromeClient(new WebChromeClient() { 

     public void onProgressChanged(WebView view, int progress) { 
      activity.setProgress(progress * 1000); 
      if(progress < 100 && progessBar1.getVisibility() == ProgressBar.GONE) { 
       progessBar1.setVisibility(ProgressBar.VISIBLE); 
      } 
      progessBar1.setProgress(progress); 
      if(progress == 100) { 
       progessBar1.setVisibility(ProgressBar.GONE); 
      } 

      Log.d("Progress", progress+""); 

     } 
    }); 

super.setIntegerProperty("splashscreen", R.drawable.splash); 
super.setStringProperty("loadingDialog", "Wait, loading packages ..."); 


super.loadUrl("file:///android_asset/www/index.html", 12000); 
super.setIntegerProperty("loadUrlTimeoutValue", 12000); 

와 고해상도/레이아웃에서 spinner.xml :

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <ProgressBar 
     android:id="@+id/progressBar1" 
     style="@android:style/Widget.ProgressBar.Horizontal" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentRight="true" 
     android:maxHeight="10dip" 
     android:minHeight="10dip" /> 

</LinearLayout> 

가 있지만 진행률 표시 줄을 표시하지 않습니다.

내 질문 :

  1. 사람이, 내가 잘못했던 곳을 가리 키도록 덕분에 도움이 될 수 있습니다.

  2. 실제로이 작업을 수행하는 방법은 실제로는 스플래시 화면에 회 전자를 표시하고 싶습니다.

답변

1

스플래시 이미지의 배경이 투명해야합니다.

스플래시 스크린은 전체 화면 공간을 뒤쪽에 숨 깁니다. 나는 스플래시 화면에 표시하지 않는 진행 막대를 가져 오려고했습니다(). 난 당신의 코드를 실행하는 시도

이 앱 조회이 줄에 널

this.appView.setWebChromeClient..... 

때문에 nullpointer 예외가 발생합니다.

나는 이전에 setwebchromeclient 다음 ((즉, 부하 URL에 코드를 변경) 그리고 시작 화면 및 진행 표시 줄을 함께 보여줍니다.

super.onCreate(savedInstanceState); 

    final Activity activity = this; 
    final ProgressBar progessBar1; 

    super.setIntegerProperty("splashscreen", R.drawable.splash); 
    super.setStringProperty("loadingDialog", "Wait, loading packages ..."); 
    super.loadUrl("file:///android_asset/www/index.html", 20000); 
    super.setIntegerProperty("loadUrlTimeoutValue", 20000); 


    View footer = View.inflate(getContext(), R.layout.testspinner, null); 
    root.addView(footer); 

    progessBar1 = (ProgressBar) findViewById(R.id.progressBar11); 

    this.appView.setWebChromeClient(new WebChromeClient() { 

     public void onProgressChanged(WebView view, int progress) { 
      activity.setProgress(progress * 1000); 
      if (progress < 100 
        && progessBar1.getVisibility() == ProgressBar.GONE) { 
       progessBar1.setVisibility(ProgressBar.VISIBLE); 
      } 
      progessBar1.setProgress(progress); 
      if (progress == 100) { 
       progessBar1.setVisibility(ProgressBar.GONE); 
      } 

      Log.d("Progress", progress + ""); 

     } 
    }); 

enter image description here

+0

안녕하세요 Catimos, 답장을 보내 주셔서 감사합니다, 난 아직도 그것을 얻을 수 없어, 어떻게 코드 샘플을 공유 할 수 있습니까? –

+0

코드가 정상입니다. 변경 작업은 필요하지 않습니다. splash.png (또는 splash.9.png)에는 배경이 투명해야합니다. 나는 그림 편집을 위해 paint.net을 사용한다. – catimos

+0

진행 표시 줄이 시작 화면 뒤에서 실행 중입니다. logcat을 체크하면 진행 값이 표시됩니다. – catimos

0

이 또한 보이지 않을 것이다 당신이 그것을 원한다면, 나는 믿습니다. 한 점에서 동일한 ProgressBar 위젯을 추가했고, 동일한 (못생긴) 로딩 바를 사용했습니다 - 적어도 내 droid3에서, OS 브라우저에서 웹 페이지를 볼 때 "원시"모양과 느낌에 좋지 않습니다.

+0

안녕 obitusis, 답장을 보내 주셔서 감사합니다, 나는 또한 느낀다, 당신은 진도를 보여주는 대신 더 나은 해결책이 있습니까? –

+0

html/css/javascript 솔루션이 여기에서 가장 간단한 대안이 될 수 있습니다. – obimod

0

예 코드의 진행 막대 ID가 레이아웃 파일의 ID와 일치하지 않기 때문에 nullpointer 예외가 발생합니다.

다음 줄

com.accoladewios.apps.jetabout.MainActivity$1.onProgressChanged(MainActivity.java:42) 

널 포인터 예외 라인 no.42를 나타낸다.

splash.xml의 진행률 표시 줄 ID는 progressBar1입니다. 반면 코드의 다음 줄은 위의 라인이 null이됩니다 실행 한 후 코드 변수 progessBar1를 디버깅 할 경우 ProgressBar1의

progessBar1 = (ProgressBar) findViewById(R.id.progressbar1); 

사용합니다.

이 문제를 해결하면 시작 화면에 진행률 표시 줄이 나타납니다.

+0

예, 당신이 그 사람입니다, 지금은 고마워요. –