android - Trouble displaying a bitmap in a custom view using canvas -


im attempting write android app allows select image gallery, via intent, analysed facedetector , displayed in same view. i'm having trouble displaying image far. can help?? in advance

xml

    <?xml version="1.0" encoding="utf-8"?>     <linearlayout xmlns:android="http://schemas.android.com/apk/res/android"     android:orientation="vertical"     android:layout_width="fill_parent"     android:layout_height="fill_parent"     android:id="@+id/linearlayout" >      <textview         android:layout_width="fill_parent"         android:layout_height="wrap_content"         android:text="@string/hello"     />      <button         android:id="@+id/loadimage"         android:layout_width="fill_parent"         android:layout_height="wrap_content"         android:text="load image"     />      <textview         android:id="@+id/targeturi"         android:layout_width="fill_parent"         android:layout_height="wrap_content"     />      <view         class="com.example.facedetectionstaticcamera.myview"         android:id="@+id/analysedimage"         android:layout_width="fill_parent"         android:layout_height="wrap_content"     />       </linearlayout> 

mainactivity

    package com.example.facedetectionstaticcamera;      import java.io.filenotfoundexception;     import android.app.activity;     import android.content.intent;     import android.graphics.bitmap;     import android.graphics.bitmapfactory;     import android.net.uri;     import android.os.bundle;     import android.util.log;     import android.view.view;     import android.widget.button;     import android.widget.linearlayout;     import android.widget.textview;        public class mainactivity extends activity {  public static final int media_type_image = 1; textview texttargeturi;      @override      public void oncreate(bundle savedinstancestate) {        super.oncreate(savedinstancestate);        setcontentview(r.layout.activity_main);          button buttonloadimage = (button)findviewbyid(r.id.loadimage);        texttargeturi = (textview)findviewbyid(r.id.targeturi);         buttonloadimage.setonclicklistener(new button.onclicklistener(){      @override     public void onclick(view view){        intent intent = new intent(intent.action_pick,                          android.provider.mediastore.images.media.external_content_uri);        startactivityforresult(intent, 0);     }     });         }         @override     protected void onactivityresult(int requestcode, int resultcode, intent data) {           super.onactivityresult(requestcode, resultcode, data);          if (resultcode == result_ok){         uri targeturi = data.getdata();         texttargeturi.settext(targeturi.tostring());         bitmap bitmap;         try {         bitmapfactory.options bitmapfactoryoptionsbfo = new bitmapfactory.options();      bitmapfactoryoptionsbfo.inpreferredconfig = bitmap.config.rgb_565;          bitmap = bitmapfactory.decodestream(getcontentresolver().openinputstream(targeturi), null, bitmapfactoryoptionsbfo);         linearlayout v = (linearlayout) findviewbyid(r.id.linearlayout);         myview newview = new myview(this, null);             myview.setbitmap(bitmap);             v.addview(newview);             bitmap.recycle();          } catch (filenotfoundexception e) {                     e.printstacktrace();      }      }     }     } 

myview

     package com.example.facedetectionstaticcamera;       import java.io.file;      import com.example.facedetectionstaticcamera.r;      import android.content.context;      import android.content.intent;      import android.graphics.bitmap;      import android.graphics.bitmapfactory;      import android.graphics.canvas;      import android.graphics.color;      import android.graphics.paint;      import android.graphics.pointf;      import android.media.facedetector;      import android.media.facedetector.face;      import android.os.environment;      import android.util.attributeset;      import android.util.log;      import android.view.view;      import android.widget.imageview;       public class myview extends view{  static bitmap mybitmap;   public static void setbitmap(bitmap bitmap) {     mybitmap = bitmap;  }  public myview(context context, attributeset attrs) {     super(context, attrs);  } @override  public void ondraw(canvas canvas) {              canvas.drawbitmap(mybitmap, 0, 0, null);  } } 

pls can try adding invalidate() call:

public static void setbitmap(bitmap bitmap) {  mybitmap = bitmap;  this.invalidate(); } 

Comments