当前位置: 首页 > 知识库问答 >
问题:

间隔几秒钟后显示相同的活动

笪成周
2023-03-14

我开发了一个Android应用程序,一旦滑块完成显示MainActivity,它就会有闪屏,但在我的情况下,一旦显示MainActivity,它会在几秒钟(大约5秒)后自动重新加载(就像MainActivity第一次打开时一样打开)。

这是我的SplashScreenActivity

import android.content.Intent;
import android.graphics.Color;
import android.os.Build;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Html;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;

public class SplashScreenActivity extends AppCompatActivity {

    private ViewPager viewPager;
    private LinearLayout dots_layout;
    private TextView[] dots_count;
    private int[] layouts;
    private Button button_next;
    private Button button_skip;
    private SplashScreenAdapter splashScreenAdapter;
    private SharedPreference sharedPreference;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        sharedPreference = new SharedPreference(this);
        if (!sharedPreference.isFirstTimeLaunch()) {
            startFunctionsActivity();
            finish();
        }else{
            sharedPreference.setFirstTimeLaunch(false);
        }
        setStatusbarTransparent();
        setContentView(R.layout.activity_splash_screen);

        viewPager = findViewById(R.id.view_pager);
        dots_layout =(LinearLayout) findViewById(R.id.splashscreen_dots);
        button_next =(Button) findViewById(R.id.button_next);
        button_skip =(Button) findViewById(R.id.button_skip);

        button_next.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int currentpage = viewPager.getCurrentItem() + 1;
                if (currentpage < layouts.length) {
                    viewPager.setCurrentItem(currentpage);
                } else {
                    startFunctionsActivity();
                }
            }
        });
        button_skip.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            startFunctionsActivity();
            }
        });

        layouts = new int[]{R.layout.slider_one,R.layout.slider_two,R.layout.slider_three,R.layout.slider_four};
        splashScreenAdapter = new SplashScreenAdapter(layouts,getApplicationContext());
        viewPager.setAdapter(splashScreenAdapter);

        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }
            @Override
            public void onPageSelected(int position) {
                if (position == layouts.length - 1) {
                    button_next.setText("START");
                    button_skip.setVisibility(View.GONE);
                } else {
                    button_next.setText("NEXT");
                    button_skip.setVisibility(View.VISIBLE);
                }
                setDotStatus(position);
            }
            @Override
            public void onPageScrollStateChanged(int state) {
            }
        });
        setDotStatus(0);

    }
    private void setDotStatus(int page) {
        dots_layout.removeAllViews();
        dots_count = new TextView[layouts.length];
        for (int i = 0; i < dots_count.length; i++) {
            dots_count[i] = new TextView(this);
            dots_count[i].setText(Html.fromHtml("&#8226;"));
            dots_count[i].setTextSize(30);
            dots_count[i].setTextColor(Color.parseColor("#a9b4bb"));
            dots_layout.addView(dots_count[i]);
        }
        if (dots_count.length > 0) {
            dots_count[page].setTextColor(Color.parseColor("#ffffff"));
        }
    }
    private void startFunctionsActivity() {
        sharedPreference.setFirstTimeLaunch(false);
        startActivity(new Intent(SplashScreenActivity.this, FunctionsActivity.class));
        finish();
    }

    private void setStatusbarTransparent() {
        if (Build.VERSION.SDK_INT >= 21) {
            getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
            Window window = getWindow();
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            window.setStatusBarColor(Color.TRANSPARENT);
        }
    }
}

飞溅屏幕适配器

public class SplashScreenAdapter extends PagerAdapter {

    private LayoutInflater inflater;
    private int[] layouts;
    private Context context;

    public SplashScreenAdapter(int[] layouts, Context context) {
        this.layouts = layouts;
        this.context = context;
        inflater=LayoutInflater.from(context);
    }

    @Override
    public int getCount() {
        return layouts.length;
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view==object;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        View V = inflater.inflate(layouts[position],container,false);
        container.addView(V);
        return V;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        ((ViewPager) container).removeView((View) object);
        View v =(View)object;
        container.removeView(v);
    }
}

主要活动

public class MainActivity extends AppCompatActivity {

    private TextView textview_myQuote;
    private ImageView imageView_logo;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

