2013-07-09 55 views
0

您好朋友是新來的android。我創建了一個填充4個選項卡的應用程序表單,現在如果其編輯文本填充按鈕點擊保存,則需要佈局的屏幕截圖。是否有可能在Android的做,如果沒有任何格式,但我想等領域的副本,它的形象需要TabHost佈局的位圖圖像

Calendar.setOnClickListener(new OnClickListener() { 
@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    //getScreenViewBitmap(vs); 
    loadBitmapFromView(vs); 
} 
}); 
} 
public static RelativeLayout createProgrammeView 
(Context context, int width, int height, String title, String time) { 
    RelativeLayout.LayoutParams params; 


    RelativeLayout rlv = new RelativeLayout(context); 
    params = new RelativeLayout.LayoutParams(width, height); 
    rlv.setLayoutParams(params); 
    rlv.setPadding(3, 3, 3, 3); 
    //rlv.setBackgroundResource(R.drawable.background); 


    TextView tv = new TextView(context); 
    params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
    params.addRule(RelativeLayout.ALIGN_PARENT_TOP); 
    params.addRule(RelativeLayout.ALIGN_PARENT_LEFT); 
    params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); 
    tv.setId(R.id.textView1); 
    tv.setLayoutParams(params); 
    tv.setGravity(Gravity.CENTER_VERTICAL); 
    tv.setSingleLine(true); 
    tv.setEllipsize(TruncateAt.END); 
    tv.setTextColor(Color.parseColor("#fff")); 
    tv.setTextSize(11); 
    tv.setText(title); 
    rlv.addView(tv); 


    tv = new TextView(context); 
    params = new RelativeLayout.LayoutParams(16, RelativeLayout.LayoutParams.WRAP_CONTENT); 
    params.addRule(RelativeLayout.BELOW, R.id.textView1); 
    params.addRule(RelativeLayout.ALIGN_PARENT_LEFT); 
    params.setMargins(0, 4, 0, 0); 
    tv.setId(R.id.time); 
    tv.setLayoutParams(params); 
    tv.setGravity(Gravity.CENTER_VERTICAL); 
    tv.setSingleLine(true); 
    tv.setEllipsize(null); 
    tv.setTextColor(Color.parseColor("#fff")); 
    tv.setTextSize(10); 
    tv.setText(time); 
    rlv.addView(tv);   

return rlv; 
} 
public static Bitmap loadBitmapFromView(RelativeLayout v) { 
    Bitmap b = Bitmap.createBitmap(582, 136, Bitmap.Config.ARGB_8888); 
    ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
     b.compress(Bitmap.CompressFormat.JPEG, 40, bytes); 

     System.out.println(b); 

     File f = new File(Environment.getExternalStorageDirectory() 
           + File.separator + "test1111.jpeg"); 
     FileOutputStream fo; 

      try { 
       fo = new FileOutputStream(f); 
       fo.write(bytes.toByteArray()); 


       fo.close(); 
      } catch (FileNotFoundException e) { 

       e.printStackTrace(); 
      } catch (IOException e) { 

       e.printStackTrace(); 
      } 
      System.out.println(f.exists()); 
    Canvas c = new Canvas(b); 
    v.draw(c); 
    return b; 
} 

喜在上面的代碼中的相對佈局,其中我試圖爲佈局輸出圖像,但它顯示空的黑色圖像沒有任何東西,但它創建一個文件。此外,當我點擊出現在佈局的角度看變化

回答

0

試試這個,它可以幫助你

public static Bitmap loadBitmapFromView(View v) { 
       Bitmap b = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Bitmap.Config.ARGB_8888);     
       Canvas c = new Canvas(b); 
       v.measure(v.getWidth(),v.getHeight()); 
       v.layout(0,0,v.getWidth(),v.getHeight()); 
       v.draw(c); 
       return b; 
     } 
+0

java.lang.IllegalArgumentException異常:寬度和高度必須是> 0的ITs顯示錯誤。 如何查看保存的圖像。 @Youddh – Manju

+2

你有沒有嘗試通過方法..中的TabHost佈局? – Youddh

+0

請檢查以上代碼,我如何使用。它在正常佈局中完成,因爲我首先想知道它的過程。所以我可以把它放在Tab Host中並嘗試。它在上面的代碼中也顯示了同樣的錯誤 java.lang.IllegalArgumentException:如果傳遞R.id.utils需要傳遞v(View),則width和height必須大於0 – Manju