2018-07-27 13:07:33 +00:00
|
|
|
package code.name.monkey.retromusic.views;
|
|
|
|
|
|
|
|
import android.annotation.SuppressLint;
|
|
|
|
import android.app.Dialog;
|
2018-11-13 03:30:08 +00:00
|
|
|
import android.content.Context;
|
2018-11-05 13:53:07 +00:00
|
|
|
import android.graphics.Color;
|
|
|
|
import android.graphics.drawable.ColorDrawable;
|
2018-07-27 13:07:33 +00:00
|
|
|
import android.os.Bundle;
|
2018-09-23 10:04:43 +00:00
|
|
|
import android.view.View;
|
2018-11-13 03:30:08 +00:00
|
|
|
import android.view.ViewGroup;
|
2018-09-23 10:04:43 +00:00
|
|
|
import android.view.Window;
|
|
|
|
import android.widget.FrameLayout;
|
2018-08-08 08:03:38 +00:00
|
|
|
|
2018-09-23 10:04:43 +00:00
|
|
|
import com.google.android.material.bottomsheet.BottomSheetBehavior;
|
2018-08-30 09:29:30 +00:00
|
|
|
import com.google.android.material.bottomsheet.BottomSheetDialog;
|
2018-11-05 13:53:07 +00:00
|
|
|
|
2018-11-14 03:18:22 +00:00
|
|
|
import java.util.Objects;
|
|
|
|
|
2018-08-30 09:29:30 +00:00
|
|
|
import androidx.annotation.NonNull;
|
2018-09-09 19:44:46 +00:00
|
|
|
import androidx.annotation.Nullable;
|
2018-11-13 03:30:08 +00:00
|
|
|
import androidx.annotation.StyleRes;
|
|
|
|
import androidx.appcompat.app.AppCompatDialogFragment;
|
2018-08-08 08:03:38 +00:00
|
|
|
import code.name.monkey.appthemehelper.ThemeStore;
|
2018-11-13 03:30:08 +00:00
|
|
|
import code.name.monkey.appthemehelper.util.VersionUtils;
|
2018-07-27 13:07:33 +00:00
|
|
|
import code.name.monkey.retromusic.R;
|
2018-11-05 13:53:07 +00:00
|
|
|
import code.name.monkey.retromusic.ui.activities.base.AbsBaseActivity;
|
2018-11-14 03:18:22 +00:00
|
|
|
import code.name.monkey.retromusic.util.PreferenceUtil;
|
2018-11-13 03:30:08 +00:00
|
|
|
import code.name.monkey.retromusic.util.RetroUtil;
|
2018-07-27 13:07:33 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Created by yu on 2016/11/10.
|
|
|
|
*/
|
|
|
|
@SuppressLint("RestrictedApi")
|
2018-11-13 03:30:08 +00:00
|
|
|
public class RoundedBottomSheetDialogFragment extends AppCompatDialogFragment {
|
2018-07-27 13:07:33 +00:00
|
|
|
|
2018-09-23 10:04:43 +00:00
|
|
|
@Override
|
|
|
|
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
|
|
|
super.onViewCreated(view, savedInstanceState);
|
2018-11-05 13:53:07 +00:00
|
|
|
view.getViewTreeObserver().addOnGlobalLayoutListener(() -> {
|
|
|
|
BottomSheetDialog dialog = (BottomSheetDialog) getDialog();
|
|
|
|
FrameLayout bottomSheet = dialog.findViewById(R.id.design_bottom_sheet);
|
|
|
|
if (bottomSheet != null) {
|
2018-09-23 10:04:43 +00:00
|
|
|
BottomSheetBehavior behavior = BottomSheetBehavior.from(bottomSheet);
|
|
|
|
behavior.setState(BottomSheetBehavior.STATE_EXPANDED);
|
2018-11-13 03:30:08 +00:00
|
|
|
bottomSheet.setBackground(RetroUtil.getTintedDrawable(getContext(), R.drawable.bg_bottom_sheet_dialog_fragment, ThemeStore.primaryColor(getContext())));
|
2018-09-23 10:04:43 +00:00
|
|
|
}
|
|
|
|
});
|
2018-11-13 03:30:08 +00:00
|
|
|
if (getActivity() != null) {
|
|
|
|
if (VersionUtils.hasNougat()) {
|
|
|
|
((AbsBaseActivity) getActivity()).setNavigationbarColor(ThemeStore.primaryColor(getContext()));
|
|
|
|
} else {
|
|
|
|
((AbsBaseActivity) getActivity()).setNavigationbarColorAuto();
|
|
|
|
}
|
|
|
|
}
|
2018-09-23 10:04:43 +00:00
|
|
|
}
|
|
|
|
|
2018-08-08 08:03:38 +00:00
|
|
|
@NonNull
|
|
|
|
@Override
|
|
|
|
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
|
|
|
//noinspection ConstantConditions
|
2018-11-13 03:30:08 +00:00
|
|
|
return new CustomWidthBottomSheetDialog(getContext(), getTheme());
|
2018-07-27 13:07:33 +00:00
|
|
|
}
|
2018-09-23 10:04:43 +00:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onStart() {
|
|
|
|
super.onStart();
|
2018-11-05 13:53:07 +00:00
|
|
|
if (getDialog() != null && getDialog().getWindow() != null) {
|
2018-09-23 10:04:43 +00:00
|
|
|
Window window = getDialog().getWindow();
|
2018-11-05 13:53:07 +00:00
|
|
|
window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
|
|
|
window.setNavigationBarColor(ThemeStore.primaryColor(getContext()));
|
|
|
|
window.findViewById(com.google.android.material.R.id.container).setFitsSystemWindows(true);
|
2018-09-23 10:04:43 +00:00
|
|
|
}
|
|
|
|
}
|
2018-11-13 03:30:08 +00:00
|
|
|
|
|
|
|
static class CustomWidthBottomSheetDialog extends BottomSheetDialog {
|
|
|
|
CustomWidthBottomSheetDialog(@NonNull Context context, @StyleRes int theme) {
|
|
|
|
super(context, theme);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
|
|
super.onCreate(savedInstanceState);
|
|
|
|
int width = getContext().getResources().getDimensionPixelSize(R.dimen.bottom_sheet_width);
|
2018-11-14 03:18:22 +00:00
|
|
|
Objects.requireNonNull(getWindow()).setLayout(width > 0 ? width : ViewGroup.LayoutParams.MATCH_PARENT,
|
2018-11-13 03:30:08 +00:00
|
|
|
ViewGroup.LayoutParams.MATCH_PARENT);
|
|
|
|
}
|
|
|
|
}
|
2018-07-27 13:07:33 +00:00
|
|
|
}
|