Skip to content

Commit

Permalink
Merge pull request #192 from karimapps/color
Browse files Browse the repository at this point in the history
Add Colorful Screen
  • Loading branch information
CrazyMarvin authored Jan 23, 2024
2 parents 251c75f + abdebee commit e6a36bb
Show file tree
Hide file tree
Showing 5 changed files with 166 additions and 118 deletions.
9 changes: 5 additions & 4 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ android {
applicationId "rocks.poopjournal.flashy"
minSdk 19
targetSdk 34
versionCode 8
versionName "1.7"
versionCode 10
versionName "1.8"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
resConfigs "en", "cs", "de", "es", "hr", "lt", "nb-rNO", "pt", "pt-rBR", "ru", "sat", "tr", "zh-rCN"
Expand Down Expand Up @@ -47,9 +47,10 @@ dependencies {
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.material:material:1.11.0'
coreLibraryDesugaring ('com.android.tools:desugar_jdk_libs:2.0.4')
implementation "com.github.skydoves:colorpickerview:2.3.0"

implementation 'me.tankery.lib:circularSeekBar:1.4.2'
//to resolve dependency conflicts
implementation 'androidx.lifecycle:lifecycle-viewmodel:2.7.0'
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.7.0"
implementation 'androidx.lifecycle:lifecycle-viewmodel:2.6.2'
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2"
}
1 change: 0 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
<uses-permission
android:name="android.permission.CAMERA"
android:maxSdkVersion="23" />

<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;

import androidx.annotation.NonNull;
Expand All @@ -23,6 +24,8 @@
import androidx.preference.PreferenceManager;

import com.google.android.material.slider.Slider;
import com.skydoves.colorpickerview.ColorPickerView;
import com.skydoves.colorpickerview.listeners.ColorListener;

import me.tankery.lib.circularseekbar.CircularSeekBar;
import rocks.poopjournal.flashy.NoFlashlightDialog;
Expand All @@ -35,16 +38,19 @@

public class MainActivity extends AppCompatActivity {
//Fields
RelativeLayout root_layout ;
private int brightness = -999;
private Window window;
private SharedPreferences legacyPreferences; //kept for legacy reasons
private SharedPreferences defaultPreferences;
private CameraHelper helper;
private MainActivityBinding binding;
private final ScreenOffBroadcastReceiver turnOffFlashlightOnScreenOffReceiver = new ScreenOffBroadcastReceiver();

private enum FlashlightMode {
NORMAL, SOS, STROBOSCOPE
}

private final SharedPreferences.OnSharedPreferenceChangeListener material3Listener = (sharedPreferences, key) -> {
switch (key) {
case "md3":
Expand All @@ -64,6 +70,7 @@ private enum FlashlightMode {

@Override
protected void onCreate(Bundle savedInstanceState) {

PreferenceManager.setDefaultValues(this, R.xml.root_preferences, false);
defaultPreferences = PreferenceManager.getDefaultSharedPreferences(this);
if (defaultPreferences.getBoolean("no_flash_on_device_screen_off", false)) {
Expand Down Expand Up @@ -123,13 +130,24 @@ protected void onCreate(Bundle savedInstanceState) {
binding.stroboscopeIntervalSlider.setValue(stroboscopeIntervalInPreferences != -1 ? stroboscopeIntervalInPreferences : 0.5F);
binding.stroboscopeIntervalSlider.addOnSliderTouchListener(new Slider.OnSliderTouchListener() {
@Override
public void onStartTrackingTouch(@NonNull Slider slider) {}
public void onStartTrackingTouch(@NonNull Slider slider) {
}

@Override
public void onStopTrackingTouch(@NonNull Slider slider) {
helper.setStroboscopeInterval((int) (slider.getValue() * 1000));
}
});
}
root_layout = findViewById(R.id.root_layout);
ColorPickerView colorPickerView = findViewById(R.id.colorPickerView);
colorPickerView.setColorListener(new ColorListener() {
@Override
public void onColorSelected(int color, boolean fromUser) {

root_layout.setBackgroundColor(color);
}
});
}

@Override
Expand Down Expand Up @@ -197,13 +215,16 @@ public void onProgressChanged(@Nullable CircularSeekBar circularSeekBar, float v
if (Boolean.TRUE.equals(helper.getNormalFlashStatus().getValue()))
helper.turnOnFlashWithStrength(MainActivity.this);
}

@Override
public void onStopTrackingTouch(@Nullable CircularSeekBar circularSeekBar) {
if (circularSeekBar != null)
defaultPreferences.edit().putInt("flashlight_strength", Math.round(circularSeekBar.getProgress() + 1)).apply();
}

@Override
public void onStartTrackingTouch(@Nullable CircularSeekBar circularSeekBar) {}
public void onStartTrackingTouch(@Nullable CircularSeekBar circularSeekBar) {
}
});
binding.progressCircular.setProgress(helper.getFlashlightStrength() - 1);
binding.powerCenter.setOnClickListener(v -> helper.toggleNormalFlash(this));
Expand Down Expand Up @@ -231,7 +252,8 @@ private void changeButtonColors(FlashlightMode mode, boolean isTurnedOn) {
binding.stroboscopeButton.setColorFilter(isTurnedOn ? Color.parseColor("#28FFB137") : Color.parseColor("#F3F3F7"));
binding.stroboscopeIcon.setColorFilter(isTurnedOn ? Color.parseColor("#FFB137") : Color.parseColor("#AAAABB"));
break;
default: throw new IllegalArgumentException();
default:
throw new IllegalArgumentException();
}
}

Expand Down Expand Up @@ -274,10 +296,14 @@ public void onProgressChanged(CircularSeekBar circularSeekBar, float progress, b
layoutpars.screenBrightness = (float) brightness / 100;
window.setAttributes(layoutpars);
}

@Override
public void onStopTrackingTouch(CircularSeekBar seekBar) {}
public void onStopTrackingTouch(CircularSeekBar seekBar) {
}

@Override
public void onStartTrackingTouch(CircularSeekBar seekBar) {}
public void onStartTrackingTouch(CircularSeekBar seekBar) {
}
});
binding.powerCenter.setOnClickListener(view -> binding.progressCircular.setProgress(brightness != 100 ? 100 : 0));
}
Expand Down
121 changes: 65 additions & 56 deletions app/src/main/res/layout-land/main_activity.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/root_layout"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:orientation="vertical">