        if (!isFirstTimeStartApp()) {
            startSplashScreenActivity();
            finish();
        }else{
            setFirstTimeStartStatus(false);
        }

        setContentView(R.layout.activity_main);

        textview_myQuote = (TextView) findViewById(R.id.splash_screen_text);
        imageView_logo = (ImageView) findViewById(R.id.splash_screen_logo);

        Animation animation = (Animation) AnimationUtils.loadAnimation(this,R.anim.welcomescreen_animation);
        textview_myQuote.startAnimation((Animation) animation);
        imageView_logo.startAnimation((Animation) animation);

        final  Intent intent = new Intent(this,SplashScreenActivity.class);

         /* Purpose : splash screen animation on logo and Textview */

        Thread timerThread = new Thread(){
            public void run(){
                try{
                    sleep(5000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                finally {
                    startActivity(intent);
                    finish();
                }
            }
        };
        timerThread.start();
    }
    private boolean isFirstTimeStartApp() {
        SharedPreferences ref = getApplicationContext().getSharedPreferences("splashscreen", Context.MODE_PRIVATE);
        return ref.getBoolean("Flag", true);
    }

    private void setFirstTimeStartStatus(boolean status) {
        SharedPreferences ref = getApplicationContext().getSharedPreferences("splashscreen", Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = ref.edit();
        editor.putBoolean("Flag", status);
        editor.commit();
    }
    private void startSplashScreenActivity() {
        setFirstTimeStartStatus(false);
        startActivity(new Intent(MainActivity.this, SplashScreenActivity.class));
        finish();
    }
}

仅从这个活动中,我调用了FunctionsActivity(MainActivity)。但几秒钟后它会重新加载。请引导我解决它。

共有1个答案

傅元章
2023-03-14

你完成了两次飞溅活动...

if (!sharedPreference.isFirstTimeLaunch()) { startFunctionsActivity(); return;}

我想足够了

 类似资料:
  • 我有一些链接,当我悬停在上面时,会显示与该链接相关的特定文本。我已经使用悬停功能来显示和隐藏div。 我还想添加这样的特性,即文本在几秒钟后自动改变,以显示下一个div的内容。即is循环通过DIVS。Hide div 1,show div 2,Hide 2,show div 3等。下面是显示悬停功能如何工作的代码。将鼠标悬停在右侧的链接上,左侧的文本将发生变化: null null

  • 问题内容: 我想知道,几秒钟后如何在jquery中隐藏div?例如Gmail的邮件。 我已经尽力了,但是无法正常工作。 问题答案: 这将在1秒(1000毫秒)后隐藏div。 如果您只想隐藏而不褪色,请使用。

  • 问题内容: 我在Django中的应用程序 可以 创建一些 非常大的SQL查询。我目前使用一个对象,作为我需要的数据,然后使用一个,以返回要显示给用户的内容。 显然,我可以让用户等待一分钟,同时正在执行这些许多查询集并从数据库中提取查询,然后返回此单一HTML页面。 理想情况下,我想在需要时更新页面,例如: 这可能吗? 问题答案: 我最近发现HttpResponse可以是生成器: 这将逐步将结果返回

  • 问题内容: 我想尝试通过以下方式使用@Schedule批注: 根据日志,CronService运行良好,但是计划的任务“ runsEveryMinute”不起作用。 使用EJB计划任务如何工作? 问题答案: 按照该Javadoc中的注释,默认值是: 除小时,分钟和秒外的所有字段;和 默认情况下为小时,分钟和秒。 通过将小时值保留为默认值,它要求计时器在午夜之后每分钟运行一小时(即00:00、00:

  • 我想在我的视频中添加一个水印,但我不想在视频开始时添加它,在视频开始后,大约60s,我希望水印每60s显示一次,持续30s。我应该怎么写:

  • 问题内容: 我已经编写了此示例程序,其中我想将日期转换为另一种格式。使用简单的日期格式时,我没有看到预期的日期。 我看到以下输出。第一种是使用简单的日期格式,第二种是手动翻译。 因此,如何使简单的日期格式输出与手动格式类似的值 问题答案: 看来您不能使用6位数字表示毫秒。您的程序关闭了11分17秒。660秒= 11分钟,您可以休息17秒。因此,它只能将您输入的内容从秒转换为分钟,因为它不能接受超过