Metaria风格的设置页面

 

点击打开链接

package com.androapplite.kuaiya.battermanager.activity;

import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.widget.FrameLayout;

import com.androapplite.kuaiya.battermanager.fragment.SettingsFragment;
import com.androapplite.kuaiya.battermanager.utils.StatusColorUtils;
import com.androapplite.kuaiya.battermanager.utils.ToolbarUtils;
import com.tools.doc.battery.R;

import butterknife.Bind;
import butterknife.ButterKnife;

public class MetarialSettingActivity extends AppCompatActivity {

    @Bind(R.id.toolbar)
    Toolbar toolbar;
    @Bind(R.id.fl_my_setting_activity)
    FrameLayout flMySettingActivity;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_metarial_setting);
        ButterKnife.bind(this);

        ToolbarUtils.setToolbar(R.string.setting, toolbar, this);
        toolbar.setSubtitleTextColor(Color.WHITE);
        toolbar.setTitleTextColor(Color.WHITE);
        SettingsFragment settingsFragment = new SettingsFragment();
        StatusColorUtils.initStatusGreenBar(this);
        getFragmentManager().beginTransaction().replace(R.id.fl_my_setting_activity, settingsFragment).commit();



    }
}
   <activity
            android:name="com.androapplite.kuaiya.battermanager.activity.MetarialSettingActivity"
            android:screenOrientation="portrait"
            android:theme="@style/SettingThemeSwitch"></activity>

 

    <style name="SettingThemeSwitch" parent="Theme.AppCompat.NoActionBar">
        <item name="colorPrimaryDark">@color/color_main</item>
        <item name="colorPrimary">@color/color_main</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:listDivider">@drawable/divider</item>
        <!--<item name="android:textColorPrimary">#DD000000</item>-->
       <!--<item name="android:textColorSecondary">#8A000000</item>-->
         <item name="android:textColorHint">#42000000</item>
         <!--<item name="android:windowBackground">@color/color_main</item>-->
    </style>
activity_metarial_setting.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        android:orientation="vertical">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@color/color_main"
            app:layout_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/AppLockPopupOverlay" />


        <FrameLayout
            android:background="@color/white"
            android:id="@+id/fl_my_setting_activity"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"></FrameLayout>
    </LinearLayout>
</LinearLayout>
SettingsFragment
package com.androapplite.kuaiya.battermanager.fragment;

import android.app.Activity;
import android.app.NotificationManager;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import android.preference.PreferenceScreen;
import android.support.annotation.Nullable;

import com.androapplite.kuaiya.battermanager.Constant;
import com.androapplite.kuaiya.battermanager.service.BatteryService;
import com.androapplite.kuaiya.battermanager.service.NightShiftService;
import com.androapplite.kuaiya.battermanager.utils.Firebase;
import com.androapplite.kuaiya.battermanager.utils.ShortCutUtils;
import com.androapplite.kuaiya.battermanager.utils.SpUtils;
import com.lb.material_preferences_library.custom_preferences.SwitchPreference;
import com.tools.doc.battery.R;

import static android.content.Context.NOTIFICATION_SERVICE;
import static com.androapplite.kuaiya.battermanager.service.BatteryService.APP_ID_RESIDENT;
import static com.androapplite.kuaiya.battermanager.service.BatteryService.APP_NOTIFIMEMORYID;
import static com.androapplite.kuaiya.battermanager.service.BatteryService.APP_OVER_HEATING;

/**
 * Created by liuan on 2018/3/20.
 */

public class SettingsFragment extends PreferenceFragment implements Preference.OnPreferenceClickListener {

