Last active
September 1, 2021 00:09
-
-
Save rjlutz/275c22ca513c1ad990b23cb7ef7733f5 to your computer and use it in GitHub Desktop.
Dialog Fragment RGB, passes values back to Activity
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<androidx.constraintlayout.widget.ConstraintLayout 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" | |
tools:context=".MainActivity"> | |
<androidx.constraintlayout.widget.Guideline | |
android:id="@+id/guideline" | |
android:layout_width="wrap_content" | |
android:layout_height="wrap_content" | |
android:orientation="horizontal" | |
app:layout_constraintGuide_percent="0.5" /> | |
<TextView | |
android:id="@+id/tvSwatch" | |
android:layout_width="0dp" | |
android:layout_height="0dp" | |
android:layout_marginStart="16dp" | |
android:layout_marginTop="16dp" | |
android:layout_marginEnd="16dp" | |
android:layout_marginBottom="16dp" | |
android:background="@android:color/darker_gray" | |
app:layout_constraintBottom_toTopOf="@+id/guideline" | |
app:layout_constraintEnd_toEndOf="parent" | |
app:layout_constraintStart_toStartOf="parent" | |
app:layout_constraintTop_toTopOf="parent" /> | |
<TextView | |
android:id="@+id/textView2" | |
android:layout_width="wrap_content" | |
android:layout_height="wrap_content" | |
android:text="#" | |
android:textSize="72sp" | |
app:layout_constraintBottom_toBottomOf="parent" | |
app:layout_constraintEnd_toEndOf="parent" | |
app:layout_constraintHorizontal_bias="0.5" | |
app:layout_constraintStart_toStartOf="parent" | |
app:layout_constraintTop_toTopOf="@+id/guideline" /> | |
</androidx.constraintlayout.widget.ConstraintLayout> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<androidx.constraintlayout.widget.ConstraintLayout 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"> | |
<SeekBar | |
android:id="@+id/sbBlue" | |
android:layout_width="0dp" | |
android:layout_height="wrap_content" | |
android:layout_marginStart="24dp" | |
android:layout_marginEnd="24dp" | |
android:max="255" | |
android:progress="127" | |
app:layout_constraintBottom_toTopOf="@+id/tvSwatch" | |
app:layout_constraintEnd_toEndOf="parent" | |
app:layout_constraintHorizontal_bias="0.5" | |
app:layout_constraintStart_toStartOf="parent" | |
app:layout_constraintTop_toBottomOf="@+id/sbGreen" /> | |
<SeekBar | |
android:id="@+id/sbGreen" | |
android:layout_width="0dp" | |
android:layout_height="wrap_content" | |
android:layout_marginStart="24dp" | |
android:layout_marginEnd="24dp" | |
android:max="255" | |
android:progress="127" | |
app:layout_constraintBottom_toTopOf="@+id/sbBlue" | |
app:layout_constraintEnd_toEndOf="parent" | |
app:layout_constraintHorizontal_bias="0.5" | |
app:layout_constraintStart_toStartOf="parent" | |
app:layout_constraintTop_toBottomOf="@+id/sbRed" /> | |
<SeekBar | |
android:id="@+id/sbRed" | |
android:layout_width="0dp" | |
android:layout_height="wrap_content" | |
android:layout_marginStart="24dp" | |
android:layout_marginTop="24dp" | |
android:layout_marginEnd="24dp" | |
android:max="255" | |
android:progress="127" | |
app:layout_constraintBottom_toTopOf="@+id/sbGreen" | |
app:layout_constraintEnd_toEndOf="parent" | |
app:layout_constraintHorizontal_bias="0.5" | |
app:layout_constraintStart_toStartOf="parent" | |
app:layout_constraintTop_toTopOf="parent" /> | |
<TextView | |
android:id="@+id/tvSwatch" | |
android:layout_width="100dp" | |
android:layout_height="100dp" | |
android:background="#7F7F7F" | |
app:layout_constraintBottom_toBottomOf="parent" | |
app:layout_constraintEnd_toEndOf="parent" | |
app:layout_constraintHorizontal_bias="0.5" | |
app:layout_constraintStart_toStartOf="parent" | |
app:layout_constraintTop_toBottomOf="@+id/sbBlue" /> | |
</androidx.constraintlayout.widget.ConstraintLayout> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package edu.ggc.lutz.dialogfragmentrgbpractice1sep; | |
import android.app.Dialog; | |
import android.content.Context; | |
import android.content.DialogInterface; | |
import android.graphics.Color; | |
import android.graphics.PorterDuff; | |
import android.os.Bundle; | |
import android.util.Log; | |
import android.view.LayoutInflater; | |
import android.view.View; | |
import android.widget.SeekBar; | |
import android.widget.TextView; | |
import androidx.annotation.NonNull; | |
import androidx.annotation.Nullable; | |
import androidx.appcompat.app.AlertDialog; | |
import androidx.fragment.app.DialogFragment; | |
public class EditDialogFragment extends DialogFragment { | |
private static final String LOG_TAG = "RGBDialog"; | |
private SeekBar sbRed, sbGreen, sbBlue; | |
private TextView tvSwatch; | |
private OnColorChangeListener colorListener; | |
public interface OnColorChangeListener { | |
void onColorChanged(int red, int green, int blue); | |
} | |
@NonNull | |
@Override | |
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { | |
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); | |
builder.setTitle(R.string.new_sel_rgb); | |
LayoutInflater inflater = requireActivity().getLayoutInflater(); // set the custom layout | |
View dialogView = inflater.inflate(R.layout.edit_color_dialog, null); | |
builder.setView(dialogView); | |
tvSwatch = dialogView.findViewById(R.id.tvSwatch); | |
sbRed = dialogView.findViewById(R.id.sbRed); | |
sbRed.getProgressDrawable().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN); | |
sbRed.getThumb().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN); | |
sbGreen = dialogView.findViewById(R.id.sbGreen); | |
sbGreen.getProgressDrawable().setColorFilter(Color.GREEN, PorterDuff.Mode.SRC_IN); | |
sbGreen.getThumb().setColorFilter(Color.GREEN, PorterDuff.Mode.SRC_IN); | |
sbBlue = dialogView.findViewById(R.id.sbBlue); | |
sbBlue.getProgressDrawable().setColorFilter(Color.BLUE, PorterDuff.Mode.SRC_IN); | |
sbBlue.getThumb().setColorFilter(Color.BLUE, PorterDuff.Mode.SRC_IN); | |
final SeekBar.OnSeekBarChangeListener listener = new SeekBar.OnSeekBarChangeListener() { | |
@Override | |
public void onProgressChanged(SeekBar seekBar, int i, boolean b) { | |
int bg = Color.rgb(sbRed.getProgress(),sbGreen.getProgress(),sbBlue.getProgress()); | |
tvSwatch.setBackgroundColor(bg); | |
} | |
@Override public void onStartTrackingTouch(SeekBar seekBar) { } | |
@Override public void onStopTrackingTouch(SeekBar seekBar) { } | |
}; | |
sbRed.setOnSeekBarChangeListener(listener); | |
sbGreen.setOnSeekBarChangeListener(listener); | |
sbBlue.setOnSeekBarChangeListener(listener); | |
builder.setPositiveButton(R.string.start, new DialogInterface.OnClickListener() { | |
public void onClick(DialogInterface dialog, int id) { | |
Log.v(LOG_TAG, "clicked Save."); | |
colorListener.onColorChanged(sbRed.getProgress(),sbGreen.getProgress(),sbBlue.getProgress()); | |
} | |
}); | |
builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { | |
public void onClick(DialogInterface dialog, int id) { | |
Log.v(LOG_TAG, "clicked cancel."); | |
} | |
}); | |
return builder.create(); | |
} | |
@Override | |
public void onAttach(@NonNull Context context) { | |
super.onAttach(context); | |
this.colorListener = (OnColorChangeListener) context; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package edu.ggc.lutz.dialogfragmentrgbpractice1sep; | |
import androidx.annotation.NonNull; | |
import androidx.appcompat.app.AppCompatActivity; | |
import androidx.fragment.app.FragmentManager; | |
import android.graphics.Color; | |
import android.graphics.PorterDuff; | |
import android.os.Bundle; | |
import android.view.Menu; | |
import android.view.MenuItem; | |
import android.widget.SeekBar; | |
import android.widget.TextView; | |
import java.util.zip.Inflater; | |
public class MainActivity extends AppCompatActivity implements EditDialogFragment.OnColorChangeListener { | |
private TextView tvSwatch; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_main); | |
tvSwatch = findViewById(R.id.tvSwatch); | |
} | |
@Override | |
public boolean onOptionsItemSelected(@NonNull MenuItem item) { | |
if (item.getItemId() == R.id.action_edit) { | |
FragmentManager manager = getSupportFragmentManager(); | |
EditDialogFragment dialog = new EditDialogFragment(); | |
dialog.show(manager, "edittDialog"); | |
} | |
return true; | |
} | |
@Override | |
public boolean onCreateOptionsMenu(Menu menu) { | |
getMenuInflater().inflate(R.menu.menu_main, menu); | |
return super.onCreateOptionsMenu(menu); | |
} | |
@Override | |
public void onColorChanged(int red, int green, int blue) { | |
int bg = Color.rgb(red,green,blue); | |
tvSwatch.setBackgroundColor(bg); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<resources> | |
<string name="app_name">DialogFragment RGB</string> | |
<string name="action_add">Edit</string> | |
<string name="action_settings">Settings</string> | |
<string name="new_sel_rgb">Select RGB</string> | |
<string name="start">Save</string> | |
<string name="cancel">Cancel</string> | |
</resources> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment