2016-06-01 12 views
0

Ich habe es nicht geschafft, eine Lösung für das Problem durch die Suche zu finden.Screenshot einer Ansicht, die länger ist als der Telefonbildschirm

Ich programmiere gerade eine App für den öffentlichen Verkehr. Die Ergebnisse einer Suche nach Ihrem Transport erscheinen auf einem Bildschirm und sollten geteilt werden können. Obwohl, wenn ich einen Screenshot dieser Ansicht durch Code mache, (nur die Ergebnisse, ohne die Android-Bar usw.) nimmt es nur, was auf dem Bildschirm in diesem Moment ist. Wenn die Ergebnisse die Stelle auf dem Bildschirm überschreiten, wird sie abgeschnitten.

Ist es möglich, die gesamte Ansicht zu speichern? Hinweis: Der Screenshot wird nicht gespeichert. Er wird nur an meine Aktivität gesendet, wo er an Google Mail oder was auch immer weitergegeben wird.

Wenn es hilft, hier ist der Code, den ich für den Screenshot verwendet:

public class Screenshot {

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; 
} 

Hoffentlich kann mir jemand helfen.

Antwort

0

können Sie diesen Code

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; 
} 
helfen