2017-08-08 2 views
0

Ich benutze die UTILLS-Klasse für das Thema auf Knopfdruck ändern, gibt es 8 Schaltflächen mit Bildhintergrund. Hier ist meine Utills KlasseOn Button klicken Sie auf das Design der gesamten Anwendung dynamisch ändern und speichern

public class Utills { 

public static boolean isPurchsed =true; 
private static int sTheme; 
public final static int THEME_DEFAULT = 0; 
public final static int THEME_ONE = 1; 
public final static int THEME_TWO = 2; 
public final static int THEME_THREE = 3; 
public final static int THEME_FOUR = 4; 
public final static int THEME_FIVE = 5; 
public final static int THEME_SIX = 6; 
public final static int THEME_SEVEN = 7; 
/** 
* Set the theme of the Activity, and restart it by creating a new Activity of the same type. 
*/ 
public static void changeToTheme(Activity activity, int theme) 
{ 
    sTheme = theme; 
    activity.finish(); 
    activity.startActivity(new Intent(activity, activity.getClass())); 
} 
/** Set the theme of the activity, according to the configuration. */ 
public static void onActivityCreateSetTheme(Activity activity) 
{ 
    switch (sTheme) 
    { 
     default: 
     case THEME_DEFAULT: 
      activity.setTheme(R.style.MyTheme); 
      break; 
     case THEME_ONE: 
      activity.setTheme(R.style.MySecondTheme); 
      break; 
     case THEME_TWO: 
      activity.setTheme(R.style.MyThirdTheme); 
      break; 
     case THEME_THREE: 
      activity.setTheme(R.style.MyFourthTheme); 
      break; 
     case THEME_FOUR: 
      activity.setTheme(R.style.MyFifthTheme); 
      break; 
     case THEME_FIVE: 
      activity.setTheme(R.style.MySixthTheme); 
      break; 
     case THEME_SIX: 
      activity.setTheme(R.style.MySeventhTheme); 
      break; 
     case THEME_SEVEN: 
      activity.setTheme(R.style.MyLastTheme); 
      break; 
    } 
} 

Und hier ist Aktivitätsklasse

public class ChangeBackgroundActivity extends AppCompatActivity { 


Button bck1, bck2, bck3, bck4, bck5, bck6,bck7,bck8; 


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

    Utills.onActivityCreateSetTheme(this); 
    setContentView(R.layout.activity_change_background); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_changebackground); 
    setSupportActionBar(toolbar); 


    bck1 = (Button)findViewById(R.id.btn_bck1); 
    bck1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Utills.changeToTheme(ChangeBackgroundActivity.this, Utills.THEME_DEFAULT); 
     } 
    }); 

    bck2 = (Button)findViewById(R.id.btn_bck2); 
    bck2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Utills.changeToTheme(ChangeBackgroundActivity.this, Utills.THEME_ONE); 
     } 
    }); 


    bck3 = (Button)findViewById(R.id.btn_bck3); 
    bck3.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Utills.changeToTheme(ChangeBackgroundActivity.this, Utills.THEME_TWO); 
     } 
    }); 

    bck4 = (Button)findViewById(R.id.btn_bck4); 
    bck4.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Utills.changeToTheme(ChangeBackgroundActivity.this, Utills.THEME_THREE); 
     } 
    }); 
    bck5 = (Button)findViewById(R.id.btn_bck5); 
    bck5.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Utills.changeToTheme(ChangeBackgroundActivity.this, Utills.THEME_FOUR); 
     } 
    }); 
    bck6 = (Button)findViewById(R.id.btn_bck6); 
    bck6.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Utills.changeToTheme(ChangeBackgroundActivity.this, Utills.THEME_FIVE); 
     } 
    }); 
    bck7 = (Button)findViewById(R.id.btn_bck7); 
    bck7.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Utills.changeToTheme(ChangeBackgroundActivity.this, Utills.THEME_SIX); 
     } 
    }); 
    bck8 = (Button)findViewById(R.id.btn_bck8); 
    bck8.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Utills.changeToTheme(ChangeBackgroundActivity.this,Utills.THEME_SEVEN); 
     } 
    }); 

} 

Wenn ich meine Anwendung zu schließen und es die Standard-Theme Neustart wieder auf ganze Anwendung eingestellt. So speichern Sie das Design für eine Anwendung aus der Utils-Klasse. Wenn Sie also meine Anwendung schließen und erneut starten, wird das ausgewählte Design für die gesamte Anwendung festgelegt.

Antwort

1

Sie müssen Ihr Thema irgendwo persistieren. Sie können zum Beispiel SharedPreferences dafür verwenden. Dann rufen Sie das Thema erneut auf und legen Sie es auf Aktivität vor setContentView fest.

So. Sie müssen das Speichern zu changeToTheme(Activity activity, int theme) hinzufügen und auf onActivityCreateSetTheme(Activity activity)

retreiving
Verwandte Themen