我正在开发一个将绘图缓存保存为image.png的应用程序。我想每2秒钟保存一次图像,然后将其发送到我的服务器。
public static void getImagen(){
mView.setDrawingCacheEnabled(true);
mView.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);
mBitmap = mView.getDrawingCache();
String path = Environment.getExternalStorageDirectory().getAbsolutePath();
File file = new File(path+"/signature.png");
FileOutputStream ostream;
try {
file.createNewFile();
ostream = new FileOutputStream(file);
mBitmap.compress(CompressFormat.PNG, 100, ostream);
ostream.flush();
ostream.close();
Log.w("LOGCAT", "La imagen se guardo con exito");
//Toast.makeText(getActivity(), "image saved", 5000).show();
} catch (Exception e) {
e.printStackTrace();
Log.w("LOGCAT", "No se pudo guardar la imagen...");
//Toast.makeText(getActivity(), "error", 5000).show();
}
// mView.setDrawingCacheEnabled(false);
}
然后我在这里调用该方法(Frament的onCreate):
t = new Thread(){
@Override
public void run() {
super.run();
while(flag){
Log.w("THREAD_LOG", "guardar");
try {
getImagen();
sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
Log.w("THREAD_LOG", "Error: "+e.toString());
}
}
}
};
t.start();
我在这一行mView.setDrawingCacheEnabled(true);
片段视图的代码是下一个:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
v = inflater.inflate(R.layout.fragment_b, container, false);
referencias();
return v;
}
答案 0 :(得分:0)
您可以获取装饰视图并保存,而不必使用自己的视图。另外,绘制缓存有时可能会不一致,您应该只使用绘图(因为它每2秒,性能差异可能非常小)。
您可以使用以下方式获取rootview:
ViewGroup mRootView = (ViewGroup) activity.getWindow().getDecorView();
然后你可以使用getDrawingCache,并在其上使用Bitmap.Compress。