Skip to content

Commit 16185a2

Browse files
committed
add Dark theme
1 parent 27cd476 commit 16185a2

File tree

17 files changed

+170
-11
lines changed

17 files changed

+170
-11
lines changed

app/src/main/AndroidManifest.xml

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

2424
<activity
2525
android:name=".activities.AboutActivity"
26-
android:label="@string/about"/>
26+
android:label="@string/about"
27+
android:parentActivityName=".activities.MainActivity"/>
2728

2829
<activity
2930
android:name=".activities.LicenseActivity"
30-
android:label="@string/third_party_licences"/>
31+
android:label="@string/third_party_licences"
32+
android:parentActivityName=".activities.AboutActivity"/>
33+
34+
<activity
35+
android:name=".activities.SettingsActivity"
36+
android:label="@string/settings"
37+
android:parentActivityName=".activities.MainActivity"/>
3138

3239
<provider
3340
android:name="android.support.v4.content.FileProvider"

app/src/main/java/com/simplemobiletools/draw/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/draw/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 = "Draw";
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/draw/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/draw/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.draw.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/draw/activities/MainActivity.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
import android.support.v4.content.ContextCompat;
1414
import android.support.v4.content.FileProvider;
1515
import android.support.v7.app.AlertDialog;
16-
import android.support.v7.app.AppCompatActivity;
1716
import android.util.Log;
1817
import android.view.Menu;
1918
import android.view.MenuItem;
@@ -36,7 +35,7 @@
3635
import butterknife.OnClick;
3736
import yuku.ambilwarna.AmbilWarnaDialog;
3837

39-
public class MainActivity extends AppCompatActivity implements MyCanvas.PathsChangedListener {
38+
public class MainActivity extends SimpleActivity implements MyCanvas.PathsChangedListener {
4039
private static final String TAG = MainActivity.class.getSimpleName();
4140
private static final String FOLDER_NAME = "images";
4241
private static final String FILE_NAME = "simple-draw.png";
@@ -82,9 +81,11 @@ public boolean onOptionsItemSelected(MenuItem item) {
8281
case R.id.menu_share:
8382
shareImage();
8483
return true;
84+
case R.id.settings:
85+
startActivity(new Intent(getApplicationContext(), SettingsActivity.class));
86+
return true;
8587
case R.id.about:
86-
final Intent intent = new Intent(getApplicationContext(), AboutActivity.class);
87-
startActivity(intent);
88+
startActivity(new Intent(getApplicationContext(), AboutActivity.class));
8889
return true;
8990
default:
9091
return super.onOptionsItemSelected(item);
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package com.simplemobiletools.draw.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.draw.Config;
8+
import com.simplemobiletools.draw.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: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.simplemobiletools.draw.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.draw.Config;
9+
import com.simplemobiletools.draw.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+
setTheme(mConfig.getIsDarkTheme() ? R.style.AppTheme_Dark : R.style.AppTheme);
18+
super.onCreate(savedInstanceState);
19+
}
20+
21+
@Override
22+
public boolean onOptionsItemSelected(MenuItem item) {
23+
switch (item.getItemId()) {
24+
case android.R.id.home:
25+
finish();
26+
return true;
27+
default:
28+
return super.onOptionsItemSelected(item);
29+
}
30+
}
31+
}

app/src/main/res/layout/activity_main.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
<com.simplemobiletools.draw.MyCanvas
88
android:id="@+id/my_canvas"
99
android:layout_width="match_parent"
10-
android:layout_height="match_parent"/>
10+
android:layout_height="match_parent"
11+
android:background="@android:color/white"/>
1112

1213
<ImageView
1314
android:id="@+id/color_picker"
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>

0 commit comments

Comments
 (0)