<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
Expand All @@ -17,136 +17,145 @@
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:title="@string/app_name"/>
app:title="@string/app_name" />

</com.google.android.material.appbar.AppBarLayout>

<me.tankery.lib.circularseekbar.CircularSeekBar
android:id="@+id/progress_circular"
android:layout_centerInParent="true"
android:layout_width="200dp"
app:cs_circle_progress_color= "#FFB137"
app:cs_maintain_equal_circle = "true"
app:cs_circle_color = "#F3F3F7"

app:cs_circle_stroke_width = "3dp"
app:cs_pointer_stroke_width = "8dp"
app:cs_start_angle = "140"
app:cs_end_angle = "40"
app:cs_pointer_color = "#FFB137"
app:cs_pointer_halo_width = "4dp"
app:cs_pointer_halo_border_width = "4dp"
app:cs_pointer_halo_color = "#FFFFFF"
app:cs_pointer_halo_color_ontouch = "#FFFFFF"
android:layout_height="300dp"/>
android:layout_height="300dp"
android:layout_centerInParent="true"
app:cs_circle_color="#F3F3F7"
app:cs_circle_progress_color="#FFB137"

app:cs_circle_stroke_width="3dp"
app:cs_end_angle="40"
app:cs_maintain_equal_circle="true"
app:cs_pointer_color="#FFB137"
app:cs_pointer_halo_border_width="4dp"
app:cs_pointer_halo_color="#FFFFFF"
app:cs_pointer_halo_color_ontouch="#FFFFFF"
app:cs_pointer_halo_width="4dp"
app:cs_pointer_stroke_width="8dp"
app:cs_start_angle="140" />

<ImageView
android:id="@+id/power_center"
android:layout_width="72dp"
android:src="@drawable/ic_power_center"
android:background="@drawable/ripple_effect"
android:layout_height="72dp"
android:layout_centerInParent="true"
android:layout_height="72dp"/>
android:background="@drawable/ripple_effect"
android:src="@drawable/ic_power_center" />

<ImageView
android:id="@+id/power_icon"
android:layout_width="24dp"
android:layout_height="24dp"
android:src="@drawable/power"
android:layout_centerInParent="true"/>
android:layout_centerInParent="true"
android:src="@drawable/power" />

