【问题标题】:Disabling Splash screen on pressing a button按下按钮时禁用启动画面
【发布时间】:2015-11-19 05:09:08
【问题描述】:

我设计了一个启动画面。 Java代码如下。在该屏幕中,我有一个名为“以后不再显示此屏幕”的按钮。按下此按钮后,无论应用程序启动多少次,以后都不得显示启动画面。我怎样才能做到这一点?提前致谢。

public class Qz1 extends Activity {
MyThread thread;
private class MyThread extends Thread
{
    public boolean bRun = true;

    @Override
    public void run()
    {
        try
        {
            sleep(3200);
            if (bRun)
            {
                startActivity(new Intent(getApplicationContext(), Qone.class));
                Qz1.this.overridePendingTransition(R.anim.newright,
                        R.anim.newleft);
            }
        }
        catch (InterruptedException e)
        {
            e.printStackTrace();
        }
    }
}


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_qz1);

    thread = new MyThread();
    thread.start();
}


public void round1(View v){

       Intent i = new Intent(Qz1.this, Qone.class);
       startActivity(i);
        this.overridePendingTransition(R.anim.newright,
                R.anim.newleft);
    }
}

【问题讨论】:

  • 保存在用户选择的首选项中不再显示。在第一个屏幕中检查它

标签: javascript android splash-screen dynamic-splash-screen


【解决方案1】:

为此使用SharedPreferences

您可以通过调用保存一个持久的布尔值

getPreferences(MODE_PRIVATE).edit().putBoolean("no_splash", true).commit();

然后您可以通过调用来检查该值

boolean noSplash = getPreferences(MODE_PRIVATE).getBoolean("no_splash", false);

如果noSplash 为真,则立即启动您的主Activity,而不是启动Thread

【讨论】:

  • 很少有错误弹出。您能否将您在评论中提到的代码添加到问题中的代码中。这对于解决错误很有用。
【解决方案2】:

User shared Preferences 来实现这个,创建一个类

public class Preference {

    private SharedPreferences sharedPreferences;
    private SharedPreferences.Editor editor;

    public Preference(Context context) {
        sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
    }

    public void writePreference(String key, Object value) {
        if(value instanceof Boolean) {
            editor = sharedPreferences.edit();
            editor.putBoolean(key, (Boolean) value);
            editor.commit();

        }
    }

    public Object readPreference(String key , Object defValue) {

        if(defValue instanceof Boolean)
            return sharedPreferences.getBoolean(key, (Boolean) defValue);
        else
            return null;
    }

    public Boolean getDisableSplash() {
        return (Boolean) readPreference("disable", false);
    }

    public void disableSplash(Boolean value)) {
        writePreference("disable", valve);
    }

}

并在您的主要创建一个 Preference 对象以读取和写入首选项

Preference preference = new Preference(YourActivity.this);
Boolean result = preference.getDisableSplash();

if(!result) {
    // dissable you splash activity here and move to next one
}

当你想简单地禁用它时

Preference preference = new Preference(YourActivity.this);
preference.disableSplash(true);

【讨论】:

  • @Zubair,我必须在创建之前包含公共类共享首选项吗?
  • 在你的 oncreate 方法中
【解决方案3】:

您可以通过创建委托活动来解决此问题,创建一个空活动并将其设置为启动器活动,

在委托活动 oncreate 上检查您的偏好,是否应该显示启动完成委托活动并显示它,否则显示您的主屏幕。

【讨论】:

    猜你喜欢
    • 2020-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 2021-04-09
    • 1970-01-01
    相关资源
    最近更新 更多