title: How can i set the height and width of drawable.setBounds method to display the image properly in different devices perfectly in textview
body: <p>I have an app in which HTML pages come through the API which contains images and text. I am able to display the text and parse the images as well in a text view. But the Image height and width are not perfect. I am using <code>drawable.setBounds()</code> method to set the height and width of the image, but if I set it to static suppose <code>drawable.setBounds(0, 0,1020,600)</code>, the images come different in different screen sizes. I want to scale the images according to different screen sizes. How can I do that? Below is my code of ImageParser.</p>
  
  <p><strong>URLImageParser.java</strong></p>
  
  <pre><code> public class URLImageParser implements Html.ImageGetter {
              Context c;
              TextView container;
  
  
              /***
               * Construct the URLImageParser which will execute AsyncTask and refresh the container
               * @param t
               * @param c
               */
              public URLImageParser(TextView t, Context c) {
                  this.c = c;
  
                  this.container = t;
              }
  
              public Drawable getDrawable(String source) {
                  URLDrawable urlDrawable = new URLDrawable();
  
                  // get the actual source
                  ImageGetterAsyncTask asyncTask =
                          new ImageGetterAsyncTask( urlDrawable);
  
                  asyncTask.execute(source);
  
                  // return reference to URLDrawable where I will change with actual image from
                  // the src tag
                  return urlDrawable;
              }
  
              public class ImageGetterAsyncTask extends AsyncTask&lt;String, Void, Drawable&gt; {
                  URLDrawable urlDrawable;
  
                  public ImageGetterAsyncTask(URLDrawable d) {
                      this.urlDrawable = d;
                  }
  
  
  
                  @Override
                  protected Drawable doInBackground(String... params) {
                      String source = params[0];
  
                      try {
                          URL url= new URL(source);
                          URI uri = new URI(url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), url.getPath(), url.getQuery(), url.getRef());
                          source=uri.toASCIIString();
  
  
                      } catch (MalformedURLException e) {
                          e.printStackTrace();
                      } catch (URISyntaxException e) {
                          e.printStackTrace();
                      }
                      //Toast.makeText(context, source, Toast.LENGTH_SHORT).show();
  
                      Log.d("Resp",source);
  
                      return fetchDrawable(source);
                  }
  
  
                  @Override
                  protected void onPostExecute(Drawable result) {
                      // set the correct bound according to the result from HTTP call
                      urlDrawable.setBounds(0, 0, 0 + result.getIntrinsicWidth(), 0
                              + result.getIntrinsicHeight());
  
                      // change the reference of the current drawable to the result
                      // from the HTTP call
                      urlDrawable.drawable = result;
  
                      // redraw the image by invalidating the container
                      URLImageParser.this.container.invalidate();
                      URLImageParser.this.container.setHeight((URLImageParser.this.container.getHeight()
                              + result.getIntrinsicHeight()));
  
  
                  }
  
                  /***
                   * Get the Drawable from URL
                   * @param urlString
                   * @return
                   */
                  public Drawable fetchDrawable(String urlString) {
                      try {
                          InputStream is = fetch(urlString);
                          Drawable drawable = Drawable.createFromStream(is, "src");
                          drawable.setBounds(0, 0,800,600);
                          return drawable;
                      } catch (Exception e) {
                          return null;
                      }
                  }
  
                  private InputStream fetch(String urlString) throws MalformedURLException, IOException {
                      DefaultHttpClient httpClient = new DefaultHttpClient();
                      HttpGet request = new HttpGet(urlString);
                      HttpResponse response = httpClient.execute(request);
                      return response.getEntity().getContent();
                  }
              }
          }
  </code></pre>