title: Android get width of Screen
body: <p>Android:
  Hey I want to retrive the width of the screen and divide it by 3. I want to use this length in LayoutParams, but it is not working. What am I doing wrong ? The app crashes at // 1.</p>
  
  <pre><code>public class LoaderImageView extends LinearLayout {
  
  private Context mContext;
  private Drawable mDrawable;
  private ProgressBar mSpinner;
  private ImageView mImage;
  Context ctx;
  Display display;
  
  public LoaderImageView(Context context, AttributeSet attrs) {
      super(context, attrs);
      init(context);
  }
  
  public LoaderImageView(Context context) {
      super(context);
      init(context);
  }
  
  /**
   * First time loading of the LoaderImageView
   * Sets up the LayoutParams of the view, you can change these to
   * get the required effects you want
   */
  private void init(final Context context) {
      mContext = context;
  </code></pre>
  
  <p>//1.
      //this is were the application crashes, from here </p>
  
  <pre><code>    Display display = getWindowManager().getDefaultDisplay();
      Point size = new Point();
      display.getSize(size);
      int width = size.x;
      int height = size.y;
  </code></pre>
  
  <p>// to here</p>
  
  <pre><code>    mImage = new ImageView(mContext);
      mImage.setLayoutParams(new LayoutParams((width/3), 150));
      mImage.setVisibility(View.GONE);
      mImage.setBackgroundColor(Color.WHITE);
      mImage.setPadding(3, 3, 3, 3);
  
  
  
      mSpinner = new ProgressBar(mContext);
      mSpinner.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
  
      mSpinner.setIndeterminate(true);
  
      addView(mSpinner);
      addView(mImage);
  
  
  }
  
  /**
   * Set's the view's drawable, this uses the internet to retrieve the image
   * don't forget to add the correct permissions to your manifest
   * 
   * @param imageUrl the url of the image you wish to load
   */
  public void setImageDrawable(final String imageUrl) {
      mDrawable = null;
      mSpinner.setVisibility(View.VISIBLE);
      mImage.setVisibility(View.GONE);
      new Thread() {
          public void run() {
              try {
                  mDrawable = getDrawableFromUrl(imageUrl);
                  imageLoadedHandler.sendEmptyMessage(RESULT_OK);
              } catch (MalformedURLException e) {
                  imageLoadedHandler.sendEmptyMessage(RESULT_CANCELED);
              } catch (IOException e) {
                  imageLoadedHandler.sendEmptyMessage(RESULT_CANCELED);
              }
          };
      }.start();
  }
  
  /**
   * Callback that is received once the image has been downloaded
   */
  private final Handler imageLoadedHandler = new Handler(new Callback() {
  
      public boolean handleMessage(Message msg) {
          switch (msg.what) {
          case RESULT_OK:
              mImage.setImageDrawable(mDrawable);
              mImage.setVisibility(View.VISIBLE);
              mSpinner.setVisibility(View.GONE);
              break;
          case RESULT_CANCELED:
          default:
              // Could change image here to a 'failed' image
              // otherwise will just keep on spinning
              break;
          }
          return true;
      }
  });
  
  /**
   * Pass in an image url to get a drawable object
   * 
   * @return a drawable object
   * @throws IOException
   * @throws MalformedURLException
   */
  private static Drawable getDrawableFromUrl(final String url) throws IOException, MalformedURLException {
      return Drawable.createFromStream(((java.io.InputStream) new java.net.URL(url).getContent()), "name");
  }
  
  }
  </code></pre>