    private Activity activity;
    private SwitchPreference switchAppinstall;
    private SwitchPreference switchNotiOptimizationReminder;
    private SwitchPreference switchAppUninstall;
    private SwitchPreference switchNotiLowPower;
    private SwitchPreference switchSafeReport;
    private SwitchPreference switchTemperatureAlarm;
    private Preference createShortcut;
    private SwitchPreference switchQuickPanel;
    private Preference feedback;
    private Preference version;
    private SwitchPreference switchNotification;
    private NotificationManager mManager;

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        activity = getActivity();
        addPreferencesFromResource(R.xml.setting_activity_preference);
        initView();
        initData();
    }

    private void initData() {
        mManager = (NotificationManager) activity.getSystemService(NOTIFICATION_SERVICE);
        //通知栏开关
        final boolean notification = SpUtils.getBoolean(activity, "notification", true);
        switchNotification.setChecked(notification);
        //快速面板
        final boolean QuickPanel = SpUtils.getBoolean(activity, "QuickPanel", Constant.isQuickPanel);
        switchQuickPanel.setChecked(QuickPanel);
        //优化内存超过70%
        final boolean mSpToogleOptimize = SpUtils.getBoolean(activity, "mSpToogleMemory", true);
        switchNotiOptimizationReminder.setChecked(mSpToogleOptimize);
        //安装提醒
        final boolean mSpToogleAppInstall = SpUtils.getBoolean(activity, "mSpToogleAppInstall", true);
        switchAppinstall.setChecked(mSpToogleAppInstall);
        //卸载提醒
        final boolean mSpToogleAppUnInstall = SpUtils.getBoolean(activity, "mSpToogleAppUnInstall", true);
        switchAppUninstall.setChecked(mSpToogleAppUnInstall);
        //电量低于百分之30提醒
        final boolean mSpLessThirty = SpUtils.getBoolean(activity, "mSpLessThirty", true);
        switchNotiLowPower.setChecked(mSpLessThirty);
        //每日报告
        final boolean mSpSafeReport = SpUtils.getBoolean(activity, "mSpSafeReport", true);
        switchSafeReport.setChecked(mSpSafeReport);
        //优化弹框
        boolean isSpToogleeOverHeating = SpUtils.getBoolean("isSpToogleeOverHeating", true);
        switchTemperatureAlarm.setChecked(isSpToogleeOverHeating);
    }

    private void initView() {
        PreferenceScreen preferenceScreen = getPreferenceScreen();
        switchNotification = (SwitchPreference) preferenceScreen.findPreference("switch_notification");
        switchNotiOptimizationReminder = (SwitchPreference) preferenceScreen.findPreference("switch_noti_optimization_reminder");
        switchAppinstall = (SwitchPreference) preferenceScreen.findPreference("switch_appinstall");
        switchAppUninstall = (SwitchPreference) preferenceScreen.findPreference("switch_app_uninstall");
        switchNotiLowPower = (SwitchPreference) preferenceScreen.findPreference("switch_noti_low_power");
        switchSafeReport = (SwitchPreference) preferenceScreen.findPreference("switch_safe_report");
        switchTemperatureAlarm = (SwitchPreference) preferenceScreen.findPreference("switch_temperature_alarm");
        createShortcut = (Preference) preferenceScreen.findPreference("create_shortcut");
        switchQuickPanel = (SwitchPreference) preferenceScreen.findPreference("switch_quick_panel");
        feedback = (Preference) preferenceScreen.findPreference("feedback");
        version = (Preference) preferenceScreen.findPreference("version");
        switchNotification.setOnPreferenceClickListener(this);
        switchNotiOptimizationReminder.setOnPreferenceClickListener(this);
        switchAppinstall.setOnPreferenceClickListener(this);
        switchAppUninstall.setOnPreferenceClickListener(this);
        switchNotiLowPower.setOnPreferenceClickListener(this);
        switchSafeReport.setOnPreferenceClickListener(this);
        switchTemperatureAlarm.setOnPreferenceClickListener(this);
        createShortcut.setOnPreferenceClickListener(this);
        switchQuickPanel.setOnPreferenceClickListener(this);
        feedback.setOnPreferenceClickListener(this);
        version.setOnPreferenceClickListener(this);
        initVersion();

    }

    @Override
    public boolean onPreferenceClick(Preference preference) {
        String key = preference.getKey();

        if (key.equals("switch_notification")) {
            initNotification();
        } else if (key.equals("switch_noti_optimization_reminder")) {
            initOptimizationReminder();
        } else if (key.equals("switch_appinstall")) {
            initAppinstall();
        } else if (key.equals("switch_app_uninstall")) {
            initAppUninstall();
        } else if (key.equals("switch_noti_low_power")) {
            initNotiLowPower();
        } else if (key.equals("switch_safe_report")) {
            initSafeReport();
        } else if (key.equals("switch_temperature_alarm")) {
            initTemperatureAlarm();
        } else if (key.equals("create_shortcut")) {
            initCreateShortcut();
        } else if (key.equals("switch_quick_panel")) {
            iniQuickPanel();
        } else if (key.equals("feedback")) {
            initFeedBack();
        } else if (key.equals("version")) {

        }
        return false;
    }

    private void initVersion() {
        PackageManager packageManager = activity.getPackageManager();
        String packageName = activity.getPackageName();
        PackageInfo packageInfo = null;
        try {
            packageInfo = packageManager.getPackageInfo(packageName, 0);
            version.setSummary(packageInfo.versionName);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
    }

    private void initFeedBack() {
        Intent data = new Intent(Intent.ACTION_SENDTO);
        data.setData(Uri.parse("mailto:15662660292@163.com"));
        data.putExtra(Intent.EXTRA_SUBJECT, "");
        data.putExtra(Intent.EXTRA_TEXT, "");
        try {
            myStartActivity(activity, data);
        } catch (ActivityNotFoundException e) {
            e.printStackTrace();
        }
    }
    public static boolean myStartActivity(Context context, Intent intent) {
        if ((context == null) || (intent == null))
            return false;
        try {
            context.startActivity(intent);
        } catch (ActivityNotFoundException activityNotFoundException) {
            activityNotFoundException.printStackTrace();
            return false;
        } catch (IllegalArgumentException illegalArgumentException) {
            illegalArgumentException.printStackTrace();
            return false;
        } catch (Exception exception) {
            exception.printStackTrace();
            return false;
        }
        return true;
    }

    private void initCreateShortcut() {
        ShortCutUtils.addShortcut(getString(R.string.power_saving), activity);
    }

    private void initTemperatureAlarm() {
        final boolean mSpToogleOptimize = SpUtils.getBoolean(activity, "isSpToogleeOverHeating", true);
        if (mSpToogleOptimize) {
            Firebase.getInstance(activity).logEvent("关闭高温通知", "点击");
            switchTemperatureAlarm.setChecked(false);
            SpUtils.putBoolean("isSpToogleeOverHeating", false);
            mManager.cancel(APP_OVER_HEATING);
        } else {
            Firebase.getInstance(activity).logEvent("开启高温通知", "点击");
            switchTemperatureAlarm.setChecked(true);
            SpUtils.putBoolean("isSpToogleeOverHeating", true);
        }
    }

    private void initSafeReport() {
        final boolean mSpToogleOptimize = SpUtils.getBoolean(activity, "mSpSafeReport", true);
        if (mSpToogleOptimize) {
            Firebase.getInstance(activity).logEvent("关闭控制面板通知", "点击");
            switchSafeReport.setChecked(false);
            SpUtils.putBoolean("mSpSafeReport", false);
        } else {
            Firebase.getInstance(activity).logEvent("开启控制面板通知", "点击");
            switchSafeReport.setChecked(true);
            SpUtils.putBoolean("mSpSafeReport", true);
        }
    }

    private void initNotiLowPower() {
        //优化内存超过70%
        final boolean mSpToogleOptimize = SpUtils.getBoolean(activity, "mSpLessThirty", true);
        if (mSpToogleOptimize) {
            Firebase.getInstance(activity).logEvent("关闭低电量通知", "点击");
            switchNotiLowPower.setChecked(false);
            SpUtils.putBoolean("mSpLessThirty", false);
        } else {
            Firebase.getInstance(activity).logEvent("开启低电量通知", "点击");
            switchNotiLowPower.setChecked(true);
            SpUtils.putBoolean("mSpLessThirty", true);
        }
    }

    private void iniQuickPanel() {
        boolean initProtection1 = SpUtils.getBoolean(activity, "QuickPanel", Constant.isQuickPanel);
        if (initProtection1) {
            Firebase.getInstance(activity).logEvent("关闭底部快捷面板", "点击");
            switchQuickPanel.setChecked(false);
            SpUtils.putBoolean(activity, "QuickPanel", false);
            Intent intent = new Intent(activity, NightShiftService.class);
            intent.putExtra("show_shifnight_view", false);
            activity.stopService(intent);


        } else {
            Firebase.getInstance(activity).logEvent("打开底部快捷面板", "点击");
            switchQuickPanel.setChecked(true);
            SpUtils.putBoolean(activity, "QuickPanel", true);
            Intent intent = new Intent(activity, NightShiftService.class);
            activity.startService(intent);

        }
    }

    private void initAppUninstall() {
        //优化内存超过70%
        final boolean mSpToogleOptimize = SpUtils.getBoolean(activity, "mSpToogleAppUnInstall", true);
        if (mSpToogleOptimize) {
            Firebase.getInstance(activity).logEvent("关闭卸载通知", "点击");
            switchAppUninstall.setChecked(false);
            SpUtils.putBoolean("mSpToogleAppUnInstall", false);

        } else {
            Firebase.getInstance(activity).logEvent("开启卸载通知", "点击");
            switchAppUninstall.setChecked(true);
            SpUtils.putBoolean("mSpToogleAppUnInstall", true);
        }
    }

    private void initAppinstall() {
        //优化内存超过70%
        final boolean mSpToogleOptimize = SpUtils.getBoolean(activity, "mSpToogleAppInstall", true);
        if (mSpToogleOptimize) {
            Firebase.getInstance(activity).logEvent("关闭安装通知", "点击");
            switchAppinstall.setChecked(false);
            SpUtils.putBoolean("mSpToogleAppInstall", false);

        } else {
            Firebase.getInstance(activity).logEvent("开启安装通知", "点击");
            switchAppinstall.setChecked(true);
            SpUtils.putBoolean("mSpToogleAppInstall", true);
        }
    }

    private void initOptimizationReminder() {
        //优化内存超过70%
        final boolean mSpToogleOptimize = SpUtils.getBoolean(activity, "mSpToogleMemory", true);
        if (mSpToogleOptimize) {
            Firebase.getInstance(activity).logEvent("关闭优化通知", "点击");
            switchNotiOptimizationReminder.setChecked(false);
            SpUtils.putBoolean("mSpToogleMemory", false);
            mManager.cancel(APP_NOTIFIMEMORYID);

        } else {
            Firebase.getInstance(activity).logEvent("开启优化通知", "点击");
            switchNotiOptimizationReminder.setChecked(true);
            SpUtils.putBoolean("mSpToogleMemory", true);
        }
    }

    private void initNotification() {
        boolean notification1 = SpUtils.getBoolean(activity, "notification", true);
        if (notification1) {
//                    ToastUtils.showToast(
//                            " The next boot will not show notifications");
            Firebase.getInstance(activity).logEvent("关闭通知", "点击");
            BatteryService batteryService = new BatteryService();
            batteryService.stopServiceNotification();
            switchNotification.setChecked(false);
            SpUtils.putBoolean(activity, "notification", false);
            if (mManager != null) {
                mManager.cancel(APP_ID_RESIDENT);
            }

        } else {
            Firebase.getInstance(activity).logEvent("打开通知", "点击");
            BatteryService batteryService = new BatteryService();
            batteryService.startServiceNotification();
            switchNotification.setChecked(true);
            SpUtils.putBoolean(activity, "notification", true);
        }
    }
}

 

