2017-10-11 17 views
1

一部の携帯電話(サムスンS6またはS7など)はAndroidのwebviewアプリを起動できません。これは私がGoogle Playストアから得たものである:Android App(Webview)がスプラッシュスクリーンでクラッシュする

java.lang.RuntimeException: 

    at android.view.DisplayListCanvas.throwIfCannotDraw (DisplayListCanvas.java:260) 
    at android.graphics.Canvas.drawBitmap (Canvas.java:1420) 
    at android.graphics.drawable.BitmapDrawable.draw (BitmapDrawable.java:545) 
    at android.widget.ImageView.onDraw (ImageView.java:1286) 
    at android.view.View.draw (View.java:18318) 
    at android.view.View.updateDisplayListIfDirty (View.java:17296) 
    at android.view.View.draw (View.java:18080) 
    at android.view.ViewGroup.drawChild (ViewGroup.java:3966) 
    at android.view.ViewGroup.dispatchDraw (ViewGroup.java:3752) 
    at android.view.View.updateDisplayListIfDirty (View.java:17291) 
    at android.view.View.draw (View.java:18080) 
    at android.view.ViewGroup.drawChild (ViewGroup.java:3966) 
    at android.view.ViewGroup.dispatchDraw (ViewGroup.java:3752) 
    at android.view.View.updateDisplayListIfDirty (View.java:17291) 
    at android.view.View.draw (View.java:18080) 
    at android.view.ViewGroup.drawChild (ViewGroup.java:3966) 
    at android.view.ViewGroup.dispatchDraw (ViewGroup.java:3752) 
    at android.view.View.updateDisplayListIfDirty (View.java:17291) 
    at android.view.View.draw (View.java:18080) 
    at android.view.ViewGroup.drawChild (ViewGroup.java:3966) 
    at android.view.ViewGroup.dispatchDraw (ViewGroup.java:3752) 
    at android.view.View.updateDisplayListIfDirty (View.java:17291) 
    at android.view.View.draw (View.java:18080) 
    at android.view.ViewGroup.drawChild (ViewGroup.java:3966) 
    at android.view.ViewGroup.dispatchDraw (ViewGroup.java:3752) 
    at android.view.View.updateDisplayListIfDirty (View.java:17291) 
    at android.view.View.draw (View.java:18080) 
    at android.view.ViewGroup.drawChild (ViewGroup.java:3966) 
    at android.view.ViewGroup.dispatchDraw (ViewGroup.java:3752) 
    at android.view.View.draw (View.java:18321) 
    at com.android.internal.policy.DecorView.draw (DecorView.java:919) 
    at android.view.View.updateDisplayListIfDirty (View.java:17296) 
    at android.view.ThreadedRenderer.updateViewTreeDisplayList (ThreadedRenderer.java:692) 
    at android.view.ThreadedRenderer.updateRootDisplayList (ThreadedRenderer.java:698) 
    at android.view.ThreadedRenderer.draw (ThreadedRenderer.java:806) 
    at android.view.ViewRootImpl.draw (ViewRootImpl.java:3128) 
    at android.view.ViewRootImpl.performDraw (ViewRootImpl.java:2924) 
    at android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:2516) 
    at android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1515) 
    at android.view.ViewRootImpl$TraversalRunnable.run (ViewRootImpl.java:7091) 
    at android.view.Choreographer$CallbackRecord.run (Choreographer.java:927) 
    at android.view.Choreographer.doCallbacks (Choreographer.java:702) 
    at android.view.Choreographer.doFrame (Choreographer.java:638) 
    at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:913) 
    at android.os.Handler.handleCallback (Handler.java:751) 
    at android.os.Handler.dispatchMessage (Handler.java:95) 
    at android.os.Looper.loop (Looper.java:154) 
    at android.app.ActivityThread.main (ActivityThread.java:6682) 
    at java.lang.reflect.Method.invoke (Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1520) 
    at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1410) 

私のスプラッシュスクリーンのようです、これはそれがある:

activity_main.xml:

//splashscreen fullscreen 
<ImageView 
    android:id="@+id/splash1" 

    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:scaleType="centerCrop" 
    android:adjustViewBounds="true" 
    android:screenOrientation="portrait" 
    android:visibility="visible" 
    android:src="@drawable/redsplashscreen" 
    /> 

//shows the webview fullscreen 
<WebView 
    android:id="@+id/web1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:visibility="gone" 

MainActivity.javaスニペット:

boolean splashFinished = false; 

    @Override 
    public void onPageFinished(WebView view, String url) { 
     //loads splashscreen once till website is loaded 
     if (!splashFinished) { 
      //hides loading image 
      findViewById(R.id.splash1).setVisibility(View.GONE); 
      //shows webview 
      findViewById(R.id.web1).setVisibility(View.VISIBLE); 
      splashFinished = true; 
     } 

ここでは、イメージを「drawable」 - フォルダーから「drawable-xxhd」に移動する必要がありますnd私はそれを試しましたが、APKを作成したい場合、アンドロイドスタジオはそれを元に戻してxmlのコードを変更します。

私はイメージが本当に大きくないので、サイズを1.7MBから0.7MBに変更しました。

+0

詳細コードを表示できますか? – KeLiuyue

+0

あなたは何をもっと見たいですか? – electromomo

+0

詳細MainActivityに関するLogcatとその他のコード。 – KeLiuyue

答えて

0

私の場合、一部の電話機は大きなスプラッシュ画像ファイルを処理できません。 私のものは1.xMBで、ファイルサイズを小さくしてもクラッシュはなくなりました。

ファイルサイズを小さくします。

+0

イメージは1MBより小さい。 – electromomo

+0

他の画像で試してみてください。非常に少ない。 –

0

私は解決策を持っています:android studioの中で私は "drawable-xxhdpi" -folderを作成しました( "res" - > new - >ディレクトリ)。そして私はこのスプラッシュスクリーンイメージをこのフォルダの中に入れます。このようにして、aactivity_main.xmlの内容は変更されません。

関連する問題