2016-04-20 7 views
0

私はアクティビティでの風景の写真を撮り、この写真を共有したいと思います。 まず私は、このメソッドを使用します。アンドロイドでスクリーンショットのスクリーンショットを取る方法は?

private Bitmap getShareViewShot() { 
    this.setDrawingCacheEnabled(true); 
    this.buildDrawingCache(); 
    Bitmap bitmap = Bitmap.createBitmap(this.getDrawingCache(), 0, mSharePageRoot.getTop(), this.getWidth(), mSharePageRoot.getBottom()); 
    this.setDrawingCacheEnabled(false); 
    return bitmap; 
} 

をしかし、ビューがScrollViewにあり、ビューが画面外にスクロールした場合、このメソッドは、このビューの全体像を取得することはできません。

だから私は以下に、この方法を変更します。

private Bitmap getShareViewShot() { 
    Bitmap bitmap = Bitmap.createBitmap(mSharePageRoot.getWidth(), mSharePageRoot.getHeight(), 
      Bitmap.Config.ARGB_8888); 
    mSharePageRoot.layout(0, 0, mSharePageRoot.getLayoutParams().width, mSharePageRoot.getLayoutParams().height); 
    final Canvas canvas = new Canvas(bitmap); 
    mSharePageRoot.draw(canvas); 
    return bitmap;  
} 

しかし、別の質問が来る:このビューにはその背景を持っていないので、私が得る画像は黒backgroud.In私のコードを持って、活動ネットワークイメージを持っていますこれはバックグラウンドとして、このメソッドがアクティビティのバックグラウンドを取得できないことを意味します。

私の悪い英語を私に許してください。 他の方法はありますか?ありがとう。

+0

https://stackoverflow.com/questions/2661536/how-to-programmatically-take-a-screenshot-in -android?rq = 1 –

+0

可能な複製http://stackoverflow.com/questions/2661536/how-to-programmatically-take-a-screenshot-in-android –

答えて

0

あなたはこのように、キャンバスで背景を描くことができます:

private Bitmap getShareViewShot() { 
    Bitmap bitmap = Bitmap.createBitmap(mSharePageRoot.getWidth(), mSharePageRoot.getHeight(), 
     Bitmap.Config.ARGB_8888); 
    mSharePageRoot.layout(0, 0, mSharePageRoot.getLayoutParams().width, mSharePageRoot.getLayoutParams().height); 
    final Canvas canvas = new Canvas(bitmap); 
    // the bitmap will have a white background 
    canvas.drawColor(0xffffffff); 
    mSharePageRoot.draw(canvas); 
    return bitmap;  
} 
+0

バックグラウンドはネットワークイメージで、描画する場合はそれですロードされていない可能性があります。しかし、私はこの方法では、リスナのダウンロードを終了し、バックグラウンドイメージを使用して描画することができます。ありがとうございました。 –