setting_activity_preference

 

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <com.lb.material_preferences_library.custom_preferences.PreferenceCategory
        android:key="notification"
        android:theme="@style/SettingThemeSwitch"
        android:title="@string/notification">

        <com.lb.material_preferences_library.custom_preferences.SwitchPreference
            android:defaultValue="true"
            android:key="switch_notification"
            android:textOff=""
            android:textOn=""

            android:title="@string/notification_toggle" />

        <com.lb.material_preferences_library.custom_preferences.SwitchPreference
            android:defaultValue="true"
            android:key="switch_noti_optimization_reminder"
            android:textOff=""
            android:textOn=""
            android:title="@string/optimization_reminder"
           />

        <com.lb.material_preferences_library.custom_preferences.SwitchPreference
            android:defaultValue="true"
            android:key="switch_appinstall"
            android:textOff=""
            android:textOn=""
            android:title="@string/app_installation_alret"
        />

        <com.lb.material_preferences_library.custom_preferences.SwitchPreference
            android:defaultValue="true"
            android:key="switch_app_uninstall"
            android:textOff=""
            android:textOn=""
            android:title="@string/uninstall_alert"

       />

        <com.lb.material_preferences_library.custom_preferences.SwitchPreference
            android:defaultValue="true"
            android:key="switch_noti_low_power"
            android:textOff=""
            android:textOn=""
            android:title="@string/low_power_reminder"
  />
        <com.lb.material_preferences_library.custom_preferences.SwitchPreference
            android:defaultValue="true"
            android:key="switch_safe_report"
            android:textOff=""
            android:textOn=""
            android:title="@string/battery_safety_report"
           />

        <com.lb.material_preferences_library.custom_preferences.SwitchPreference
            android:defaultValue="true"
            android:key="switch_temperature_alarm"
            android:textOff=""
            android:textOn=""
            android:title="@string/overheating_temperature_alarm"
      />



    </com.lb.material_preferences_library.custom_preferences.PreferenceCategory>
    <com.lb.material_preferences_library.custom_preferences.PreferenceCategory
        android:key="shortcut"
        android:title="@string/shortcut">
        <com.lb.material_preferences_library.custom_preferences.Preference
            android:defaultValue="true"
            android:key="create_shortcut"
            android:title="@string/create_a_power_saving_shortcut" />

        <com.lb.material_preferences_library.custom_preferences.SwitchPreference
            android:defaultValue="true"
            android:key="switch_quick_panel"
            android:textOff=""

            android:textOn=""
            android:summary="@string/may_contain_ads"
            android:title="@string/quick_panel"
            />

    </com.lb.material_preferences_library.custom_preferences.PreferenceCategory>
    <com.lb.material_preferences_library.custom_preferences.PreferenceCategory
        android:key="other"
        android:title="@string/other">

        <com.lb.material_preferences_library.custom_preferences.Preference
            android:defaultValue="true"
            android:key="feedback"
            android:title="@string/feedback" />
        <com.lb.material_preferences_library.custom_preferences.Preference
            android:defaultValue="true"
            android:key="version"
            android:title="@string/version" />

    </com.lb.material_preferences_library.custom_preferences.PreferenceCategory>


