BotomDialog

链接传送门

  1. 获取dailog实例

         private void showDialog() {
         Dialog dialog = new Dialog(getActivity(), R.style.BottomDialog);
     //        View contentView = LayoutInflater.from(getActivity()).inflate(R.layout.dialog_content_circle, null);
             View contentView = LayoutInflater.from(getActivity()).inflate(R.layout.dialog_content_nomal, null);
             dialog.setContentView(contentView);
             ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) contentView.getLayoutParams();
     //        params.width = getResources().getDisplayMetrics().widthPixels - DensityUtil.dp2px(getActivity(), 16f);
     //        params.bottomMargin = DensityUtil.dp2px(getActivity(), 8f);
             params.width = getResources().getDisplayMetrics().widthPixels;
         contentView.setLayoutParams(params);
         dialog.setCanceledOnTouchOutside(true);
         dialog.getWindow().setGravity(Gravity.BOTTOM);
         dialog.getWindow().setWindowAnimations(R.style.BottomDialog_Animation);
         dialog.show();
     }
    
  2. 在style中配置相关的动画和dialog主题

    

    
  1. anim中dialog的动画

    • translate_dialog_in.xml

        
        
        
        
      
    • translate_dialog_out.xml

        
        
        
        
      
  2. 像素转换工具类

    import android.content.Context;
    import android.util.TypedValue;

    public class DensityUtil {
        /**
         * dp转px
         *
         * @param context
         * @param dpVal
         * @return
         */
        public static int dp2px(Context context, float dpVal) {
            return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpVal,
                    context.getResources().getDisplayMetrics());
        }
    
        /**
         * sp转px
         *
         * @param context
         * @param spVal
         * @return
         */
        public static int sp2px(Context context, float spVal) {
            return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, spVal,
                    context.getResources().getDisplayMetrics());
        }
    
        /**
         * px转dp
         *
         * @param context
         * @param pxVal
         * @return
         */
        public static float px2dp(Context context, float pxVal) {
            final float scale = context.getResources().getDisplayMetrics().density;
            return (pxVal / scale);
        }
    
        /**
         * px转sp
         *
         * @param pxVal
         * @param pxVal
         * @return
         */
        public static float px2sp(Context context, float pxVal) {
            return (pxVal / context.getResources().getDisplayMetrics().scaledDensity);
        }
    }
  1. layout相关布局

         
     
     
         
     
         
     
         
     
         
     
         
     
         
     

你可能感兴趣的:(BotomDialog)