2016-12-08 14 views
1

Я пытаюсь сохранить graphView как изображение. Есть две вещи, которые происходят, которые не ожидаются. Прежде всего, файл не создается на SD-карте, а создается во внутренней памяти телефона. Во-вторых, созданный файл занимает 0B памяти. То есть, это пустой файл. При открытии он говорит: «невозможно создать эскиз»Проблема с сохранением GraphView как изображения

Я даю код ниже. Это было взято из примера с этого сайта.

public class MainActivity extends AppCompatActivity { 
LinearLayout ll; 
Bitmap bitmap; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_mainn); 
    final GraphView graphView = (GraphView) findViewById(R.id.graph); 
    LineGraphSeries<DataPoint> series = new LineGraphSeries<DataPoint>(new DataPoint[]{ 
      new DataPoint(0, 1), 
      new DataPoint(1, 5), 
      new DataPoint(2, 3), 
      new DataPoint(3, 2), 
      new DataPoint(4, 6) 
    }); 
    graphView.addSeries(series); 


    RelativeLayout rl = (RelativeLayout) findViewById(R.id.myLayout); 
    rl.setDrawingCacheEnabled(true); 
    bitmap = rl.getDrawingCache(); 
    rl.setDrawingCacheEnabled(false); 

    File file,f; 
    if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) 
    { 
     file =new File(android.os.Environment.getExternalStorageDirectory(),"GRAPHS_PLOTTED"); 
     if(!file.exists()) 
     { 
      file.mkdirs(); 

     } 
     try{ 
      f = new File(file.getAbsolutePath()+file.separator+ "name"+".jpg"); 
      FileOutputStream ostream = new FileOutputStream(f); 
      bitmap.compress(Bitmap.CompressFormat.PNG, 10, ostream); 
      ostream.close(); 

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

} 
} 

Может кто-нибудь предложить некоторые решения?

ответ

0

Попробуйте поместить эту строку в конец кода. rl.setDrawingCacheEnabled (false);

если вы используете Compress type PNG. Качество i.e 10 было проигнорировано.

+0

Я считаю, что проблема is-image формируется еще до построения графика. @ Nitin Jain ... Я попытался использовать JPEG вместо PNG .... Я попытался поставить «rl.setDrawingCacheEnabled (false)»; в конце, как вы сказали ... не повезло. – sp9

+0

ОК, если это так. Попробуйте новый обработчик(). PostDelayed (новый Runnable() { callMethodToSaveImage(); }, 5000); –

+0

@ Nitin Jain ... Еще не повезло – sp9