Skip to content

Commit fb2229c

Browse files
committed
add Dark theme
1 parent 59b0dab commit fb2229c

File tree

16 files changed

+175
-8
lines changed

16 files changed

+175
-8
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,18 @@
2929

3030
<activity
3131
android:name=".activities.AboutActivity"
32-
android:label="@string/about"/>
32+
android:label="@string/about"
33+
android:parentActivityName=".activities.MainActivity"/>
3334

3435
<activity
3536
android:name=".activities.LicenseActivity"
36-
android:label="@string/third_party_licences"/>
37+
android:label="@string/third_party_licences"
38+
android:parentActivityName=".activities.AboutActivity"/>
39+
40+
<activity
41+
android:name=".activities.SettingsActivity"
42+
android:label="@string/settings"
43+
android:parentActivityName=".activities.MainActivity"/>
3744

3845
<receiver
3946
android:name=".MyWidgetProvider"

app/src/main/java/com/simplemobiletools/flashlight/Config.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,12 @@ public boolean getIsFirstRun() {
2121
public void setIsFirstRun(boolean firstRun) {
2222
mPrefs.edit().putBoolean(Constants.IS_FIRST_RUN, firstRun).apply();
2323
}
24+
25+
public boolean getIsDarkTheme() {
26+
return mPrefs.getBoolean(Constants.IS_DARK_THEME, false);
27+
}
28+
29+
public void setIsDarkTheme(boolean isDarkTheme) {
30+
mPrefs.edit().putBoolean(Constants.IS_DARK_THEME, isDarkTheme).apply();
31+
}
2432
}

app/src/main/java/com/simplemobiletools/flashlight/Constants.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ public class Constants {
44
// shared preferences
55
public static final String PREFS_KEY = "Flashlight";
66
public static final String IS_FIRST_RUN = "is_first_run";
7+
public static final String IS_DARK_THEME = "is_dark_theme";
78
}

app/src/main/java/com/simplemobiletools/flashlight/activities/AboutActivity.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import android.content.res.Resources;
66
import android.net.Uri;
77
import android.os.Bundle;
8-
import android.support.v7.app.AppCompatActivity;
98
import android.text.Html;
109
import android.text.method.LinkMovementMethod;
1110
import android.view.View;
@@ -21,7 +20,7 @@
2120
import butterknife.ButterKnife;
2221
import butterknife.OnClick;
2322

