slidingmenustyle侧拉和主题日夜切换

来源:互联网 发布:ubuntu atom 编辑:程序博客网 时间:2024/04/29 22:39
MainActivity类:侧拉
public class MainActivity extends AppCompatActivity {    private SlidingMenu menu;    private int theme = 0;    private Button but;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //切换主题必须放在onCreate()之前        if (savedInstanceState == null) {            theme = UiUtils.getAppTheme(MainActivity.this);        } else {            theme = savedInstanceState.getInt("theme");        }        setTheme(theme);        setContentView(R.layout.activity_main);        ImageView im = (ImageView) findViewById(R.id.images);        im.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                menu.toggle();            }        });        Slidings(savedInstanceState);    }    private void Slidings(Bundle savedInstanceState) {        menu = new SlidingMenu(this);        menu.setMode(SlidingMenu.LEFT);        //设置触摸的模式        /**         * TOUCHMODE_FULLSCREEN装满屏幕         *TOUCHMODE_MARGIN 边缘         * TOUCHMODE_NONE 没有         */        menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);        menu.setShadowWidthRes(R.dimen.shadow_width);        //menu.setShadowDrawable(R.color.colorAccent);        //设置滑动的菜单的宽度        menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);        // 设置渐入渐出效果的值        menu.setFadeDegree(0.35f);        menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);        //为侧滑菜单设置布局        View view = View.inflate(MainActivity.this, R.layout.lete_cela, null);        but = (Button) view.findViewById(R.id.riye);        but.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                UiUtils.switchAppTheme(MainActivity.this);                reload();            }        });        menu.setMenu(view);    }    public void reload() {        Intent intent = getIntent();        overridePendingTransition(R.anim.activity_in, R.anim.activity_out);//进入动画        finish();        overridePendingTransition(R.anim.activity_in, R.anim.activity_out);        startActivity(intent);    }}
lete_cela的布局:
<Button    android:id="@+id/riye"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:drawableLeft="@drawable/ye"    android:text="夜间"     />
1:在 style中添加黑夜主题
<!-- 白夜主题 --><style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">    <!-- Customize your theme here. -->    <item name="colorPrimary">@color/colorPrimary</item>    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>    <item name="colorAccent">@color/colorAccent</item></style><!--黑夜主题--><style    name="AppTheme.Black"    parent="Theme.AppCompat"></style>
2:添加到res目录下anim
activity_out.xml
<alpha    android:duration="0"    android:fromAlpha="1.0"    android:interpolator="@android:anim/decelerate_interpolator"    android:toAlpha="0.0"></alpha>
activity_in.xml
<alpha    android:duration="0"    android:fromAlpha="0.0"    android:interpolator="@android:anim/accelerate_interpolator"    android:toAlpha="1.0"></alpha>
3:创建Preferences和UiUtils
Preferences 类
public class Preferences {    private static final String shared_name = "user_guide";    private static SharedPreferences sp;    public static String getString(Context context, String key, String defaultValues) {        SharedPreferences sp = context.getSharedPreferences(shared_name, context.MODE_PRIVATE);        return sp.getString(key, defaultValues);    }    public static void setString(Context context, String key, String Values) {        SharedPreferences sp = context.getSharedPreferences(shared_name, context.MODE_PRIVATE);        sp.edit().putString(key, Values).commit();    }}
UiUtils 类:
public class UiUtils {    //获取主题    public static int getAppTheme(Context ctx) {        String value = Preferences.getString(ctx, "activity_theme", "1");        switch (Integer.valueOf(value)) {            case 1:                return R.style.AppTheme;//白色主题            case 2:                return R.style.AppTheme_Black;            default:                return R.style.AppTheme;//默认白色        }    }//切换主题//当然也可以使用资源ID来进行标记    public static void switchAppTheme(Context ctx) {        String value = Preferences.getString(ctx, "activity_theme", "1");        switch (Integer.valueOf(value)) {            case 1:                Preferences.setString(ctx, "activity_theme", "2");                break;            case 2:                Preferences.setString(ctx, "activity_theme", "1");                break;            default:                Preferences.setString(ctx, "activity_theme", "1");                break;        }    }}


原创粉丝点击