PlayerAndroid/app/src/main/java/code/name/monkey/retromusic/views/RoundedBottomSheetDialogFra...

88 lines
3.5 KiB
Java
Raw Normal View History

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
}