java - Save view like bitmap, I only get black screen -


i have drawing application , have methods saving pictures drawn. black bitmap picture save button. problem ?

there xml

<relativelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"  android:id="@+id/all" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/black" tools:context=".circle"     >  <org.vkedco.mobappdev.draw_touch_drive_00001.krouzky     android:id="@+id/pntr"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:layout_alignparentleft="true"     android:layout_alignparenttop="true"     android:tag="painter" />     <textview     android:id="@+id/textview3"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:layout_alignleft="@+id/textview3"     android:layout_below="@+id/button4"     android:layout_margintop="50dp"     android:text="value"     android:textcolor="@color/white" />   <button     android:id="@+id/button3"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:layout_alignparenttop="true"     android:layout_torightof="@+id/button2"     android:text="add" />   <button     android:id="@+id/button4"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:layout_alignparentright="true"     android:layout_alignparenttop="true"     android:text="delete" />    <button     android:id="@+id/button6"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:layout_alignparentleft="true"     android:layout_alignparenttop="true"     android:text="save"     android:layout_margintop="45dp"     android:layout_alignleft="@+id/button3" />     <button     android:id="@+id/button5"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:layout_alignparentright="true"     android:layout_alignparenttop="true"     android:text="clear"     android:layout_margintop="45dp"     android:layout_alignright="@+id/button3" />   <linearlayout       android:orientation="vertical"      android:layout_height="match_parent"       android:id="@+id/linearlayout"      android:layout_width="match_parent" /> 

and main activity:

public class aktivita extends activity{ button btn; public linearlayout mcontent; krouzky mtictactoeview = null; public static string tempdir; public file mypath;  public static bitmap mbitmap; public static int width; public static int height; public static float x; public static float y; public static float x; public static float y; public static double vzdalenost;  public string current = null;  private string uniqueid;  public krouzky msignature;  public view mview;     public void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.zaznam_ran);          krouzky.t = 0;          file directory = new file(environment.getexternalstoragedirectory() + "/images");    if(!directory.exists())         directory.mkdir();     uniqueid = gettodaysdate() + "_" + getcurrenttime();    current = uniqueid + ".png";      mypath= new file(directory,current);     mcontent = (linearlayout) findviewbyid(r.id.linearlayout);     msignature = new krouzky(this, null);    msignature.setbackgroundcolor(color.transparent);    mcontent.addview(msignature, layoutparams.fill_parent, layoutparams.fill_parent);     mview = mcontent;          display display = getwindowmanager().getdefaultdisplay();      width = (display.getwidth());      height = (display.getheight());             mtictactoeview = (krouzky) this.findviewbyid(r.id.pntr);           button btn6 = (button) findviewbyid(r.id.button6);          btn6.setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view v) {                      log.v("log_tag", "panel saved");                          mview.setdrawingcacheenabled(true);                        save(v);                      }           });  }      private boolean preparedirectory()     {         try         {             if (makedirs())             {                 return true;             }             else              {                 return false;             }         }          catch (exception e)         {             e.printstacktrace();             toast.maketext(this, "could not initiate file system.. sdcard mounted properly?", 1000).show();             return false;         }     }      private boolean makedirs()       {         file tempdir = new file(tempdir);         if (!tempdir.exists())             tempdir.mkdirs();          if (tempdir.isdirectory())         {             file[] files = tempdir.listfiles();             (file file : files)             {                 if (!file.delete())                 {                     system.out.println("failed delete " + file);                 }             }         }         return (tempdir.isdirectory());     }    

method saving

    public  void save(view v)     {         log.v("log_tag", "width: " + v.getwidth());         log.v("log_tag", "height: " + v.getheight());         if(mbitmap == null)         {             mbitmap =  bitmap.createbitmap (width, height, bitmap.config.rgb_565);         }         canvas canvas = new canvas(mbitmap);         try         {              fileoutputstream mfileoutstream = new fileoutputstream(mypath);              v.draw(canvas);             mbitmap.compress(bitmap.compressformat.png, 90, mfileoutstream);             mfileoutstream.flush();             mfileoutstream.close();           }         catch(exception e)         {             log.v("log_tag", e.tostring());         }     } 

my problem, resolved, have 1 small detail. application down, when change xml. this.

<relativelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"  android:id="@+id/rl" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/black" tools:context=".circle" >  <org.vkedco.mobappdev.draw_touch_drive_00001.krouzky     android:id="@+id/pntr"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:layout_alignparentleft="true"     android:layout_alignparenttop="true"     android:tag="painter" />  <button     android:id="@+id/button3"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:layout_alignparenttop="true"     android:layout_torightof="@+id/button2"     android:text="add" />   <button     android:id="@+id/button4"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:layout_alignparentright="true"     android:layout_alignparenttop="true"     android:text="delete" />    <button     android:id="@+id/button6"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:layout_alignparentleft="true"     android:layout_alignparenttop="true"     android:text="save"     android:layout_margintop="45dp"     android:layout_alignleft="@+id/button3" />     <button     android:id="@+id/button5"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:layout_alignparentright="true"     android:layout_alignparenttop="true"     android:text="clear"     android:layout_margintop="45dp"     android:layout_alignright="@+id/button3" />  <linearlayout       android:orientation="vertical"      android:layout_height="match_parent"       android:id="@+id/linearlayout"      android:layout_width="match_parent" >  </linearlayout>  <textview     android:id="@+id/textview3"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:layout_alignparentleft="true"     android:layout_below="@+id/button6"     android:layout_margintop="21dp"     android:text="value"     android:textcolor="@color/blue" /> 

actually passing view (v) of button btn6 in method save(v)- pass linear layout object mcontent or mview, save(mcontent), solve problem

you can try method also-

pass parent layout or view in method-

 bitmap file = save(mcontent);   bitmap save(view v)    {     bitmap b = bitmap.createbitmap(v.getwidth(), v.getheight(), bitmap.config.argb_8888);     canvas c = new canvas(b);     v.draw(c);     return b;    } 

Comments

Popular posts from this blog

Unable to remove the www from url on https using .htaccess -