質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.46%

  • Java

    16227questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Android Studio

    4373questions

    Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

FrameLayout.background()がnullではないのに、背景画像が真っ暗です。

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 648

takeji

score 15

画面Bから画面Aへ遷移して素早く再びBへ遷移すると、Bでロードされるはずの背景画像がロードされず?真っ暗になります。

調べるため画面Bで、OnWindowFocusChange()内でそのレイアウトであるFrameLayout.background()を出力するとハッシュコードが入っているので画像はロードされています。
なのに背景は真っ暗になってしまいます。原因は何かご教授頂けますでしょうか。

心当たりといえば、画面AでobjectAnimatorでアニメーションしていまして、そのアニメーション途中でBへ素早く遷移しているので、それでしょうか。

よろしくお願いいたします。

【追記】

B画面
    @Override
    public void run() {
        setVolumeControlStream(AudioManager.STREAM_MUSIC);
        setContentView(R.layout.layout11);

        context = getApplicationContext();
        Activity11.setFlg_go_on_bgm_menu(false);

        if (globals == null) {
            globals = (Globals) this.getApplication();
        }
        if (globals.getMenu_bgm() == null) {
            globals.menu_load(this);
        }

        se = new MySe(this);

        intent = getIntent();
        extras = intent.getExtras();
        flg_show_tips = (Boolean) (extras != null ? extras.getBoolean("FLG_SHOW_TIPS", flg_show_tips) : false);


        fl1 = (FrameLayout) findViewById(id.fl1);
        fl1.setBackgroundResource(R.drawable.bg_light);//ここの背景が真っ暗になる


        Button backbutton = (Button) findViewById(id.backbutton);
        MyResize mr = new MyResize(context);
        backbutton.setTextSize(mr.dp_width() / getResources().getInteger(R.integer.divide_txt_size_btn_l));
        makeBtn();

        progressDialog.dismiss();
    }


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        progressDialog = new ProgressDialog(this);
        progressDialog.setTitle("ロード中");
        progressDialog.setMessage("少々お待ち下さい");
        progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        progressDialog.show();
        thread = new Thread(this);
        thread.start();
        try {
            thread.join();
        } catch (InterruptedException e1) {
            e1.printStackTrace();
        }
    }


    @Override
    protected void onResume() {
        super.onResume();
        if (globals.getMenu_bgm() != null) {
            if (!globals.getMenu_bgm().isPlaying()) {
                globals.menu_start();
            }
        }
    }

    @Override
    protected void onPause() {
        super.onPause();
        if (!Activity11.getFlg_go_on_bgm_menu()) {
            if (Activity11.getGlobals().getMenu_bgm() != null) {
                if (Activity11.getGlobals().getMenu_bgm().isPlaying()) {
                    Activity11.getGlobals().menu_pause();
                }
            }
        }
    }

    private void makeBtn() {
        button = new Button(this);
        button = (Button) findViewById(id.backbutton);
        button.setText("back");
        button.setOnClickListener(new OnClickListener() {
            public void onClick(View view) {
                Activity11.setFlg_go_on_bgm_menu(false);
                se.se_back();
                intent = new Intent(Activity11.this, Activity10.class);
                intent.putExtra("FLG_SHOW_TIPS", flg_show_tips);
                startActivity(intent);
                finish();
            }
        });
    }
A画面

    @Override
    public void run() {
        setVolumeControlStream(AudioManager.STREAM_MUSIC);
        setContentView(R.layout.layout10);

        context = getApplicationContext();
        if(mr == null)mr = new MyResize(context);
        if(myBgm == null)myBgm = new MyBgm(this);
        myBgm.title_load();
        if(!myBgm.getBgm_title().isPlaying())myBgm.title_start();
        if(se == null)se = new MySe(this);

        intent = getIntent();
        extras = intent.getExtras();
        flg_show_tips = (Boolean) (extras != null ? extras.getBoolean("FLG_SHOW_TIPS", flg_show_tips) : false);

        fl2 = (FrameLayout) findViewById(id.fl2);
        fl2.setBackgroundResource(R.drawable.bg_light);

        title1 = (TextView) findViewById(id.title1);
        Button go_btn = (Button) findViewById(id.go_btn);
        go_btn.setText("start");
        go_btn.setTextSize(mr.dp_width() / 20f);
        title1.setText("title");
        title1.setTextSize(mr.dp_width() / 7.0f);
        title1.setY(-250.0f);

        makeBtn();
        progressDialog.dismiss();
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        progressDialog = new ProgressDialog(this);
        progressDialog.setTitle("ロード中");
        progressDialog.setMessage("少々お待ち下さい");
        progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        progressDialog.show();
        thread = new Thread(this);
        thread.start();
        try {
            thread.join();
        } catch (InterruptedException e1) {
            e1.printStackTrace();
        }
    }


    @Override
    protected void onResume() {
        super.onResume();
        if (myBgm != null) {
            if (!myBgm.getBgm_title().isPlaying()) {
                myBgm.title_start();
            }
        }
        title1.setVisibility(View.VISIBLE);
        title1.setPivotX(0.0f);
        title1.setPivotY(0.0f);
        scaleX = PropertyValuesHolder.ofFloat("scaleX", 1.7f, 1.0f);
        scaleY = PropertyValuesHolder.ofFloat("scaleY", 2.7f, 1.0f);
        anim_title1 = ObjectAnimator.ofPropertyValuesHolder(title1, scaleX, scaleY);
        anim_title1.setDuration(5000);
        anim_title1.start();
    }

    @Override
    protected void onPause() {
        super.onPause();
        if (myBgm != null) {
            if (myBgm.getBgm_title().isPlaying()) {
                myBgm.title_pause();
            }
        }
    }
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • yona

    2017/03/14 14:21

    画面遷移の実装内容と画像のロードについて具体的に書いてださい。

    キャンセル

  • takeji

    2017/03/14 16:09

    ソースコードを追加しました。冗長で申し訳ありませんが、よろしくお願いいたします。

    キャンセル

  • yona

    2017/03/14 16:25

    クラスが異なるならコードは分けてください。

    キャンセル

  • takeji

    2017/03/15 13:42

    申し訳ありません。修正します。

    キャンセル

回答 2

0

画面AのonResumeにあるanim_title1.start()をコメントアウトして実行してください。

また、あなたのコードはJavaのコーディングスタイルからかけ離れています。
コードを書くときはあなたの得意な言語のコーディングスタイルではなく、その言語のコーディングスタイルで書いた方が他の人に読んでもらいやすくなります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/03/15 14:10

    anim_title1.start()をコメントアウトにしても、素早く遷移すると背景が真っ暗になりました。
    animationではありませんでした。

    そしてコーディングスタイルを少しずつ守るようにします。

    キャンセル

  • 2017/03/15 21:04

    では次に背景を設定している箇所でsetBackgroundColorで赤色を設定し、どうなるかを確認してください。

    キャンセル

  • 2017/03/17 01:09

    赤色を設定すると、画面を普通に表示する時は背景が赤くなりますが、素早く遷移させての表示だと真っ暗になりました。

    キャンセル

0

run() ってthreadですか?
もしそうなら、UIスレッド外でUIいじれないのだけど。

Activity.runOnUiThread(new Runnable() {
        @Override
        public void run() {
            // ここに処理
        }
    });


あたりで試してみていいかもですね。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.46%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Java

    16227questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Android Studio

    4373questions

    Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。