2

私はたくさんの掘り下げを試みましたが、私のこの問題の問題にたどり着くことができません。問題は私のアプリのスプラッシュスクリーンにあります。スプラッシュスクリーンは、GoogleGalaxyネクサスを除くすべてのデバイス/タブレットで問題なく動作します。スプラッシュ画面を表示する代わりに、空白の黒い画面が表示され、アプリのメイン画面が開きます。

以下のlogcatを確認しましたが、犯人のように見える警告が1つあります。

03-26 22:51:34.878: D/dalvikvm(26506): GC_FOR_ALLOC freed 30K, 1% free 8662K/8720K, paused 19ms, total 20ms
03-26 22:51:34.894: I/dalvikvm-heap(26506): Grow heap (frag case) to 12.390MB for 4096016-byte allocation
03-26 22:51:34.917: D/dalvikvm(26506): GC_FOR_ALLOC freed <1K, 1% free 12661K/12724K, paused 20ms, total 20ms
03-26 22:51:34.925: D/dalvikvm(26506): GC_CONCURRENT freed <1K, 1% free 12661K/12724K, paused 2ms+1ms, total 15ms
03-26 22:51:34.996: D/dalvikvm(26506): GC_FOR_ALLOC freed <1K, 1% free 12661K/12724K, paused 9ms, total 10ms
03-26 22:51:35.058: I/dalvikvm-heap(26506): Grow heap (frag case) to 28.013MB for 16384016-byte allocation
03-26 22:51:35.089: D/dalvikvm(26506): GC_FOR_ALLOC freed 0K, 1% free 28661K/28728K, paused 31ms, total 31ms
03-26 22:51:35.128: D/dalvikvm(26506): GC_CONCURRENT freed <1K, 1% free 28661K/28728K, paused 12ms+2ms, total 36ms
03-26 22:51:35.347: I/System.out(26506): true
03-26 22:51:35.503: D/libEGL(26506): loaded /vendor/lib/egl/libEGL_POWERVR_SGX540_120.so
03-26 22:51:35.535: D/libEGL(26506): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX540_120.so
03-26 22:51:35.542: D/libEGL(26506): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX540_120.so
03-26 22:51:35.917: D/OpenGLRenderer(26506): Enabling debug mode 0
03-26 22:51:36.027: W/OpenGLRenderer(26506): Bitmap too large to be uploaded into a texture (1600x2560, max=2048x2048)
03-26 22:51:36.871: V/CheatsDB.db(26506): db exists
03-26 22:51:37.207: D/dalvikvm(26506): GC_FOR_ALLOC freed 6206K, 18% free 28757K/35028K, paused 14ms, total 14ms

「ビットマップが大きすぎてアップロードできません...」という行。私は自分のドローアブルをチェックしましたが、そのような大きなサイズの画像はありません。スプラッシュスクリーンで使用される背景画像は800x1280です。これは、現在すべてのデバイスで使用している唯一のpng画像であり、スプラッシュスクリーンは他のすべてのデバイスで正常に機能します。また、logcatによると、画像のサイズは1600 x 2560のように見えます。これは、Nexus10の解像度だと思います。そのサイズの特定の画像はどこにも追加していません。

SplashScreen.javaファイルコードも以下に投稿しています:

public class SplashScreen extends Activity {

private final int SPLASH_DISPLAY_TIME = 1000;
private Handler splashHandler = new Handler();
private Runnable splashRunnable;
private final String firstLaunchCheck = "firstLaunchCheck";
SharedPreferences mPrefs;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.splash_screen);

    mPrefs = PreferenceManager.getDefaultSharedPreferences(this);

    final Boolean isFirstLaunch = mPrefs.getBoolean(firstLaunchCheck, false);

    System.out.println(isFirstLaunch);

    splashRunnable = new Runnable() {
        @Override
        public void run() {

            if (!isFirstLaunch) {

                SharedPreferences.Editor editor = mPrefs.edit();
                editor.putBoolean(firstLaunchCheck, true);
                editor.commit();

                Intent mainIntent = new Intent(SplashScreen.this,
                        LookItUpTutorial.class);

                mainIntent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);

                startActivity(mainIntent);
                SplashScreen.this.finish();


            }
            else {

                Intent mainIntent = new Intent(SplashScreen.this,
                        LandingPage.class);
                startActivity(mainIntent);

                SplashScreen.this.finish();
            }
        }
    };

    splashHandler.postDelayed(splashRunnable, SPLASH_DISPLAY_TIME);
}

// Remove any call back activities when back / home button is pressed on
// SplashScreen
@Override
public void onPause() {
    super.onPause();

    splashHandler.removeCallbacks(splashRunnable);
    SplashScreen.this.finish();
}
}

また、私のレイアウトを追加します:

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

</LinearLayout>

誰かが私にこの問題の原因を追跡する方法についての指針を教えてもらえますか?画像サイズの警告と関係があると思いますが、ソースコードにそれほど大きな画像はありません。どんな助けでも大歓迎です。

立ち寄ってこの大きな投稿を読んでくれてありがとう。

4

2 に答える 2

2

あなたが投稿したレイアウトに基づいて、Androidが画像を拡大縮小している理由がわかりません=)しかし、少しの作業でそれを防ぐことができます。

レイアウトファイルから削除android:drawableし、LinearLayoutにIDを指定します。次に、ドローアブルを自分でコードにロードします。

View mylinearlayout = findViewById(R.id.mylinearlayout);
Options options = new Options();
options.inScaled = false; // explicitly disable all scaling
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.appbackground, options);
mylinearlayout.setBackground(new BitmapDrawable(bmp));
于 2013-03-27T06:37:44.223 に答える
1

私は数ヶ月前にあなたと同じ問題を抱えています。数時間調査した後。画像のサイズが大きすぎたようです(使用した画像の解像度は1400x1600です)。それから私はそれを600x800に再スケーリングしようとしました(品質はまだ許容できます)そしてそれは私のために働きました。

p / sJB4.1を実行しているGoogleGalaxyNexusでこの問題が発生しました。

于 2013-03-27T06:53:07.197 に答える