mirror of https://github.com/FongMi/TV.git
parent
d2be54d6d0
commit
39f434c19b
@ -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.DialogDanmuMaxlineBinding; |
||||
import com.fongmi.android.tv.impl.DanmuMaxLineCallback; |
||||
import com.fongmi.android.tv.utils.KeyUtil; |
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder; |
||||
|
||||
public class DanmuMaxLineDialog { |
||||
|
||||
private final DialogDanmuMaxlineBinding binding; |
||||
private final DanmuMaxLineCallback callback; |
||||
private final AlertDialog dialog; |
||||
|
||||
public static DanmuMaxLineDialog create(FragmentActivity activity) { |
||||
return new DanmuMaxLineDialog(activity); |
||||
} |
||||
|
||||
public DanmuMaxLineDialog(FragmentActivity activity) { |
||||
this.callback = (DanmuMaxLineCallback) activity; |
||||
this.binding = DialogDanmuMaxlineBinding.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.getDanmuMaxLine(3)); |
||||
} |
||||
|
||||
private void initEvent() { |
||||
binding.slider.addOnChangeListener((slider, value, fromUser) -> callback.setDanmuMaxLine((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="1" |
||||
android:valueFrom="1" |
||||
android:valueTo="15" |
||||
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 DanmuMaxLineCallback { |
||||
|
||||
void setDanmuMaxLine(int maxLine); |
||||
} |
||||
@ -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.DialogDanmuMaxlineBinding; |
||||
import com.fongmi.android.tv.impl.DanmuMaxLineCallback; |
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder; |
||||
|
||||
public class DanmuMaxLineDialog { |
||||
|
||||
private final DialogDanmuMaxlineBinding binding; |
||||
private final DanmuMaxLineCallback callback; |
||||
private int value; |
||||
|
||||
public static DanmuMaxLineDialog create(Fragment fragment) { |
||||
return new DanmuMaxLineDialog(fragment); |
||||
} |
||||
|
||||
public DanmuMaxLineDialog(Fragment fragment) { |
||||
this.callback = (DanmuMaxLineCallback) fragment; |
||||
this.binding = DialogDanmuMaxlineBinding.inflate(LayoutInflater.from(fragment.getContext())); |
||||
} |
||||
|
||||
public void show() { |
||||
initDialog(); |
||||
initView(); |
||||
} |
||||
|
||||
private void initDialog() { |
||||
AlertDialog dialog = new MaterialAlertDialogBuilder(binding.getRoot().getContext()).setTitle(R.string.setting_danmu_maxline).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.getDanmuMaxLine(2)); |
||||
} |
||||
|
||||
private void onPositive(DialogInterface dialog, int which) { |
||||
callback.setDanmuMaxLine((int) binding.slider.getValue()); |
||||
dialog.dismiss(); |
||||
} |
||||
|
||||
private void onNegative(DialogInterface dialog, int which) { |
||||
callback.setDanmuMaxLine(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="1" |
||||
android:valueFrom="1" |
||||
android:valueTo="15" |
||||
app:trackColorInactive="@color/blue_50" /> |
||||
|
||||
</LinearLayout> |
||||
Loading…
Reference in new issue