<RelativeLayout
android:id="@+id/bg_options"
android:background="@drawable/ic_rectangle_bg_options"
android:layout_width="88dp"
android:layout_height="40dp"
android:layout_alignBottom="@id/progress_circular"
android:layout_centerHorizontal="true"
android:layout_height="40dp">
android:background="@drawable/ic_rectangle_bg_options">

<RelativeLayout
android:id="@+id/bg_option_circle"
android:layout_width="wrap_content"
android:background="@drawable/bg_option_circle"
android:layout_height="wrap_content"
android:animateLayoutChanges="true"
android:layout_height="wrap_content"/>
android:background="@drawable/bg_option_circle" />

<ImageView
android:id="@+id/flash_icon"
android:src="@drawable/flash_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="15dp"
android:layout_height="wrap_content"/>
android:src="@drawable/flash_icon" />

<ImageView
android:id="@+id/screen_icon"
android:src="@drawable/screen_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginEnd="17dp"
android:layout_alignParentEnd="true"
android:layout_height="wrap_content"/>
android:src="@drawable/screen_icon" />
</RelativeLayout>

<ImageView
android:id="@+id/sos_button"
android:layout_width="72dp"
android:src="@drawable/ic_power_center"
android:background="@drawable/ripple_effect"
android:layout_toStartOf="@id/progress_circular"
android:layout_marginEnd="30dp"
android:layout_height="72dp"
android:layout_centerVertical="true"
android:layout_height="72dp"/>
android:layout_marginEnd="30dp"
android:layout_toStartOf="@id/progress_circular"
android:background="@drawable/ripple_effect"
android:src="@drawable/ic_power_center" />

<ImageView
android:id="@+id/sos_icon"
android:layout_width="48dp"
android:src="@drawable/sos"
android:background="@drawable/ripple_effect"
android:layout_toStartOf="@id/progress_circular"
android:layout_marginEnd="42dp"
android:layout_height="48dp"
android:layout_centerVertical="true"
android:layout_marginTop="42dp"
android:layout_height="48dp"/>
android:layout_marginEnd="42dp"
android:layout_toStartOf="@id/progress_circular"
android:background="@drawable/ripple_effect"
android:src="@drawable/sos" />

<ImageView
android:id="@+id/stroboscope_button"
android:layout_width="72dp"
android:src="@drawable/ic_power_center"
android:background="@drawable/ripple_effect"
android:layout_toEndOf="@id/progress_circular"
android:layout_marginStart="30dp"
android:layout_height="72dp"
android:layout_centerVertical="true"
android:layout_marginStart="30dp"
android:layout_marginTop="30dp"
android:layout_height="72dp"/>
android:layout_toEndOf="@id/progress_circular"
android:background="@drawable/ripple_effect"
android:src="@drawable/ic_power_center" />

<ImageView
android:id="@+id/stroboscope_icon"
android:layout_width="48dp"
android:src="@drawable/loader"
android:background="@drawable/ripple_effect"
android:layout_toEndOf="@id/progress_circular"
android:layout_marginStart="42dp"
android:layout_height="48dp"
android:layout_centerVertical="true"
android:layout_marginStart="42dp"
android:layout_marginTop="42dp"
android:layout_height="48dp"/>
android:layout_toEndOf="@id/progress_circular"
android:background="@drawable/ripple_effect"
android:src="@drawable/loader" />

<TextView
android:id="@+id/stroboscope_interval"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/bg_options"
android:layout_marginTop="10dp"
android:layout_centerHorizontal="true"
android:text="@string/stroboscope_interval"/>
android:layout_marginTop="10dp"
android:text="@string/stroboscope_interval" />

<com.google.android.material.slider.Slider
android:id="@+id/stroboscope_interval_slider"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/stroboscope_interval"
android:layout_marginHorizontal="6dp"
android:stepSize="0.1"
android:valueFrom="0.1"
android:valueTo="1"
android:stepSize="0.1"/>
android:valueTo="1" />

<com.skydoves.colorpickerview.ColorPickerView
android:id="@+id/colorPickerView"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_margin="10dp" />

</RelativeLayout>
Loading

0 comments on commit e6a36bb

Please sign in to comment.