Skip to content

Commit c9accb6

Browse files
committed
fix #10, allow changing the widgets active color
1 parent f4ac335 commit c9accb6

File tree

14 files changed

+67
-27
lines changed

14 files changed

+67
-27
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757

5858
<receiver
5959
android:name=".MyWidgetProvider"
60-
android:icon="@mipmap/flashlight_small">
60+
android:icon="@drawable/circles_small">
6161
<intent-filter>
6262
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
6363
</intent-filter>

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
import android.content.SharedPreferences;
1010
import android.content.res.Resources;
1111
import android.graphics.Bitmap;
12+
import android.graphics.PorterDuff;
13+
import android.graphics.drawable.Drawable;
1214
import android.widget.RemoteViews;
1315

1416
import com.squareup.otto.Bus;
@@ -49,7 +51,10 @@ private void initVariables(Context context) {
4951
final Resources res = context.getResources();
5052
final int defaultColor = res.getColor(R.color.colorPrimary);
5153
final int appColor = prefs.getInt(Constants.WIDGET_COLOR, defaultColor);
52-
mColoredBmp = Utils.getColoredIcon(context.getResources(), appColor, R.mipmap.flashlight_small);
54+
55+
final Drawable drawable = context.getResources().getDrawable(R.drawable.circles_small);
56+
drawable.mutate().setColorFilter(appColor, PorterDuff.Mode.SRC_ATOP);
57+
mColoredBmp = Utils.drawableToBitmap(drawable);
5358

5459
if (mBus == null) {
5560
mBus = BusProvider.getInstance();
@@ -78,7 +83,7 @@ public void enableFlashlight() {
7883
}
7984

8085
public void disableFlashlight() {
81-
mRemoteViews.setImageViewResource(R.id.toggle_btn, R.mipmap.flashlight_small);
86+
mRemoteViews.setImageViewResource(R.id.toggle_btn, R.drawable.circles_small);
8287
for (int widgetId : mWidgetIds) {
8388
mWidgetManager.updateAppWidget(widgetId, mRemoteViews);
8489
}

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

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,20 @@
11
package com.simplemobiletools.flashlight;
22

33
import android.content.Context;
4-
import android.content.res.Resources;
54
import android.graphics.Bitmap;
6-
import android.graphics.BitmapFactory;
75
import android.graphics.Canvas;
8-
import android.graphics.ColorFilter;
9-
import android.graphics.Paint;
10-
import android.graphics.PorterDuff;
11-
import android.graphics.PorterDuffColorFilter;
6+
import android.graphics.drawable.Drawable;
127
import android.widget.Toast;
138

149
public class Utils {
15-
public static Bitmap getColoredIcon(Resources res, int newTextColor, int id) {
16-
final BitmapFactory.Options options = new BitmapFactory.Options();
17-
options.inMutable = true;
18-
final Bitmap bmp = BitmapFactory.decodeResource(res, id, options);
19-
final Paint paint = new Paint();
20-
final ColorFilter filter = new PorterDuffColorFilter(newTextColor, PorterDuff.Mode.SRC_IN);
21-
paint.setColorFilter(filter);
22-
23-
final Canvas canvas = new Canvas(bmp);
24-
canvas.drawBitmap(bmp, 0, 0, paint);
25-
return bmp;
10+
public static Bitmap drawableToBitmap(Drawable drawable) {
11+
final int width = drawable.getIntrinsicWidth();
12+
final int height = drawable.getIntrinsicHeight();
13+
final Bitmap mutableBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
14+
final Canvas canvas = new Canvas(mutableBitmap);
15+
drawable.setBounds(0, 0, width, height);
16+
drawable.draw(canvas);
17+
return mutableBitmap;
2618
}
2719

2820
public static void showToast(Context context, int resId) {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ public void disableFlashlight() {
133133

134134
private void changeIconColor(int colorId, ImageView imageView) {
135135
final int appColor = getResources().getColor(colorId);
136-
imageView.getDrawable().mutate().setColorFilter(appColor, PorterDuff.Mode.SRC_ATOP);
136+
imageView.getDrawable().mutate().setColorFilter(appColor, PorterDuff.Mode.SRC_IN);
137137
}
138138

139139
@Subscribe

app/src/main/res/drawable/circles_big.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
android:shape="oval">
1010
<stroke
1111
android:width="15dp"
12-
android:color="@android:color/white"/>
12+
android:color="@color/translucent_white"/>
1313
<solid android:color="@android:color/transparent"/>
1414
</shape>
1515
</item>
@@ -23,7 +23,7 @@
2323
android:shape="oval">
2424
<stroke
2525
android:width="15dp"
26-
android:color="@android:color/white"/>
26+
android:color="@color/translucent_white"/>
2727
<solid android:color="@android:color/transparent"/>
2828
</shape>
2929
</item>
@@ -35,7 +35,7 @@
3535
android:shape="oval">
3636
<stroke
3737
android:width="15dp"
38-
android:color="@android:color/white"/>
38+
android:color="@color/translucent_white"/>
3939
<solid android:color="@android:color/transparent"/>
4040
</shape>
4141
</item>
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
3+
<item
4+
android:width="12dp"
5+
android:height="12dp"
6+
android:left="12dp"
7+
android:top="12dp">
8+
<shape
9+
android:shape="oval">
10+
<stroke
11+
android:width="3dp"
12+
android:color="@android:color/white"/>
13+
<solid android:color="@android:color/transparent"/>
14+
</shape>
15+
</item>
16+
17+
<item
18+
android:width="24dp"
19+
android:height="24dp"
20+
android:left="6dp"
21+
android:top="6dp">
22+
<shape
23+
android:shape="oval">
24+
<stroke
25+
android:width="3dp"
26+
android:color="@android:color/white"/>
27+
<solid android:color="@android:color/transparent"/>
28+
</shape>
29+
</item>
30+
31+
<item
32+
android:width="36dp"
33+
android:height="36dp">
34+
<shape
35+
android:shape="oval">
36+
<stroke
37+
android:width="3dp"
38+
android:color="@android:color/white"/>
39+
<solid android:color="@android:color/transparent"/>
40+
</shape>
41+
</item>
42+
43+
</layer-list>

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@
55
android:layout_width="match_parent"
66
android:layout_height="match_parent"
77
android:padding="10dp"
8-
android:src="@mipmap/flashlight_small"/>
8+
android:src="@drawable/circles_small"/>

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
android:layout_height="match_parent"
1414
android:layout_above="@+id/config_widget_color"
1515
android:scaleType="centerInside"
16-
android:src="@mipmap/flashlight_small"/>
16+
android:src="@drawable/circles_big"/>
1717

1818
<Button
1919
android:id="@+id/config_widget_color"
-4.52 KB
Binary file not shown.
-2.96 KB
Binary file not shown.

0 commit comments

Comments
 (0)