content: package com.arsy.maps_library;
  
  import android.content.res.Resources;
  import android.graphics.Bitmap;
  import android.graphics.Canvas;
  import android.graphics.drawable.BitmapDrawable;
  import android.graphics.drawable.Drawable;
  
  import com.google.android.gms.maps.model.BitmapDescriptor;
  import com.google.android.gms.maps.model.BitmapDescriptorFactory;
  
  /**
   * @author zTrap (05.10.2017)
   */
  public class UiUtil {
  
      public static BitmapDescriptor drawableToBitmapDescriptor(Drawable drawable) {
          Bitmap bitmap;
  
          if (drawable instanceof BitmapDrawable) {
              BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable;
              if (bitmapDrawable.getBitmap() != null) {
                  return BitmapDescriptorFactory.fromBitmap(bitmapDrawable.getBitmap());
              }
          }
          if (drawable.getIntrinsicWidth() <= 0 || drawable.getIntrinsicHeight() <= 0) {
              bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888); // Single color bitmap will be created of 1x1 pixel
          } else {
              bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
          }
  
          Canvas canvas = new Canvas(bitmap);
          drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
          drawable.draw(canvas);
          return BitmapDescriptorFactory.fromBitmap(bitmap);
      }
  
      public static int dpToPx(float dp){
          float density = Resources.getSystem().getDisplayMetrics().density;
          return (int) Math.ceil(dp * density);
      }
  }
  