2016-06-01 7 views
0

私は検索を通じて問題の解決策を見つけることができませんでした。電話スクリーンより長いビューをスクリーンショット

私は現在、Public-Transport用のアプリケーションをプログラミングしています。交通機関の検索結果は画面に表示され、共有可能でなければなりません。 私はこのビューのスクリーンショットをコード(単に結果、アンドロイドバーなどなし)で撮影すると、その瞬間に画面上に表示されているものだけを取ります。結果が画面上の場所を超えた場合、その結果は切り取られます。

ビュー全体を保存することはできますか?注:スクリーンショットは保存されません.Gmailなどに渡されるアクティビティにのみ与えられます。

それが助け場合は、ここで私はスクリーンショットのために使用されるコードは次のとおりです。

パブリッククラスのスクリーンショット{

public static Bitmap takeScreenshot(View view) { 
    view.setDrawingCacheEnabled(true); 
    Bitmap bitmap = view.getDrawingCache(); 
    return bitmap; 
} 

public static Uri saveBitmap(Bitmap bitmap) { 
    File imagePath = new File(Environment.getExternalStorageDirectory() + "/screenshot.jpg"); 
    FileOutputStream fos; 
    try { 
     fos = new FileOutputStream(imagePath); 
     bitmap.compress(CompressFormat.JPEG, 100, fos); 
     fos.flush(); 
     fos.close(); 
     return Uri.fromFile(imagePath); 
    } catch (FileNotFoundException e) { 
     Log.e("GREC", e.getMessage(), e); 
    } catch (IOException e) { 
     Log.e("GREC", e.getMessage(), e); 
    } 
    return null; 
} 

うまくいけば、誰かが私を助けることができます。

答えて

0

このコードは

public static Bitmap loadBitmapFromView(View v) { 
    Bitmap b; 
    if (v.getMeasuredHeight() <= 0) { 
     v.measure(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
     b = Bitmap.createBitmap(v.getMeasuredWidth(), v.getMeasuredHeight(), Bitmap.Config.RGB_565); 
     Canvas c = new Canvas(b); 

     v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight()); 
     v.setBackgroundColor(Color.WHITE); 
     v.draw(c); 
     return b; 
    } else { 
     b = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Bitmap.Config.RGB_565); 
     Canvas c = new Canvas(b); 
     v.layout(v.getLeft(), v.getTop(), v.getRight(), v.getBottom()); 
     v.setBackgroundColor(Color.WHITE); 
     v.draw(c); 
    } 

    return b; 
} 
助けることができます
関連する問題