最近作一個遊戲動畫中的拍照效果,一直覺得完成截屏功能,便可實現,可是在這期間,遇到了很多問題java
第一,截屏後保存在SDCard下面的.png圖片在默認的相冊中找不到;導入桌面後預覽才能顯示。android
第二,嘗試截屏功能用在遊戲中,截屏後導入桌面預覽圖片,發現該有的某一幀動畫背景不能顯現。ide
小弟,初學android,那位大牛有遊戲中拍照後分享圖片的經驗,望不吝賜教,感激……動畫
(**這裏貼出截屏功能的一個簡單Demo,部分也是在別人的基礎上改的**)this
public class MainActivity extends Activity { Button mButton; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mButton = (Button) findViewById(R.id.button); mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { GetandSaveCurrentImage(); } }); } protected void GetandSaveCurrentImage() { WindowManager widowManager = getWindowManager(); Display display = widowManager.getDefaultDisplay(); int w = display.getWidth(); int h = display.getHeight(); Bitmap Bmp = Bitmap.createBitmap(w,h,Config.ARGB_8888); View decorview = this.getWindow().getDecorView(); decorview.setDrawingCacheEnabled(true); Bmp = decorview.getDrawingCache(); try { String SavePath = getSDCardPath() + "/ScreenImage"; File path = new File(SavePath); String filepath = SavePath + "/Screen_1.jpg"; File file = new File(filepath); if(!path.exists()){ path.mkdirs(); } if(!file.exists()){ file.createNewFile(); } FileOutputStream fos = null; fos = new FileOutputStream(file); if(null != fos){ Bmp.compress(Bitmap.CompressFormat.PNG, 90, fos); fos.flush(); fos.close(); Log.i("LW", "截屏文件已保存至SDCard/ScreenImage/下"); } } catch (Exception e) { e.printStackTrace(); } } private String getSDCardPath() { File sdCardDir = null; boolean sdcardExit = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED); if(sdcardExit){ sdCardDir = Environment.getExternalStorageDirectory(); } return sdCardDir.toString(); } }