2

アンドロイドのレイアウトの正しい「ScreenShot」を取得する際に問題があります。レイアウトには、EditTextsとTextViewsが含まれています。Androidの特定のレイアウトのDrawingCacheを更新します。

次のコードではレイアウトの「ScreenShot」しか表示されませんが、EditTextまたはTextViewで文字列を変更した場合、「ScreenShot」は更新されません。

「スクリーンショット」を画面に表示されるように更新することができますか?ここで

private Bitmap getBitmap() { 
    Bitmap bitmap = null; 
    LayoutInflater factorys = LayoutInflater.from(this); 
    final View textEntryView = factorys.inflate(R.layout.activity_main, null); 
    View ll = textEntryView.findViewById(R.id.ll_layout); 
    ll.setDrawingCacheEnabled(true); 
    ll.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), 
      View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); 
    ll.layout(0, 0, ll.getMeasuredWidth(), ll.getMeasuredHeight()); 
    ll.buildDrawingCache(); 
    bitmap = Bitmap.createBitmap(ll.getDrawingCache()); 
    //bitmap=getCacheBitmapFromView(ll); 
    ll.setDrawingCacheEnabled(false); 
    return bitmap; 
} 

は、全体のコード解決

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Button btn = (Button) findViewById(R.id.button1); 
     btn.setOnClickListener(mycl); 
    } 

    OnClickListener mycl = new OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      // TODO Auto-generated method stub 
      Bitmap mybpic = null; 
      mybpic = getBitmap(); 
      ImageView imageView = (ImageView) findViewById(R.id.imageView1); 
      imageView.setImageBitmap(mybpic); 
     } 
    }; 

    private Bitmap getBitmap() { 
     Bitmap bitmap = null; 
     LayoutInflater factorys = LayoutInflater.from(this); 
     final View textEntryView = factorys.inflate(R.layout.activity_main, 
       null); 
     View ll = textEntryView.findViewById(R.id.ll_layout); 

     ll.destroyDrawingCache(); 
     ll.invalidate(); 
     ll.setDrawingCacheEnabled(true); 
     ll.measure(View.MeasureSpec.makeMeasureSpec(0, 
       View.MeasureSpec.UNSPECIFIED), View.MeasureSpec 
       .makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); 
     ll.layout(0, 0, ll.getMeasuredWidth(), ll.getMeasuredHeight()); 
     ll.buildDrawingCache(); 

     bitmap = Bitmap.createBitmap(ll.getDrawingCache()); 
     // bitmap=getCacheBitmapFromView(ll); 
     ll.setDrawingCacheEnabled(false); 
     return bitmap; 
    } 
} 
+0

ll.destroyDrawingCache();を追加してください。前にll.setDrawingCacheEnabled(true); –

+0

私は両方を試しました ll.destroyDrawingCache();ll.invalidate(); それは私のため @DivyeshPatel – Lee

+0

を解決のEditTextとTextViewの –

答えて

1

で、私は

LayoutInflater

を使うべきではありませんLayoutInflaterはちょうどそれに対応するアンドロイドにレイアウトXMLファイルをインスタンス化します。 view.Viewオブジェクト、現在のグラフィックは表示されません see here

だけで動作する

view.setDrawingCacheEnabled(true); 
view.buildDrawingCache(true); 
Bitmap drawingCache = view.getDrawingCache(); 

その後、ビュー・オブジェクト を取得するためにfindViewbyIdを使用!

関連する問題