24-
public class AboutActivity extends AppCompatActivity {
23+
public class AboutActivity extends SimpleActivity {
2524
@BindView(R.id.about_copyright) TextView mCopyright;
2625
@BindView(R.id.about_email) TextView mEmailTV;
2726
@BindView(R.id.about_rate_us) View mRateUs;

app/src/main/java/com/simplemobiletools/flashlight/activities/LicenseActivity.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,13 @@
33
import android.content.Intent;
44
import android.net.Uri;
55
import android.os.Bundle;
6-
import android.support.v7.app.AppCompatActivity;
76

87
import com.simplemobiletools.flashlight.R;
98

109
import butterknife.ButterKnife;
1110
import butterknife.OnClick;
1211

13-
public class LicenseActivity extends AppCompatActivity {
12+
public class LicenseActivity extends SimpleActivity {
1413

1514
@Override
1615
protected void onCreate(Bundle savedInstanceState) {

app/src/main/java/com/simplemobiletools/flashlight/activities/MainActivity.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import android.content.Intent;
44
import android.graphics.PorterDuff;
55
import android.os.Bundle;
6-
import android.support.v7.app.AppCompatActivity;
76
import android.view.Menu;
87
import android.view.MenuItem;
98
import android.view.WindowManager;
@@ -22,7 +21,7 @@
2221
import butterknife.ButterKnife;
2322
import butterknife.OnClick;
2423

25-
public class MainActivity extends AppCompatActivity {
24+
public class MainActivity extends SimpleActivity {
2625
@BindView(R.id.toggle_btn) ImageView mToggleBtn;
2726

2827
private static Bus mBus;
@@ -46,6 +45,9 @@ public boolean onCreateOptionsMenu(Menu menu) {
4645
@Override
4746
public boolean onOptionsItemSelected(MenuItem item) {
4847
switch (item.getItemId()) {
48+
case R.id.settings:
49+
startActivity(new Intent(getApplicationContext(), SettingsActivity.class));
50+
return true;
4951
case R.id.about:
5052
startActivity(new Intent(getApplicationContext(), AboutActivity.class));
5153
return true;
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package com.simplemobiletools.flashlight.activities;
2+
3+
import android.os.Bundle;
4+
import android.support.v4.app.TaskStackBuilder;
5+
import android.support.v7.widget.SwitchCompat;
6+
7+
import com.simplemobiletools.flashlight.Config;
8+
import com.simplemobiletools.flashlight.R;
9+
10+
import butterknife.BindView;
11+
import butterknife.ButterKnife;
12+
import butterknife.OnClick;
13+
14+
public class SettingsActivity extends SimpleActivity {
15+
@BindView(R.id.settings_dark_theme) SwitchCompat mDarkThemeSwitch;
16+
17+
private static Config mConfig;
18+
19+
@Override
20+
protected void onCreate(Bundle savedInstanceState) {
21+
super.onCreate(savedInstanceState);
22+
setContentView(R.layout.activity_settings);
23+
mConfig = Config.newInstance(getApplicationContext());
24+
ButterKnife.bind(this);
25+
26+
setupDarkTheme();
27+
}
28+
29+
private void setupDarkTheme() {
30+
mDarkThemeSwitch.setChecked(mConfig.getIsDarkTheme());
31+
}
32+
33+
@OnClick(R.id.settings_dark_theme_holder)
34+
public void handleDarkTheme() {
35+
mDarkThemeSwitch.setChecked(!mDarkThemeSwitch.isChecked());
36+
mConfig.setIsDarkTheme(mDarkThemeSwitch.isChecked());
37+
restartActivity();
38+
}
39+
40+
private void restartActivity() {
41+
TaskStackBuilder.create(getApplicationContext()).addNextIntentWithParentStack(getIntent()).startActivities();
42+
}
43+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.simplemobiletools.flashlight.activities;
2+
3+
import android.os.Bundle;
4+
import android.support.annotation.Nullable;
5+
import android.support.v7.app.AppCompatActivity;
6+
import android.view.MenuItem;
7+
8+
import com.simplemobiletools.flashlight.Config;
9+
import com.simplemobiletools.flashlight.R;
10+
11+
public class SimpleActivity extends AppCompatActivity {
12+
protected Config mConfig;
13+
14+
@Override
15+
protected void onCreate(@Nullable Bundle savedInstanceState) {
16+
mConfig = Config.newInstance(getApplicationContext());
17+
int theme = mConfig.getIsDarkTheme() ? R.style.AppTheme_Dark : R.style.AppTheme;
18+
if (this instanceof MainActivity) {
19+
theme = mConfig.getIsDarkTheme() ? R.style.BlackSplashScreen_Dark : R.style.BlackSplashScreen;
20+
}
21+
setTheme(theme);
22+
super.onCreate(savedInstanceState);
23+
}
24+
25+
@Override
26+
public boolean onOptionsItemSelected(MenuItem item) {
27+
switch (item.getItemId()) {
28+
case android.R.id.home:
29+
finish();
30+
return true;
31+
default:
32+
return super.onOptionsItemSelected(item);
33+
}
34+
}
35+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<ScrollView
3+
android:id="@+id/settings_scrollview"
4+
xmlns:android="http://schemas.android.com/apk/res/android"
5+
android:layout_width="match_parent"
6+
android:layout_height="wrap_content">
7+
8+
<LinearLayout
9+
android:id="@+id/settings_holder"
10+
android:layout_width="match_parent"
11+
android:layout_height="wrap_content"
12+
android:orientation="vertical">
13+
14+
<RelativeLayout
15+
android:id="@+id/settings_dark_theme_holder"
16+
android:layout_width="match_parent"
17+
android:layout_height="wrap_content"
18+
android:layout_marginTop="@dimen/settings_padding"
19+
android:background="?android:attr/selectableItemBackground"
20+
android:padding="@dimen/activity_margin">
21+
22+
<TextView
23+
android:id="@+id/settings_dark_theme_label"
24+
android:layout_width="wrap_content"
25+
android:layout_height="wrap_content"
26+
android:layout_centerVertical="true"
27+
android:paddingLeft="@dimen/settings_padding"
28+
android:text="@string/dark_theme"/>
29+
30+
<android.support.v7.widget.SwitchCompat
31+
android:id="@+id/settings_dark_theme"
32+
android:layout_width="wrap_content"
33+
android:layout_height="wrap_content"
34+
android:layout_alignParentRight="true"
35+
android:background="@null"
36+
android:clickable="false"/>
37+
38+
</RelativeLayout>
39+
</LinearLayout>
40+
</ScrollView>

app/src/main/res/menu/menu.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<menu xmlns:android="http://schemas.android.com/apk/res/android"
33
xmlns:app="http://schemas.android.com/apk/res-auto">
4+
<item
5+
android:id="@+id/settings"
6+
android:title="@string/settings"
7+
app:showAsAction="never"/>
48
<item
59
android:id="@+id/about"
610
android:title="@string/about"

0 commit comments

Comments
 (0)