package net.arvin.afbaselibrary.uis.dialogs; import android.app.Dialog; import android.content.Context; import android.support.annotation.NonNull; import android.support.annotation.StyleRes; import android.view.Gravity; import android.view.WindowManager; import android.widget.Toast; import net.arvin.afbaselibrary.R; import net.arvin.afbaselibrary.data.AFConstant; import net.arvin.afbaselibrary.utils.AFSizeUtil; import butterknife.ButterKnife; /** * Created by arvinljw on 17/5/15 01:38 * Function: * Desc: */ @SuppressWarnings("WeakerAccess") public abstract class BaseDialog extends Dialog { public BaseDialog(@NonNull Context context, @StyleRes int themeResId) { super(context, themeResId); setContentView(getContentView()); ButterKnife.bind(this); resetDialogSize(); initView(); } protected void resetDialogSize() { if (getWindow() != null) { WindowManager.LayoutParams params = getWindow().getAttributes(); params.width = getWidth(); params.height = getHeight(); getWindow().setAttributes(params); } } protected int getWidth() { return (int) (0.8f * AFSizeUtil.getScreenWidth(getContext())); } protected int getHeight() { return WindowManager.LayoutParams.WRAP_CONTENT; } /** * 实现从底部弹出的方法,在构造方法或者initView中执行该方法即可; * 通常若要使用从底部弹出,则需要重写{@link #getWidth()}方法,宽就应占满屏幕更美观 */ protected void showFromBottom() { if (getWindow() != null) { getWindow().setGravity(Gravity.BOTTOM); getWindow().setWindowAnimations(R.style.af_anim_bottom_in); } } protected void showToast(String message) { int during = Toast.LENGTH_SHORT; if (message.length() > AFConstant.TOAST_LONG_MESSAGE_LENGTH) { during = Toast.LENGTH_LONG; } Toast.makeText(getContext(), message, during).show(); } protected abstract int getContentView(); protected abstract void initView(); }