2015-12-23 5 views
2

Я хочу сохранить макет рамки в галерею, сняв снимок экрана. Этот код работает над проектом (Name: Trial), но когда я пробовал один и тот же код в проекте (Name: Fg), он не работал. Фотография не сохраняется в Галерее.Как сделать снимок экрана макета в android

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_background); 




} 
public Bitmap click(View view) { 
    FrameLayout memecontentView =(FrameLayout) findViewById(R.id.my); 
    View view1 = memecontentView; 

    Bitmap b = Bitmap.createBitmap(view1.getWidth(), view1.getHeight(), Bitmap.Config.ARGB_8888); 
    Canvas canvas = new Canvas(b); 
    view1.draw(canvas); 


    String extr = Environment.getExternalStorageDirectory().toString(); 
    File myPath = new File(extr, getString(R.string.free_tiket)+".jpg"); 
    FileOutputStream fos = null; 

    try { 
     fos = new FileOutputStream(myPath); 
     b.compress(Bitmap.CompressFormat.JPEG, 100, fos); 
     fos.flush(); 
     fos.close(); 
     MediaStore.Images.Media.insertImage(getContentResolver(), b, 
       "Screen", "screen"); 

    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return b; 


} 

}

+0

это фото, созданное на всех? – petey

+0

http://stackoverflow.com/questions/2661536/how-to-programmatically-take-a-screenshot-in-android?rq=1 или http://stackoverflow.com/a/8722494/794088 – petey

+0

Спасибо, я понял. – Adistark

ответ

3

Вы получили

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

Заявленный в манифесте?

Кроме того, если вы хотите, чтобы весь вид попробовать это:

view1.setDrawingCacheEnabled(true); 
Bitmap bitmap = Bitmap.createBitmap(view1.getDrawingCache()); 

Ох, и это может сэкономить вам время:

private void openScreenshot(File imageFile) { 
    Intent intent = new Intent(); 
    intent.setAction(Intent.ACTION_VIEW); 
    Uri uri = Uri.fromFile(imageFile); 
    intent.setDataAndType(uri, "image/*"); 
    startActivity(intent); 
} 

Src: How to programmatically take a screenshot in Android?

Смежные вопросы