Заставка запускает активность в зависимости от предпочтений? - PullRequest
0 голосов
/ 02 апреля 2012

Я делаю еще несколько обновлений для своего приложения и хочу, чтобы пользователь мог выбрать один из двух (хотя и очень похожих) пользовательских интерфейсов.У меня уже настроены оба стиля, но я все еще плохо знаком с созданием приложений.

По сути, вот что я хочу сделать:

  • На первомЗапустите показ заставки, которую я создал, с двумя кнопками и инструкциями о том, что делать (выберите, какой интерфейс они хотели бы иметь) и сохраните их выбор где-нибудь

  • При любом запуске послеприняли решение отправить их в выбранный ими пользовательский интерфейс и не показывать заставку

  • Есть опция (где-то в меню параметров), позволяющая им изменять пользовательский интерфейс приложения

Единственное, с чем у меня проблемы - это Java для заставки.Если кто-то может помочь мне с этим, тогда я ДОЛЖЕН быть в состоянии обработать все остальное самостоятельно.

Заранее спасибо!

Ответы [ 3 ]

1 голос
/ 02 апреля 2012

У меня есть решение, чтобы заставка появлялась только при первом запуске приложения с использованием общих настроек.Попробуйте это,

public class Splash extends Activity {
    private long splashDelay = 1500;
    int counter;
    SharedPreferences app_preferences;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);

        app_preferences = PreferenceManager.getDefaultSharedPreferences(this);
        counter = app_preferences.getInt("counter", 1);
        System.out.println("count is..." + counter);

        TimerTask task = new TimerTask() {
            @Override
            public void run() {
                finish();
                if (counter == 1) {
                    Intent in = new Intent(Splash.this, Yourclass1.class);
                    startActivity(in);
                } else {
                    Intent intent = new Intent().setClass(Splash.this, Yourclass2.class);
                    startActivity(hackbookIntent);
                }
                SharedPreferences.Editor editor = app_preferences.edit();
                editor.putInt("counter", +(counter + 1));
                editor.commit();

            }

        };

        Timer timer = new Timer();
        timer.schedule(task, splashDelay);
    }
}
1 голос
/ 02 апреля 2012

Проверьте ответ по этой ссылке для примера заставки: Android: Splash Screen повторно открывает приложение на второй странице, даже если приложение закрывается во время заставки Вместо того чтобы использовать поток для тайм-аута, подождите, пока пользователь нажмет одну из двух кнопок в макете и сохранит ее в общем предпочтении.

0 голосов
/ 02 апреля 2012

Попробуйте это

public class TestActivity extends Activity {
private SharedPreferences sharedPrefs;
private Editor prefsEditor;
private static final String APP_SHARED_PREFS = "com.demo.test.Login_preferences";
private static final String APP_CHOICE = "Choice";
private static final String APP_DESIGN = "Design";
private static final String APP_DEVEL = "Develop";

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    sharedPrefs = getSharedPreferences(APP_SHARED_PREFS,
            Context.MODE_PRIVATE);
    String choice = getValueforKey(APP_CHOICE);
    if(choice.length() == 0){
        setContentView(R.layout.main);
    Button design = (Button) findViewById(R.id.des);
    Button dev = (Button) findViewById(R.id.dev);

    design.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            saveKey(APP_CHOICE,APP_DESIGN);
            Intent intent = new Intent(TestActivity.this , Design.class);
            startActivity(intent);
            finish();
        }
    });

    dev.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            saveKey(APP_CHOICE,APP_DEVEL);
            Intent intent = new Intent(TestActivity.this , Develop.class);
            startActivity(intent);
            finish();
        }
    });
    }else if(choice.equals(APP_DESIGN)){
        Intent intent = new Intent(this , Design.class);
        startActivity(intent);
    }else if(choice.equals(APP_DEVEL)){
        Intent intent = new Intent(this , Develop.class);
        startActivity(intent);
    }


}

public String getValueforKey(String Key)
{
    this.sharedPrefs =getSharedPreferences(APP_SHARED_PREFS,
            Context.MODE_PRIVATE);
    return sharedPrefs.getString(Key, "");
}

public void saveKey(String Key, String value) {
    this.sharedPrefs = getSharedPreferences(APP_SHARED_PREFS,
            Context.MODE_PRIVATE);
     this.prefsEditor = sharedPrefs.edit();
    prefsEditor.putString(Key, value);
    prefsEditor.commit();
}
}
...