2017-03-08 73 views
0

我做了一個微調選擇主題顏色和它的工作和設置活動主題 但關閉應用程序,並再次打開時,默認主題是不是最後選擇,這是我的代碼可以告訴我我可以更改什麼如何從Android Studio中的顏色微調框設置默認主題?

MainActivity.java

public class MainActivity extends AppCompatActivity { 

final ArrayList<Integer> colors = new ArrayList<Integer>() {{ 

      add(R.color.colorPrimaryDark); 
      add(R.color.redPrimaryDark); 
      add(R.color.pinkPrimaryDark); 
      add(R.color.greenPrimaryDark); 
      add(R.color.tealPrimaryDark); 
      add(R.color.purplePrimaryDark); 
      add(R.color.lightBluePrimaryDark); 
      add(R.color.yellowPrimaryDark); 
      add(R.color.orangePrimaryDark); 
      add(R.color.brownPrimaryDark); 
      add(R.color.greyPrimaryDark); 
}}; 

private Spinner Colors_Spinner; 
private int Colors_currentSelectedItemPosition = 0; 


final Integer colors2[] = { 
     R.color.colorPrimaryDark, 
     R.color.redPrimaryDark, 
     R.color.pinkPrimaryDark, 
     R.color.greenPrimaryDark, 
     R.color.tealPrimaryDark, 
     R.color.purplePrimaryDark, 
     R.color.lightBluePrimaryDark, 
     R.color.yellowPrimaryDark, 
     R.color.orangePrimaryDark, 
     R.color.brownPrimaryDark, 
     R.color.greyPrimaryDark}; 

CustomSpinnerAdapter customSpinnerAdapter; 

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



    // MUST BE SET BEFORE setContentView 
    Utils.onActivityCreateSetTheme(this); 
    setContentView(R.layout.activity_main); 


    customSpinnerAdapter = new CustomSpinnerAdapter(this, android.R.layout.simple_spinner_dropdown_item, colors2); 
    Colors_Spinner = (Spinner) findViewById(R.id.Colors_Spinner); 

    Initialize_UI(); 
} 

private void Initialize_UI() { 

    Colors_Spinner.setAdapter(customSpinnerAdapter); 
    Colors_Spinner.setSelection(0); 
    Colors_Spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

      Colors_Spinner.setSelection(colors.indexOf(colors.get(position))); 

      if (Colors_currentSelectedItemPosition != position) { 
       Utils.changeToTheme(MainActivity.this, position); 
      } 

      Colors_currentSelectedItemPosition = position; 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> parent) { 

     } 
    }); 

} 

Utils.java

public class Utils 
    { 
     private static int sTheme; 
     public final static int THEME_Blue = 0; 
     public final static int THEME_RED = 1; 
     public final static int THEME_PINK =2; 
     public final static int THEME_GREEN =3; 
     public final static int THEME_TEAL =4; 
     public final static int THEME_PURPLE =5; 
     public final static int THEME_LIGHTBLUE =6; 
     public final static int THEME_YELLOW =7; 
     public final static int THEME_ORANGE = 8; 
     public final static int THEME_BROWN =9; 
     public final static int THEME_GREY =10; 


     public static void changeToTheme(Activity activity, int theme) { 

      sTheme = theme; 
      activity.finish(); 
      activity.startActivity(new Intent(activity, activity.getClass())); 
      activity.overridePendingTransition(android.R.anim.fade_in, 
        android.R.anim.fade_out); 
     } 
     public static void onActivityCreateSetTheme(Activity activity) { 

      switch (sTheme) { 
       default: 
       case THEME_Blue: 
        activity.setTheme(R.style.BlueTheme); 
        break; 
       case THEME_RED: 
        activity.setTheme(R.style.RedTheme); 
        break; 
       case THEME_PINK: 
        activity.setTheme(R.style.PinkTheme); 
        break; 
       case THEME_PURPLE: 
        activity.setTheme(R.style.PurpleTheme); 
        break; 
       case THEME_TEAL: 
        activity.setTheme(R.style.TealTheme); 
        break; 
       case THEME_LIGHTBLUE: 
        activity.setTheme(R.style.LightBlueTheme); 
        break; 
       case THEME_GREEN: 
        activity.setTheme(R.style.GreenTheme); 
        break; 
       case THEME_YELLOW: 
        activity.setTheme(R.style.YellowTheme); 
        break; 
       case THEME_ORANGE: 
        activity.setTheme(R.style.OrangeTheme); 
        break; 
       case THEME_BROWN: 
        activity.setTheme(R.style.BrownTheme); 
        break; 
       case THEME_GREY: 
        activity.setTheme(R.style.GreyTheme); 
        break; 
      } 
     } 

CustomSpinnerAdapter.java

public class CustomSpinnerAdapter extends ArrayAdapter<Integer> 
{ 
    private Context mContext; 
    private Integer [] mColors; 

    public CustomSpinnerAdapter(Context context, int resource, Integer [] Colors) { 
     super(context, resource,Colors); 
     mContext=context; 
     mColors=Colors; 
    } 

    @Override 
    public View getDropDownView(int position, View convertView, ViewGroup parent) { 
     return getCustomView(position, convertView, parent); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     return getCustomView(position, convertView, parent); 
    } 

    public View getCustomView(int position, View convertView, ViewGroup parent) { 
     LayoutInflater inflater = ((Activity)mContext).getLayoutInflater(); 
     TextView circle; 
     if (convertView == null) { 
      convertView = inflater.inflate(R.layout.color_spinner_row, parent, false); 
      circle = (TextView) convertView.findViewById(R.id.circle); 
      convertView.setTag(circle); 
      } else 
      circle = (TextView) convertView.getTag(); 

     // Do everything you want with "circle" 
     GradientDrawable bgShape = (GradientDrawable)circle.getBackground(); 
     bgShape.setColor(mContext.getResources().getColor(mColors[position])); 

     return convertView; 
    } 

回答

相關問題