mirror of https://github.com/FongMi/TV.git
commit
88a4ba2df5
@ -0,0 +1,53 @@ |
||||
package com.fongmi.android.tv.ui.dialog; |
||||
|
||||
import android.view.LayoutInflater; |
||||
|
||||
import androidx.appcompat.app.AlertDialog; |
||||
import androidx.fragment.app.FragmentActivity; |
||||
|
||||
import com.fongmi.android.tv.Setting; |
||||
import com.fongmi.android.tv.databinding.DialogDanmuAlphaBinding; |
||||
import com.fongmi.android.tv.impl.DanmuAlphaCallback; |
||||
import com.fongmi.android.tv.utils.KeyUtil; |
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder; |
||||
|
||||
public class DanmuAlphaDialog { |
||||
|
||||
private final DialogDanmuAlphaBinding binding; |
||||
private final DanmuAlphaCallback callback; |
||||
private final AlertDialog dialog; |
||||
|
||||
public static DanmuAlphaDialog create(FragmentActivity activity) { |
||||
return new DanmuAlphaDialog(activity); |
||||
} |
||||
|
||||
public DanmuAlphaDialog(FragmentActivity activity) { |
||||
this.callback = (DanmuAlphaCallback) activity; |
||||
this.binding = DialogDanmuAlphaBinding.inflate(LayoutInflater.from(activity)); |
||||
this.dialog = new MaterialAlertDialogBuilder(activity).setView(binding.getRoot()).create(); |
||||
} |
||||
|
||||
public void show() { |
||||
initDialog(); |
||||
initView(); |
||||
initEvent(); |
||||
} |
||||
|
||||
private void initDialog() { |
||||
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent); |
||||
dialog.show(); |
||||
} |
||||
|
||||
private void initView() { |
||||
binding.slider.setValue(Setting.getDanmuAlpha()); |
||||
} |
||||
|
||||
private void initEvent() { |
||||
binding.slider.addOnChangeListener((slider, value, fromUser) -> callback.setDanmuAlpha((int) value)); |
||||
binding.slider.setOnKeyListener((view, keyCode, event) -> { |
||||
boolean enter = KeyUtil.isEnterKey(event); |
||||
if (enter) dialog.dismiss(); |
||||
return enter; |
||||
}); |
||||
} |
||||
} |
||||
@ -0,0 +1,19 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" |
||||
xmlns:app="http://schemas.android.com/apk/res-auto" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="wrap_content" |
||||
android:padding="48dp"> |
||||
|
||||
<com.google.android.material.slider.Slider |
||||
android:id="@+id/slider" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="wrap_content" |
||||
android:stepSize="5" |
||||
android:valueFrom="10" |
||||
android:valueTo="100" |
||||
app:thumbColor="@color/blue_500" |
||||
app:trackColorActive="@color/blue_500" |
||||
app:trackColorInactive="@color/blue_50" /> |
||||
|
||||
</FrameLayout> |
||||
@ -0,0 +1,6 @@ |
||||
package com.fongmi.android.tv.impl; |
||||
|
||||
public interface DanmuAlphaCallback { |
||||
|
||||
void setDanmuAlpha(int alpha); |
||||
} |
||||
@ -0,0 +1,54 @@ |
||||
package com.fongmi.android.tv.ui.dialog; |
||||
|
||||
import android.content.DialogInterface; |
||||
import android.view.LayoutInflater; |
||||
|
||||
import androidx.appcompat.app.AlertDialog; |
||||
import androidx.fragment.app.Fragment; |
||||
|
||||
import com.fongmi.android.tv.R; |
||||
import com.fongmi.android.tv.Setting; |
||||
import com.fongmi.android.tv.databinding.DialogDanmuAlphaBinding; |
||||
import com.fongmi.android.tv.impl.DanmuAlphaCallback; |
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder; |
||||
|
||||
public class DanmuAlphaDialog { |
||||
|
||||
private final DialogDanmuAlphaBinding binding; |
||||
private final DanmuAlphaCallback callback; |
||||
private int value; |
||||
|
||||
public static DanmuAlphaDialog create(Fragment fragment) { |
||||
return new DanmuAlphaDialog(fragment); |
||||
} |
||||
|
||||
public DanmuAlphaDialog(Fragment fragment) { |
||||
this.callback = (DanmuAlphaCallback) fragment; |
||||
this.binding = DialogDanmuAlphaBinding.inflate(LayoutInflater.from(fragment.getContext())); |
||||
} |
||||
|
||||
public void show() { |
||||
initDialog(); |
||||
initView(); |
||||
} |
||||
|
||||
private void initDialog() { |
||||
AlertDialog dialog = new MaterialAlertDialogBuilder(binding.getRoot().getContext()).setTitle(R.string.player_danmu_alpha).setView(binding.getRoot()).setPositiveButton(R.string.dialog_positive, this::onPositive).setNegativeButton(R.string.dialog_negative, this::onNegative).create(); |
||||
dialog.getWindow().setDimAmount(0); |
||||
dialog.show(); |
||||
} |
||||
|
||||
private void initView() { |
||||
binding.slider.setValue(value = Setting.getDanmuAlpha()); |
||||
} |
||||
|
||||
private void onPositive(DialogInterface dialog, int which) { |
||||
callback.setDanmuAlpha((int) binding.slider.getValue()); |
||||
dialog.dismiss(); |
||||
} |
||||
|
||||
private void onNegative(DialogInterface dialog, int which) { |
||||
callback.setDanmuAlpha(value); |
||||
dialog.dismiss(); |
||||
} |
||||
} |
||||
@ -0,0 +1,20 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" |
||||
xmlns:app="http://schemas.android.com/apk/res-auto" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="wrap_content" |
||||
android:orientation="vertical" |
||||
android:paddingStart="24dp" |
||||
android:paddingTop="16dp" |
||||
android:paddingEnd="24dp"> |
||||
|
||||
<com.google.android.material.slider.Slider |
||||
android:id="@+id/slider" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="wrap_content" |
||||
android:stepSize="5" |
||||
android:valueFrom="10" |
||||
android:valueTo="100" |
||||
app:trackColorInactive="@color/blue_50" /> |
||||
|
||||
</LinearLayout> |
||||
Loading…
Reference in new issue