</PreferenceScreen>

 

这里用到了一个库 点击打开链接

 

我提交到码云  也可以点击打开链接

这个样式如果不是你喜欢的颜色 那么可以在这里改这些参数

 

在Android 5.0 中 Switch 更新了样式 变得 比较好用了 
但是在5.0 以下的版本 还是老样子 不实用 因此 就有了 SwitchCompat 来兼容 它是v7 包中的 因此可兼容到 2.1

使用时 写一下布局即可。。

<android.support.v7.widget.SwitchCompat
        android:id="@+id/switch1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" /> 

这个switch 默认是 粉红色的 有的时候我们需要设置成和我们的主题颜色一致 就需要更改 switch的颜色 
一种方式是 设置 thumb(拇指按钮) 和 track(轨迹) 颜色

switch1 = (SwitchCompat) view.findViewById(R.id.switch1);
        switch1.setTrackResource();
        switch1.setThumbResource();

如果有适合的图片 可以这样设置 但是通常这样设置是比较麻烦的 需要合适的图片 
因此就有了下面的简便的方法 :

在style 中设置

  <!-- Active thumb color & Active track color(30% transparency) switch 打开时的拇指按钮的颜色 轨迹颜色默认为30%这个颜色 -->  
            <item name="colorControlActivated">@color/theme_color_green</item>
            <!-- Inactive thumb color switch关闭时的拇指按钮的颜色 -->
            <item name="colorSwitchThumbNormal">@color/colorAccent</item>
            <!-- Inactive track color(30% transparency) switch关闭时的轨迹的颜色  30%这个颜色 -->
            <item name="android:colorForeground">@color/colorPrimaryDark</item>

这样就完成了

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安果移不动

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值