Перенаправление на новую страницу после фонового исчезновения Android - PullRequest
0 голосов
/ 07 ноября 2011

Я хотел, чтобы в моем приложении сначала была затухающая картинка, прежде чем переходить на другую страницу с помощью потоков. Ниже приведен код, который я использовал, и он работал хорошо для меня. Тем не менее, он останавливается на белой странице в конце темы. Что я сделаю, чтобы перейти к следующему действию, не нажимая ничего? Или после того, как страница станет белой, какой код я должен использовать, чтобы перейти к следующему действию?

package com.kfc;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.view.*;
import android.widget.FrameLayout;
import android.widget.LinearLayout;

public class Intro extends Activity {
    LinearLayout screen;
    Handler handler = new Handler();
    int i;
    Intent intent;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.introxml);

        screen = (LinearLayout) findViewById(R.id.myintro);

        (new Thread(){
            @Override
            public void run(){
                for(i=0; i<255; i++){
                    handler.post(new Runnable(){
                        public void run(){
                            screen.setBackgroundColor(Color.argb(255, i, i, i));
                        }
                    });
                    // next will pause the thread for some time
                    try{ sleep(10); }
                    catch(Exception e){ break; }
                }
                for(i=255; i>0; i--){
                    handler.post(new Runnable(){
                        public void run(){
                            screen.setBackgroundColor(Color.argb(255, i, i, i));
                        }
                    });
                    // next will pause the thread for some time
                    try{ sleep(10); }
                    catch(Exception e){ break; }
                }
                startActivity(new Intent(Intro.this,NewKFCActivity.class));
            }
        }).start();
    }
}

1 Ответ

1 голос
/ 07 ноября 2011

После выхода из цикла for.Добавьте код, чтобы начать новое действие.

startActivity(new Intent(Intro.this,NewACtivity.class));

Вы должны поместить его вне цикла for.Если вы поместите его после метода запуска, он будет выполнен до завершения потока.Вам также может потребоваться определить область действия этой переменной с помощью Intro.this.Также не забудьте добавить новое действие в файл манифеста как

<activity android:name=".NewActivity"/>

Просто используйте этот

screen = (FrameLayout) findViewById(R.id.layout);
(new Thread(){
    @Override
public void run(){
    for(i=0; i<255; i++){
        handler.post(new Runnable(){
            public void run(){
                screen.setBackgroundColor(Color.argb(255, i, i, i));
            }
        });
        // next will pause the thread for some time
        try{ sleep(100); }
           catch(Exception e){ break; }
        }
        startActivity(new Intent(TabTester.this,NewKFCActivity.class));
    }
}).start();

, этот указатель должен указывать на объект действия Intro.Но внутри потока это будет относиться к текущему объекту потока (я не уверен, на что именно он указывает), поэтому вам нужно охватить его, используя «Intro.this», что означает «использовать это, что указывает на активность Intro»

Ваше фоновое изображение будет перезаписано, если вы используете setBackgroundColor для того же представления.Способ сделать это будет использовать для макетов, внешний макет будет иметь фоновое изображение, а внутренний макет будет тот, к которому применяется setBackgroundColor.Например:

Вам также необходимо изменить код

screen.setBackgroundColor(Color.argb(255, i, i, i));

на

screen.setBackgroundColor(Color.argb(120, i, i, i));

Значение альфа установлено на 255, что означает непрозрачный и не будетпоказать фоновое изображение.

...